Is sprint.youtube - YouTube Speed Up safe?
Sprint YouTube Speed Up routes YouTube and Google video traffic through proxy servers it fetches from speedyext.ru.
When connected, the extension retrieves a proxy IP, port, and credentials from speedyext.ru and installs a PAC script that tunnels youtube.com, googlevideo.com, and related domains through that proxy. The list of proxied domains is pulled from a remote config on s3.twcstorage.ru every three minutes and can be updated by the operator at any time. On first install, the extension also registers a browser fingerprint with speedyext.ru and receives a persistent tracking ID used in all subsequent API calls.
Who publishes ithyper.enclave - no other listings under this identity, 3 shared hostnames
hyper.enclave - no other listings under this identity, 3 shared hostnames
What this publisher told the store about itself, and the other listings that told it the same thing.
Shared hosts - 3 hostnames
Hostnames hardcoded in this extension that few other listings call. That can mean one operator behind both, and it can equally mean a small shared vendor, so it is context rather than a conclusion. Hosts that many listings call are left out: they are services, not connections.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Extension routes YouTube traffic through operator-controlled proxy server
On connect, the extension asks speedyext.ru (Russia) for a proxy address, then reconfigures your browser, unprompted, to route YouTube/Google Video traffic through it.
The operator sees every YouTube page, request, and cookie.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-200
- Source
- Dynamic sandbox
You install the extension and Chrome starts up.
The extension's allowConnectOnStartup setting is true by default, so no popup interaction is needed.
The extension automatically contacts speedyext.ru to get a proxy server address, then redirects all YouTube and Google Video traffic through that server.
This happens before you visit any website; the proxy is active from the moment the browser finishes loading.
HTTP 200, {"status":200,"message":"Клиент подключен","data":{"ip":"77.232.131.238","port":3128,"configuration":null}}
PAC script builder, deobfuscated (background/background.js:4182-4185)
static async buildPac(proxyServer) { const timestamp = Date.now(); const domains = (await ConfigService.getCurrentConfig()).domains; // domains list fetched from s3.twcstorage.ru — operator can add entries remotely return ` // ${timestamp} function FindProxyForURL(url, host) { const blockedDomains = ["${domains.join('",')}"]; const isBlockedDomain = blockedDomains.some(domain => dnsDomainIs(host, domain) ); if (isBlockedDomain) { return "PROXY ${proxyServer.ip}:${proxyServer.port}"; } return "DIRECT"; } `;}- YouTube URLs visitedhttps://www.youtube.com/watch?v=dQw4w9WgXcQ
Every video page, search query, and playlist you access on YouTube passes through the proxy server.
- Authentication cookiesVISITOR_INFO1_LIVE=abc123; SID=xyz...
YouTube login cookies travel through the proxy. Unencrypted traffic exposes credentials in transit; HTTPS still exposes headers and SNI.
- Video request metadatahttps://r3---sn-a5mekn7s.googlevideo.com/videoplayback?id=...
Requests to Google Video CDN (googlevideo.com) reveal which videos you are streaming.
- Proxy server identity77.232.131.238:3128
The proxy server address is assigned by the operator and can be changed at any time.
- speedyext.ru
Operator API, provides proxy server credentials. Russian-registered domain. Receives instance_id on every connect call.
- s3.twcstorage.ru
Russian cloud storage, hosts the config.json that controls which domains are proxied and which API server to use. Polled every 3 minutes.
- 77.232.131.238
Operator proxy server (observed live at port 3128). All YouTube and Google Video traffic is routed through this IP.
HTTPS traffic is encrypted end-to-end between your browser and YouTube's servers. The proxy operator sees the destination hostname (via SNI) and the volume of traffic, but not the decrypted video content or HTTPS request bodies. The risk is highest for any residual HTTP requests, cookie headers on unencrypted channels, and the browsing pattern itself (which videos, when, how often).
Extension polls remote config every 3 minutes to update proxy targets
Every three minutes the extension downloads config from a Russian bucket setting which sites route through the proxy and which server it calls.
Both can change server-side, letting the operator redirect traffic unannounced.
- Severity
- Medium unwanted
- Type
- Unexpected
- CWE
- CWE-829
- Source
- Dynamic sandbox
Every three minutes, the extension's service worker checks whether the cached configuration has expired.
The check runs any time getCurrentConfig() is called, on startup, on proxy connect, and on every PAC script rebuild.
Downloads new config from a Russian storage bucket and applies it immediately, potentially changing which sites are proxied and which server gets the traffic.
No user notification or consent is required for these changes to take effect.
HTTP 200, {"apiDomain":"https://speedyext.ru","landingDomain":"https://sprint-ext.ru","domains":["youtube.com",".youtube.com","ytimg.com","googlevideo.com","ggpht.com","youtube-nocookie.com","youtu.be","youtubekids.com"]}
Config fetch and caching logic, deobfuscated (background/background.js:10443-10471)
const CACHE_MINUTES = 3;class ConfigService { static async getCurrentConfig() { const cached = await Config.load(); if (cached.storedAt) { const storedTime = dayjs(cached.storedAt); if (dayjs().diff(storedTime, 'minutes') < CACHE_MINUTES) { return cached; // use cache if under 3 minutes old } } try { const fresh = await fetchRemoteConfig(); // GET s3.twcstorage.ru/...config.json await fresh.save(); return fresh; } catch { return cached; // fall back to stale cache on error } }}- API server addresshttps://speedyext.ru
The server receiving extension registration, proxy credentials, and push tokens. The operator can redirect this to any domain.
- Landing/uninstall domainhttps://sprint-ext.ru
The domain used to build the uninstall notification URL, which includes your persistent device ID.
- Proxied domain listyoutube.com, .youtube.com, ytimg.com, googlevideo.com, ggpht.com, youtube-nocookie.com, youtu.be, youtubekids.com
The domains whose traffic routes through the operator's proxy. The operator can expand this list anytime.
- s3.twcstorage.ru
Russian cloud object storage. Hosts the config.json file controlling proxy targets and API server. No authentication required to fetch; the URL is publicly readable.
- speedyext.ru
Current apiDomain from config, receives all extension API traffic. Operator can replace this with any domain via a config update.
Extension registers browser for operator push notifications via Firebase
Unprompted, the extension registers your browser with the operator's Firebase project, then sends the push token to speedyext.ru, an open channel for push notifications anytime, refreshed several times per session.
- Severity
- Medium unwanted
- Type
- Unexpected
- CWE
- CWE-200
- Source
- Dynamic sandbox
You install the extension and Chrome starts.
The allowNotifications setting defaults to true in chrome.storage without any notification permission prompt to the user.
Registers your browser with the operator's Firebase project and sends the push token to speedyext.ru, letting the operator push notifications anytime.
This fires automatically on startup and repeats multiple times per session to keep the token current.
HTTP 200
{ "instance_id": "a1f23d5f-e145-4ff4-a9e4-c95872717823", "token": "feQ81m9a4NT5UWLwG5EMmj:APA91bGS1CatZZvkVx5psx4x922tH75wq0TlE1YKu_jWPdOb1YK8thOvq0hzd8hdqexKbwo0L7wExlYSCwlRgfWawG76JT5yTndOy2K0MmTbo1spoB"}FCM token registration, deobfuscated (background/background.js:11033-11041)
async function sendFcmToken(instanceId, token) { try { // Posts FCM token to operator server so they can push to this device await apiClient.post('/api/v2/notifications/set-fcm-token', { instance_id: instanceId, token: token }); } catch (err) { await errorLogger.addException('Failed to set notification token.', err); }}- Device identifiera1f23d5f-e145-4ff4-a9e4-c95872717823
Your persistent installation ID links this push channel to your specific device record on the operator's server.
- FCM push tokenfeQ81m9a4NT5UWLwG5EMmj:APA91bGS1CatZZvkVx5psx4x922tH75wq0TlE1YKu_jWPdOb1YK8thOvq0hzd8hdqexKbwo0L7wExlYSCwlRgfWawG76JT5yTndOy2K0MmTbo1spoB
A long-lived credential the operator uses to push notifications, valid until rotated or the extension is removed.
- firebaseinstallations.googleapis.com
Google Firebase Installations API, issues the Firebase Installation ID used as the FCM messaging sender identity for project sprint-72dda.
- fcmregistrations.googleapis.com
Google Firebase Cloud Messaging registration endpoint, issues the FCM push token that the extension sends to the operator.
- speedyext.ru
Operator API, receives the FCM token paired with the device instance_id, enabling the operator to send push notifications to any registered browser.
+1 more finding not shown
What it can do
Permissions this extension asks for, as declared in version 2.0.7. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Read and change your data on youtube.com
https://*.youtube.com/*
Read and change your data on ytimg.com
https://*.ytimg.com/*
Read and change your data on googlevideo.com
https://*.googlevideo.com/*
Read and change your data on ggpht.com
https://*.ggpht.com/*
Read and change your data on youtube-nocookie.com
https://*.youtube-nocookie.com/*
Read and change your data on youtubekids.com
https://*.youtubekids.com/*
Read and change your data on sprint-ext.ru
https://*.sprint-ext.ru/*
Read and change your data on speedyext.ru
https://*.speedyext.ru/*
Read and change your data on youtu.be
https://*.youtu.be/*
Read and change your data on s3.twcstorage.ru
https://s3.twcstorage.ru/*
Store data in your browser
storage
Route all of your browsing through a server of its choosing
proxy
See the address and title of every tab you have open
tabs
See every page you navigate to, as you navigate to it
webNavigation
Show you desktop notifications
notifications
Where it sends data
Destinations our analysis observed Sprint.YouTube contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- speedyext.ru
Sprint.YouTube sends data to speedyext.ru. One other extension we have analysed sends data here.
- s3.twcstorage.ru
Sprint.YouTube sends data to s3.twcstorage.ru. No other extension we have analysed sends data here.
- Firebase (sprint-72dda)
Sprint.YouTube sends data to Firebase (sprint-72dda). Named as a recipient in this extension's own analysis.