Jak oznaczać treści AI, by nie dostać kary? Zapisz się na bezpłatne szkolenie o AI Act
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
17 sierpnia startuję Dni Otwarte Sekurak.Academy. Dołącz bezpłatnie 🙂
Jak oznaczać treści AI, by nie dostać kary? Zapisz się na bezpłatne szkolenie o AI Act
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
17 sierpnia startuję Dni Otwarte Sekurak.Academy. Dołącz bezpłatnie 🙂
Badacze z Socket zidentyfikowali kampanię ponad 700 darmowych wtyczek do przeglądarki Chrome. Były to narzędzia VPN i proxy opublikowane przy użyciu co najmniej 40 kont deweloperskich. Część z nich (274) podszywa się pod znane marki VPN. Analiza kodu 525 z nich wykazała, że prawie wszystkie kierują ruch z przeglądarki użytkownika przez tę samą infrastrukturę. Wtyczki dystrybuowane w ramach kampanii zgromadziły ponad 75 tys. instalacji.
Rozszerzenia są skierowane do rosyjskojęzycznych użytkowników, którzy chcą uzyskać dostęp do usług zablokowanych w Rosji (np. Instagram, ChatGPT i YouTube). Część z nich ma nazwy lub opisy zapisane cyrylicą, występują w nich także nazwy zablokowanych usług w listingu.
Opisy obiecują ukrycie adresu IP i ochronę ruchu. Jeden z nich zawarty w pliku manifest wtyczki hfanmgjobgojpieocfemecgcgglmgpff zawiera:
{ |
Listing 1 – fragment manifestu jednej z wtyczek, źródło: socket.dev
Można to przetłumaczyć jako “Ukrywa IP i chroni dane, odpowiednie dla dowolnych urządzeń i stron. Polecane przez Jurija Duda”. Jurij Dud jest rosyjskim dziennikarzem, jednak badacze nie znaleźli żadnego dowodu na promowanie przez niego rozpowszechnionych wtyczek.
Część rozszerzeń podszywa się pod 66 prawdziwych marek – w tym Proton VPN, NordVPN, Surfshark, AdGuard VPN, Browsec, ExpressVPN, CyberGhost, Windscribe, TunnelBear i 1.1.1.1 (Cloudflare).

Rozszerzenia, które konfigurują proxy (520 z 522 poddanych analizie) wykonują tę samą operację. Przykładowy fragment pliku worker.js z wtyczki aabaifmlfkdolhdbbhjblkeekaijfdfh:
const config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "socks5", host: node.host, port: const config = { |
Listing 2 – fragment kodu odpowiedzialnego za konfigurację proxy, źródło: socket.dev
Zmienna BYPASS_LIST zawiera wyłącznie adresy loopback – pokazane w komentarzu. Ruch do każdego innego adresu, w dowolnej karcie jest kierowany przez węzeł SOCKS5 kontrolowany przez dostawcę wtyczki (po uprzednim kliknięciu przez użytkownika przycisku Connect).
302 rozszerzenia mają zapisane na stałe adresy IP proxy (jedna współdzielona pula 15 adresów), a 104 uzyskują adres IP hosta za pośrednictwem DNS-over-HTTPS i przekazują go Chrome.
Z technicznego punktu widzenia samo to nie jest problemem. Wtyczki do przeglądarek reklamowane jako VPN zazwyczaj korzystają właśnie z proxy API. Konfiguracja SOCKS5 omijająca wyłącznie loopback jest standardowym sposobem jego implementacji.
Problemem, który odróżnia tę kampanię od zwykłych narzędzi VPN jest branding. Wiarygodny dostawca działa pod własną nazwą, a często znakiem towarowym. Z kolei rozszerzenia w ramach kampanii podszywają się pod 66 istniejących marek – w tym AmneziaVPN i AntiZapret, używane przez rosyjskich użytkowników do omijania blokad.
Każde z rozszerzeń reklamuje lokalizacje (serwery) premium. Badacze sprawdzili jednak rekordy DNS ich domen, ustalając że subdomeny darmowych serwerów działają, a premium – nie. Dla jednej z domen – stealthpath[.]space:
Wszystkie 200 subdomen jp, sg, ca, au i tr w ramach 40 testowanych domen nie zwróciło żadnego rekordu A. W pozyskanych listach serwerów są to dokładnie wpisy oznaczone premium: true.
Ponadto, 66 rozszerzeń pobiera konfigurację z domen ich dostawcy. Wtyczki odczytują nagłówek Location i podążają do wskazanego przez twórcę kampanii adresu, z którego pobierane są dane. Co istotne, mechanizm ten jest niezależny od aktualizacji w Chrome Web Store, dzięki czemu atakujący może zmieniać konfigurację bez wydawania nowych wersji.
fetch(LANDING_URL, { method: "HEAD", redirect: "manual", cache: "no-store" }) .then(function (r) { var target = Lfetch(LANDING_URL, { method: "HEAD", redirect: "manual", cache: "no-store" }) |
Listing 3 – fragment pliku core.js wtyczki abjgfdfbmmijjdfbohbhgdnjeipjbplj
Rozszerzenie o identyfikatorze oaidiemgjmaabehcfjfbkeifdpeniemm przypadkowo dostarczyło w opublikowanym pakiecie archiwum vpn-bez-limita.zip. Jest to jego poprzedni build (v1.0.0). Porównanie go z aktywnym v1.0.1 pokazuje, że cała warstwa zdalnej konfiguracji została dodana po zatwierdzeniu wtyczki w Chrome Web Store.
W ocenie badaczy wszystkie rozszerzenia stanowią jedną kampanię.
Część z nich sama na to wskazywała, zawierając w różnych popupach nazwę własną dostawcy – Myxa VPN. Ponadto, 43 pakiety zawierały plik build-info.json ujawniający ścieżkę builda Windows atakującego: C:\Users\ollob\OneDrive\Документы\1.myxa-work\08.06.26<domain><product><product>-release.zip. Jedno konto Windows, jeden katalog projektu i wiele rozszerzeń.
Na 49 domenach atakującego stosowany jest skrypt śledzący Yandex Metrica, w ramach którego użyto 8 identyfikatorów współdzielonych między domenami. 21 spośród tych domen zostało zarejestrowanych w ciągu 10 sekund 20 maja 2026 r., a kolejne 14 – w ciągu 24 sekund 5 kwietnia 2026 r.
Ponad 100 z nich korzysta z tych samych serwerów nazw (NS) – ns1[.]reg[.]ru i ns2[.]reg[.]ru. Prawie połowa z nich wskazuje na ten sam adres IP – 212[.]192[.]14[.]75 – na którym działa nginx 1.24.0 na Ubuntu. Reverse-IP lookup dla tego hosta zwrócił wyłącznie domeny kampanii.
Google podjęło działania wobec tej kampanii. 221 z 737 rozszerzeń zostało usuniętych z Chrome Web Store. Po pełną listę wtyczek odsyłamy do Socket.
Użytkownikom polecamy minimalizowanie liczby zainstalowanych rozszerzeń. Warto skonfigurować osobny profil (bez wtyczek) do wykonywania wrażliwych operacji (np. bankowość elektroniczna) lub wykonywać je w trybie incognito, gdzie wtyczki nie mają domyślnie dostępu (i nie należy im go dawać).
Źródło: socket.dev
~Tymoteusz Jóźwiak