Archiwa: AI - Strona 44 z 55 - Security Bez Tabu

Weaponized Invite: jak zaproszenie w Kalendarzu Google umożliwiało kradzież danych przez Google Gemini

Wprowadzenie do problemu / definicja luki

Badacze Miggo opisali podatność (a właściwie cały łańcuch nadużyć) w ekosystemie Google, w którym Google Gemini zintegrowany z Kalendarzem Google mógł zostać „nakłoniony językiem” do ujawnienia prywatnych informacji z kalendarza. Atak polegał na pośrednim prompt injection: złośliwa instrukcja była ukryta w treści zaproszenia (opisie wydarzenia), a następnie wykonywana przez model w momencie, gdy użytkownik zadawał niewinne pytanie o plan dnia.

Kluczowe w tej historii jest to, że nie mówimy o klasycznym bug-u typu RCE, tylko o obejściu kontroli autoryzacji/ochron prywatności przez semantykę (intencję) w naturalnym języku, wykorzystujące uprawnienia narzędzi (tooling) dostępnych Gemini w kontekście Kalendarza.


W skrócie

  • Atakujący wysyłał ofierze zaproszenie kalendarzowe z ukrytą instrukcją prompt injection w polu opisu wydarzenia.
  • Gdy ofiara pytała Gemini np. „czy mam spotkania we wtorek?”, Gemini parsował dane wydarzeń (w tym złośliwy opis) i tworzył nowe wydarzenie zawierające podsumowanie prywatnych spotkań w opisie.
  • W typowych konfiguracjach firmowych takie nowo utworzone wydarzenie mogło być widoczne dla atakującego, co zamieniało kalendarz w kanał eksfiltracji danych.
  • Miggo zgłosiło problem odpowiedzialnie; Google potwierdziło i złagodziło podatność.

Kontekst / historia / powiązania

Google (podobnie jak inni dostawcy GenAI) jawnie przyznaje, że prompt injection może pochodzić nie tylko z bezpośredniej rozmowy z modelem, ale też z treści współdzielonych w narzędziach produktywności (mail, pliki, kalendarz), które użytkownik później „przypadkiem” wciągnie do kontekstu zapytania.

Opisywany przypadek jest ważny, bo pokazuje przesunięcie wektora ataku: z e-maili i dokumentów na zaproszenia kalendarzowe, które w wielu organizacjach są traktowane jako „mniej ryzykowne” i rzadziej podlegają rygorystycznej filtracji treści.


Analiza techniczna / szczegóły luki

1) Warunek brzegowy: integracja Gemini ↔ Google Calendar

Gemini w roli asystenta kalendarza analizuje pełny kontekst wydarzeń (tytuły, czas, uczestników, opis), aby odpowiadać na pytania o harmonogram. To oznacza, że złośliwy tekst w opisie trafia do modelu jako kontekst, mimo że użytkownik nie „wkleił” go ręcznie do czatu.

2) Payload jako „niewinna” instrukcja

Miggo podkreśla różnicę między:

  • syntaktycznie niewinnym tekstem (brak podejrzanych wzorców), a
  • semantycznie złośliwym efektem, gdy model wykona polecenie mając dostęp do narzędzi (np. tworzenia wydarzeń).

W praktyce payload instruował model, aby:

  1. zebrał i streścił spotkania ofiary z danego dnia (włącznie z prywatnymi),
  2. użył funkcji tworzenia wydarzenia,
  3. wkleił streszczenie do opisu nowego wydarzenia,
  4. zwrócił ofierze „uspokajającą” odpowiedź, maskując działanie.

3) Trigger: zwykłe pytanie użytkownika

Ładunek pozostawał uśpiony do momentu, aż użytkownik zadał Gemini rutynowe pytanie o plan („czy mam konflikty we wtorek?”, „co mam jutro?”). Wtedy model pobierał zdarzenia, trafiał na payload i wykonywał instrukcję.

4) Eksfiltracja przez „legalny” artefakt: nowe wydarzenie

Najciekawszy element to kanał wycieku: nie „wysyłka na zewnętrzny serwer”, tylko zapis danych w opisie nowego eventu. Jeśli taki event był widoczny dla atakującego (np. przez udostępnienie lub ustawienia organizacyjne), następował wyciek bez dodatkowych kliknięć ofiary.


Praktyczne konsekwencje / ryzyko

Dane z kalendarza często zawierają wrażliwe metadane nawet wtedy, gdy „treść spotkania” nie jest jawnie poufna:

  • nazwy projektów, klientów, inicjatyw,
  • listy uczestników (mapowanie relacji, struktury zespołów),
  • lokalizacje, linki do spotkań,
  • opisy, notatki, czasem numery telefonów lub identyfikatory konferencji.

W środowisku firmowym taki wyciek może być paliwem do:

  • spear-phishingu i BEC (bardziej wiarygodne preteksty),
  • rekonesansu (kto z kim i kiedy),
  • planowania ataków w czasie (np. w trakcie zarządu/spotkań kryzysowych).

Rekomendacje operacyjne / co zrobić teraz

Dla zespołów bezpieczeństwa (IT/SecOps)

  1. Ogranicz automatyczne zaufanie do zaproszeń z zewnątrz
    Przejrzyj polityki przyjmowania zaproszeń i domyślne ustawienia widoczności wydarzeń (zwłaszcza dla eventów tworzonych automatycznie).
  2. Segmentuj i minimalizuj uprawnienia “AI-asystenta”
    Tam, gdzie to możliwe, ogranicz akcje narzędziowe (np. tworzenie/edycja eventów) lub włącz mechanizmy wymagające potwierdzenia. (To rekomendacja architektoniczna — konkrety zależą od planu Workspace i konfiguracji).
  3. Monitoring i detekcja anomalii w kalendarzu
    Szukaj: nagłego tworzenia eventów o schematycznych tytułach, masowego dopisywania opisów z danymi wielu spotkań, nietypowych zależności między zaproszeniami a nowymi wydarzeniami.
  4. Edukacja użytkowników o prompt injection
    Google samo wskazuje, że prompt injection może pochodzić z treści współdzielonych; ucz użytkowników, by traktowali AI-skróty/odpowiedzi jako potencjalnie podatne na manipulację.

Dla użytkowników i administratorów Workspace

  • Uważaj na niespodziewane zaproszenia oraz eventy, które wyglądają „normalnie”, ale mają długie/niezrozumiałe opisy.
  • Jeśli korzystasz z Gemini do pytań o plan dnia, zwróć uwagę na sytuacje, gdy w kalendarzu pojawiają się nowe wydarzenia, których nie tworzyłeś/aś.
  • Śledź zmiany w mechanizmach ochrony: Google opisuje, że Gemini może filtrować/blokować odpowiedzi przy wykryciu prompt injection, ale to nie jest gwarancja i wymaga ciągłego dostrajania.

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

  • Klasyczne prompt injection często kończy się „tylko” zmanipulowaną odpowiedzią. Tutaj stawką było nadużycie integracji z narzędziem (Kalendarz) i wykonanie akcji w tle (utworzenie wydarzenia), co zbliża problem do kategorii agentic/tool misuse.
  • Wyróżnikiem jest też kanał eksfiltracji: wewnętrzny artefakt (event) zamiast zewnętrznego exfil endpointu — trudniej to zauważyć w klasycznych kontrolach sieciowych.

Podsumowanie / kluczowe wnioski

  • „Broń” w tym ataku to język: payload nie musiał wyglądać podejrzanie, bo jego szkodliwość ujawniała się dopiero w kontekście uprawnień i intencji.
  • Integracje GenAI z aplikacjami produktywności tworzą nową klasę ryzyk: autoryzacja i prywatność mogą zostać ominięte semantycznie, bez klasycznego exploita w kodzie.
  • Google i Miggo informują, że problem został złagodzony po zgłoszeniu, ale lekcja pozostaje aktualna: trzeba traktować dane z kalendarza, maila i dokumentów jako potencjalny nośnik prompt injection.

Źródła / bibliografia

  1. Miggo – „Weaponizing Calendar Invites: A Semantic Attack on Google Gemini” (miggo.io)
  2. SecurityWeek – „Weaponized Invite Enabled Calendar Data Theft via Google Gemini” (SecurityWeek)
  3. The Hacker News – „Google Gemini Prompt Injection Flaw Exposed Private Calendar Data via Malicious Invites” (The Hacker News)
  4. Malwarebytes – „Malicious Google Calendar invites could expose private data” (Malwarebytes)
  5. Google Calendar Help – „How Google Workspace with Gemini helps protect users from malicious content and prompt injection” (Google Help)

Krytyczne luki w serwerach MCP: SSRF, RCE i ryzyko przejęć chmury w ekosystemie agentów AI (Microsoft, Anthropic)

Wprowadzenie do problemu / definicja luki

Model Context Protocol (MCP) to standard łączący modele językowe i agentów AI z narzędziami (np. repozytoriami Git, systemem plików, usługami chmurowymi czy konwerterami dokumentów). W praktyce MCP „wystawia” funkcje (tools), które agent może wywoływać w odpowiedzi na polecenia użytkownika… albo na polecenia przemycone w danych wejściowych (np. w README, stronie WWW, pliku).

Nowy problem nie polega wyłącznie na tym, że „gdzieś jest błąd”. Chodzi o to, że serwery MCP często działają jako uprzywilejowane pośredniki: mają dostęp do sieci, plików, tokenów, repozytoriów, a czasem wręcz do zasobów chmurowych. Jeśli da się nimi sterować (bez ograniczeń) albo jeśli agent da się nakłonić do uruchomienia sekwencji narzędzi — powstaje prosta ścieżka do SSRF, kradzieży sekretów i RCE.


W skrócie

  • Badacze opisali poważne ryzyka w popularnych serwerach MCP: SSRF w Microsoft MarkItDown MCP oraz łańcuch prowadzący do RCE w oficjalnych serwerach MCP Anthropic (Git + Filesystem).
  • W przypadku MarkItDown problemem jest możliwość pobierania dowolnych URI bez ograniczeń, co otwiera drogę do SSRF i np. odczytu metadanych instancji w chmurze.
  • W przypadku Anthropic zidentyfikowano trzy luki (CVE-2025-68145 / -68143 / -68144), które można łączyć z innymi narzędziami MCP, by doprowadzić do wykonania kodu.
  • Kluczowa lekcja: kompozycja narzędzi (tool chaining) + pośrednictwo agentów = ryzyko wykraczające poza „pojedynczą podatność” — to problem architektoniczny.

Kontekst / historia / powiązania

W artykule Dark Reading (20 stycznia 2026) podkreślono, że MCP powstał jako otwarty standard, a kwestie bezpieczeństwa w dużej mierze pozostawiono implementatorom. Efekt: część serwerów MCP „dowiozła funkcjonalność”, ale bez twardych barier bezpieczeństwa.

Microsoft równolegle publikuje materiały o zabezpieczaniu serwerów MCP (np. autentykacja/autoryzacja JWT, dobre praktyki dla wdrożeń oraz zarządzanie dostępem). To ważny sygnał: dostawcy widzą, że MCP szybko staje się infrastrukturą krytyczną, a nie tylko „wtyczką do LLM”.


Analiza techniczna / szczegóły luki

1) Microsoft MarkItDown MCP: SSRF przez „nieograniczone URI”

Z opisu wynika, że MarkItDown MCP przyjmuje od użytkownika/klienta URI wskazujące źródło pliku do konwersji i pobiera je bez mechanizmów ograniczających (brak sensownego allowlist/denylist, brak twardej walidacji docelowych adresów). To klasyczny wzorzec SSRF, tylko osadzony w nowym workflow: „agent → narzędzie MCP → sieć”.

Najbardziej niebezpieczny wariant to środowisko chmurowe: gdy serwer działa np. na instancji AWS EC2, możliwe jest odpytywanie usługi metadanych instancji (IMDS) i pozyskanie tymczasowych poświadczeń (access key/secret/session token) przypiętych do roli IAM. Dark Reading wskazuje też na różnicę odporności IMDSv2 vs IMDSv1.

Wniosek techniczny: w świecie MCP SSRF nie jest „tylko SSRF-em” — to często most do przejęcia chmury, bo serwer MCP bywa uruchamiany blisko sekretów, tokenów i metadanych infrastruktury.

2) Anthropic Git MCP + Filesystem MCP: łańcuch do RCE

Opisane błędy w oficjalnym Git MCP (mcp-server-git) obejmują m.in.:

  • obejście walidacji ścieżek (CVE-2025-68145),
  • możliwość inicjalizacji repozytorium w dowolnej lokalizacji (CVE-2025-68143),
  • wstrzyknięcie argumentów/niebezpieczne obchodzenie się z parametrami w kontekście git_diff (CVE-2025-68144).

Kluczowe jest jednak to, jak dochodzi do RCE: podatności stają się groźne, gdy agent potrafi wykonać sekwencję działań przez różne narzędzia MCP (np. Git + Filesystem). Dark Reading opisuje scenariusz, w którym atakujący przemyca instrukcje poprzez indirect prompt injection (np. „złośliwe README”), a następnie agent wykonuje działania prowadzące do przygotowania repozytorium i uruchomienia poleceń (np. przez mechanizmy git związane z filtrami/atrybutami).

Wniosek techniczny: tu nie chodzi o „magiczne RCE w LLM”, tylko o bardzo klasyczny łańcuch: błąd kontroli ścieżek + możliwość zapisu plików + uruchomienie procesu (git) z podatnymi parametrami — tyle że zautomatyzowany przez agenta.


Praktyczne konsekwencje / ryzyko

Najbardziej realistyczne scenariusze nadużyć w organizacjach:

  • Kradzież sekretów i eskalacja w chmurze: SSRF do IMDS / usług metadanych, odczyt tokenów, a potem przejęcie zasobów (storage, bazy, pipeline CI/CD).
  • RCE na stacjach dev / runnerach CI: jeśli MCP serwery (Git/Filesystem) działają lokalnie lub w środowiskach build, skutkiem może być przejęcie repozytoriów, podmiana artefaktów, wstrzyknięcia do łańcucha dostaw.
  • „Confused deputy” w architekturach pośredniczących: serwer MCP jako proxy do innych API może zostać użyty do uzyskania niezamierzonego dostępu, jeśli źle zaprojektowano autoryzację i zgody.
  • Ataki przez dane, nie przez użytkownika: indirect prompt injection sprawia, że bodźcem jest treść (plik/WWW), a nie „zły użytkownik w czacie”. To zmienia monitoring i model zagrożeń.

Rekomendacje operacyjne / co zrobić teraz

Twarde ograniczenia dla SSRF (priorytet #1)

  • Wprowadź allowlist schematów i hostów dla narzędzi pobierających zasoby (np. tylko https do zatwierdzonych domen/bucketów).
  • Zablokuj dostęp sieciowy z procesu MCP do adresów link-local i usług metadanych (np. 169.254.169.254), a także do prywatnych zakresów, jeśli nie są potrzebne (egress filtering).
  • W chmurze wymuś IMDSv2 tam, gdzie to możliwe (zmniejsza podatność na część klas SSRF).

Minimalizacja uprawnień i „blast radius”

  • Uruchamiaj serwery MCP w izolacji (kontener, sandbox, osobna tożsamość) i dawaj im tylko minimalne uprawnienia (RBAC/least privilege).
  • Rozdziel narzędzia „read” i „write”; operacje zapisu/niszczenia wymagaj jako jawnie zatwierdzane (human-in-the-loop dla krytycznych akcji).

Uwierzytelnianie i autoryzacja (bez tego MCP to „otwarta brama”)

  • Zaimplementuj authn/authz dla MCP (np. JWT/OAuth) oraz kontroluj, kto może wywoływać które tool’e. Microsoft pokazuje podejście z JWT i praktycznymi wzorcami wdrożeniowymi dla serwerów MCP.
  • Jeśli wystawiasz MCP przez warstwę zarządzania API, rozważ centralne egzekwowanie polityk dostępowych (klucze/subskrypcje, tokeny, walidacja) i spójny audyt wywołań.

Ochrona przed indirect prompt injection i „tool chaining”

  • Traktuj treści zewnętrzne (WWW/pliki) jako dane nieufne i projektuj agenta tak, by oddzielać „instrukcje” od „kontekstu”.
  • Dodaj reguły: agent nie może wykonywać operacji wysokiego ryzyka na podstawie niezweryfikowanej treści (np. z README). W praktyce: polityki wykonywania narzędzi, klasyfikacja ryzyka tool’i, oraz walidacje parametrów po stronie serwera MCP.

Różnice / porównania z innymi przypadkami

To nie jest „kolejna podatność w web appce”.
W klasycznym SSRF atakujący zwykle bije w endpoint aplikacji. W MCP często bije w narzędzie uruchamiane przez agenta, które działa z innym poziomem zaufania i uprawnień.

To nie jest też „tylko prompt injection”.
Prompt injection jest wyzwalaczem, ale realne szkody wynikają z tego, że agent ma dostęp do narzędzi o mocy porównywalnej z kontem uprzywilejowanym (chmura, system plików, repo). To przesuwa ciężar obrony na: tożsamość, granice sieciowe, walidację parametrów i polityki wykonywania narzędzi.


Podsumowanie / kluczowe wnioski

  • MCP przyspiesza budowę agentów AI, ale jednocześnie tworzy nową, bardzo „twardą” powierzchnię ataku: SSRF → sekrety → przejęcie chmury oraz kompozycja narzędzi → RCE.
  • Największe ryzyko wynika z braku ograniczeń na wejściu (URI/ścieżki/argumenty) i z faktu, że serwer MCP działa jako uprzywilejowany wykonawca.
  • Skuteczna obrona to kombinacja: walidacji + izolacji + least privilege + kontroli tożsamości + polityk wykonywania narzędzi (a nie tylko „lepszego promptu”).

Źródła / bibliografia

  1. Dark Reading — „Microsoft & Anthropic MCP Servers At Risk of RCE, Cloud Takeovers” (20.01.2026). (Dark Reading)
  2. The Register — opis podatności i CVE w Anthropic Git MCP (20.01.2026). (The Register)
  3. Microsoft Learn — „Foundry MCP Server best practices and security guidance” (aktualizacje i governance). (Microsoft Learn)
  4. Microsoft TechCommunity — „It’s time to secure your MCP servers. Here’s how.” (JWT, podejście wdrożeniowe). (TECHCOMMUNITY.MICROSOFT.COM)
  5. Model Context Protocol — „Security Best Practices” (ryzyka i mitigacje specyficzne dla MCP, m.in. confused deputy). (Model Context Protocol)

Korea Północna i „Contagious Interview”: jak złośliwe projekty VS Code uruchamiają malware przez tasks.json

Wprowadzenie do problemu / definicja luki

Kampania powiązana z aktorami DPRK (Korea Północna), znana jako Contagious Interview, ewoluuje w stronę ataków „zero-click-ish” z perspektywy programisty: ofiara nie musi świadomie uruchamiać malware, wystarczy że sklonuje repo i otworzy je w Visual Studio Code. Najnowszy wariant wykorzystuje mechanizm VS Code Tasks (.vscode/tasks.json) do automatycznego wykonania poleceń po otwarciu folderu projektu, prowadząc do instalacji backdoora z funkcjami zdalnego wykonania kodu.

Kluczowe w tym łańcuchu jest zachowanie użytkownika: VS Code pyta o zaufanie do repozytorium (Workspace Trust), a udzielenie zaufania może uruchomić przetwarzanie zadań i wykonanie osadzonych komend.


W skrócie

  • APT powiązany z DPRK podszywa się pod rekruterów/CTO i dostarcza „zadania rekrutacyjne” jako repozytoria Git.
  • Repo zawiera .vscode/tasks.json z runOptions.runOn: "folderOpen", co pozwala na uruchomienie zadania przy otwarciu projektu (po zgodzie na automatyczne taski).
  • W obserwacjach Jamf na macOS dochodziło do uruchomienia w tle polecenia pobierającego zdalny JavaScript (hostowany m.in. na Vercel) i „wpinającego” go bezpośrednio do Node.js (pipe), co realizuje backdoora i pętlę beaconingu.
  • Kampania wykorzystuje i rozwija rodziny malware powiązane z Contagious Interview: BeaverTail (warstwa Node/infostealer/downloader) i InvisibleFerret (backdoor, często Python).

Kontekst / historia / powiązania

Contagious Interview jest śledzona od co najmniej 2023 r. jako kampania nastawiona na programistów i osoby szukające pracy w branży tech. Unit 42 opisywał scenariusze, w których fałszywi rekruterzy nakłaniali ofiary do instalacji/uruchomienia „aplikacji” (np. podszywających się pod narzędzia do rozmów), co prowadziło do infekcji BeaverTail oraz finalnie InvisibleFerret.

W styczniu 2026 r. obserwujemy przesunięcie ciężaru z „uruchom plik” na „otwórz repo w IDE”: socjotechnika pozostaje podobna (LinkedIn, zadanie techniczne, code review), ale technika wykonania payloadu coraz mocniej wpasowuje się w domyślne workflow deweloperskie.


Analiza techniczna / szczegóły luki

1) Mechanizm: VS Code Tasks + runOn: folderOpen

VS Code pozwala definiować zadania w .vscode/tasks.json. Dokumentacja opisuje runOptions.runOn, gdzie folderOpen oznacza uruchomienie taska przy otwarciu folderu. Co ważne: przy pierwszym otwarciu folderu z takim taskiem użytkownik dostaje pytanie, czy zezwolić na automatyczne uruchamianie zadań w tym folderze.

W praktyce atakujący:

  • ukrywa złośliwy task wśród „normalnych” zadań (np. udających lint/build),
  • ustawia runOn: "folderOpen",
  • dobiera komendę tak, aby wyglądała niegroźnie (np. uruchomienie pliku udającego font), ale w rzeczywistości wykonywała kod (np. node ...).

2) Punkt krytyczny: Workspace Trust

Jamf wskazuje, że przy otwarciu projektu VS Code pyta o zaufanie do autora repozytorium, a po jego udzieleniu aplikacja może automatycznie przetwarzać tasks.json, co „otwiera drzwi” do wykonania arbitralnych poleceń osadzonych w taskach.

3) Łańcuch infekcji obserwowany przez Jamf (macOS)

W badanym wariancie na macOS uruchamiane było polecenie w tle (m.in. z nohup bash -c), które pobierało zdalny JavaScript i przekazywało go bezpośrednio do runtime Node.js. Payload (hostowany na infrastrukturze typu vercel.app) implementował logikę backdoora: rozpoznanie hosta, utrzymywanie pętli wykonywania, komunikacja z serwerem i możliwość zdalnego wykonania kodu.

4) „Dual-stack” i dodatkowe wektory (wg Security Alliance)

Security Alliance opisuje architekturę „dual-stack”:

  • warstwa Node.js: szybka kradzież danych (m.in. klucze, screeny, pliki, przeglądarki) i uruchomienie kanału zdalnego sterowania,
  • warstwa Python: komponenty długotrwałe, w tym kradzież portfeli i elementy monetizacji (np. mining).

W raporcie pojawiają się też warianty awaryjne: jeśli wektor VS Code nie zadziała, malware może „zahaczać” o logikę aplikacji (uruchomi się dopiero przy starcie projektu) lub próbować dociągnąć złośliwą zależność npm.


Praktyczne konsekwencje / ryzyko

Dlaczego to groźne dla organizacji, nie tylko dla kandydatów?

  • Programista często pracuje na urządzeniu z dostępem do repozytoriów firmowych, sekretów CI/CD, tokenów chmurowych, kluczy SSH i portfeli kryptowalutowych (szczególnie w fintech/crypto).
  • Atak może zadziałać nawet wtedy, gdy ofiara „tylko zerknie na kod” lub pozwoli narzędziu AI przeanalizować repo (bo w tle uruchamia się task/Trusted Workspace).
  • Skutki obejmują: przejęcia kont, exfiltrację IP/source code, kradzież środków, a także lateral movement do środowisk firmowych.

Rekomendacje operacyjne / co zrobić teraz

Dla zespołów developerskich (natychmiast)

  1. Nie ufaj repo „z rekrutacji” domyślnie: jeśli VS Code pyta o Workspace Trust — traktuj to jak prompt bezpieczeństwa (tak jak ostrzeżenie o makrach).
  2. Przeglądaj .vscode/tasks.json zanim otworzysz projekt
    • Szukaj runOptions + runOn: "folderOpen" oraz zadań o mylących nazwach (lint, eslint-check, build).
  3. Otwieraj nieznane repo w izolacji: VM / kontener / osobny profil użytkownika bez dostępów do firmowych sekretów (kluczy SSH, tokenów chmurowych). (To wynika bezpośrednio z wektorów i celów kampanii opisanych w źródłach.)
  4. Polityka zależności: instaluj pakiety npm tylko z weryfikowanych źródeł i unikaj „npm install” na niezweryfikowanych repozytoriach.

Dla SOC / Blue Team (detekcja i hunting)

  • Telemetria procesów: wzorce typu bash -c ... curl ... | node, nietypowe uruchomienia Node przy otwieraniu folderu w VS Code, oraz procesy potomne VS Code uruchamiające shell.
  • Polowanie po artefaktach: nietypowe pliki w .vscode/, zadania z runOn: folderOpen, podejrzane „zasoby” udające fonty uruchamiane przez node.
  • Egress/IOC: podwyższona czujność na krótkotrwałe domeny/hosting używany do stagingu payloadów (w obserwacjach pojawia się Vercel).

Różnice / porównania z innymi przypadkami

  • Wcześniej (2023–2024): częsty schemat to nakłonienie ofiary do instalacji/uruchomienia „aplikacji” lub kodu w ramach rozmowy rekrutacyjnej; BeaverTail i InvisibleFerret były rozwijane i przenoszone między platformami (macOS/Windows).
  • Teraz (2025–2026): nacisk przesuwa się na łańcuch dostawy przez repozytoria i IDE — otwarcie folderu w VS Code może uruchomić złośliwy task (folderOpen), a dodatkowe wektory (hook w runtime aplikacji, zależności npm) zwiększają „odporność” ataku na niepowodzenie jednego sposobu.

Podsumowanie / kluczowe wnioski

  • Mechanizmy automatyzacji w IDE (Tasks) są funkcją produktywności, ale w rękach APT stają się wektorem initial access — szczególnie gdy łączą się z socjotechniką „zadania rekrutacyjnego”.
  • Największe ryzyko wynika z „małego” kliknięcia: Workspace Trust i zgoda na automatyczne taski.
  • Organizacje powinny traktować nieznane repozytoria jak nieznane załączniki: izolacja, przegląd przed uruchomieniem, polityki zależności i telemetryka procesów.

Źródła / bibliografia

  1. The Hacker News – opis kampanii i najnowszego wariantu z VS Code Tasks (20 stycznia 2026). (The Hacker News)
  2. Jamf Threat Labs – analiza nadużyć VS Code i łańcucha infekcji (20 stycznia 2026). (jamf.com)
  3. Microsoft (VS Code Docs) – dokumentacja tasks.json, runOptions i runOn: folderOpen. (code.visualstudio.com)
  4. Security Alliance (Radar) – raport techniczny: „VS Code Tasks Abuse by Contagious Interview (DPRK)” (13 stycznia 2026). (Radar | Security Alliance)
  5. Unit 42 (Palo Alto Networks) – tło kampanii Contagious Interview oraz BeaverTail/InvisibleFerret (9 października 2024). (Unit 42)

Evelyn Stealer: jak złośliwe rozszerzenia VS Code przeradzają się w pełny atak na środowisko deweloperskie

Wprowadzenie do problemu / definicja luki

Evelyn Stealer to kampania malware typu information stealer, która uderza w szczególnie wrażliwy punkt nowoczesnych firm: środowisko pracy programistów. Zamiast atakować klasyczne stacje użytkowników końcowych, operatorzy kampanii wykorzystują zaufanie do narzędzi developerskich — w tym przypadku ekosystem rozszerzeń Microsoft Visual Studio Code — aby dostarczyć wieloetapowy ładunek kradnący dane.

Z perspektywy bezpieczeństwa to nie jest „kolejny stealer”. To przykład ataku, w którym pojedyncza kompromitacja laptopa developera może stać się przyczółkiem do dalszego dostępu: tokenów chmurowych, sekretów w repozytoriach, danych produkcyjnych i — coraz częściej — zasobów kryptowalutowych.


W skrócie

  • Wejście: złośliwe rozszerzenia VS Code podszywające się pod użyteczne dodatki (m.in. warianty: BigBlack.bitcoin-black, BigBlack.codo-ai, BigBlack.mrbigblacktheme).
  • Etap 1: zrzut i uruchomienie Lightshot.dll (udającej komponent narzędzia) oraz ukryty PowerShell pobierający kolejny etap (runtime.exe).
  • Etap 2: process hollowing — wstrzyknięcie finalnego stealera do legalnego procesu Windows grpconv.exe.
  • Kradzione dane: m.in. cookies i hasła przeglądarek, dane systemowe, schowek, Wi-Fi, portfele crypto, zrzuty ekranu.
  • Eksfiltracja: przesyłanie archiwum ZIP do C2 po FTP (np. server09.mentality[.]cloud).
  • Malware ma rozbudowane anti-analysis / anti-VM, by utrudniać sandboxing i pracę analitykom.

Kontekst / historia / powiązania

Trend Micro opisuje Evelyn jako przykład „operacjonalizacji” ataków na społeczność deweloperską: narzędzie pracy (IDE + dodatki) staje się mechanizmem dostarczania malware.

Co ważne: Microsoft od dawna deklaruje wielowarstwowe zabezpieczenia Marketplace (skanowanie antywirusowe, analiza zachowania w sandboxie, weryfikacja wydawców, blocklista i wymuszone odinstalowanie złośliwych rozszerzeń). To jednak nie eliminuje ryzyka „tu i teraz” — zanim rozszerzenie zostanie wykryte i usunięte, okno czasowe wystarcza na infekcję i kradzież sekretów.

W tle mamy też szerszy trend: złośliwe kampanie w VSCode Marketplace regularnie wracają w nowych wariantach (np. ukrywanie trojana w zależnościach i plikach podszywających się pod obrazy).


Analiza techniczna / szczegóły luki

1) Initial access: złośliwe rozszerzenie VS Code

Według opisu kampanii, ofiara instaluje złośliwe rozszerzenie, które dostarcza element udający legalny komponent „Lightshot” (DLL). W relacji Trend Micro ten „downloader” podszywa się pod Lightshot.dll, a jego uruchomienie następuje w procesie legalnego Lightshot.exe (uruchomienie ma sensowny „trigger” — załadowanie DLL).

2) Etap 1: downloader (Lightshot.dll) + PowerShell

Po załadowaniu DLL malware uruchamia ukryte polecenie PowerShell, które pobiera i uruchamia kolejny etap, zapisując go w katalogu tymczasowym jako runtime.exe. Dodatkowo stosuje mechanizmy „single instance” (mutex), by nie uruchamiać się wielokrotnie.

3) Etap 2: injector i process hollowing do grpconv.exe

Drugi etap działa jako injector: odszyfrowuje payload (AES-256-CBC) i wstrzykuje go do legalnego procesu Windows grpconv.exe uruchomionego w stanie zawieszonym (CREATE_SUSPENDED), po czym wznawia wykonanie — klasyczny wzorzec process hollowing dla redukcji artefaktów i utrudnienia detekcji.

4) Final payload: Evelyn Stealer (anti-analysis + kradzież danych)

Trend Micro podkreśla warstwy unikania analizy: wykrywanie VM (m.in. po GPU/driverach), analiza hostname, dysku (np. progi pojemności), procesów narzędzi VM oraz kluczy rejestru typowych dla środowisk wirtualnych i sandboxów.

Po „weryfikacji środowiska” stealer:

  • tworzy strukturę roboczą w AppData,
  • odzyskuje dane przeglądarkowe, kończy procesy przeglądarek,
  • pobiera/odtwarza krytyczny komponent do ekstrakcji danych przeglądarkowych (abe_decrypt.dll),
  • pakuje dane i eksfiltruje je do C2 po FTP.

Praktyczne konsekwencje / ryzyko

W kampaniach celujących w developerów ryzyko jest zwykle większe niż „wyciek haseł”:

  • Kompromitacja łańcucha CI/CD: jeśli na stacji są tokeny do repozytoriów, registry (npm/pypi), pipeline’ów czy chmury, atakujący może wykonać ruch w kierunku supply chain (podmiana paczek, backdoory w buildach).
  • Dostęp do środowisk produkcyjnych: Trend Micro wprost wskazuje, że celem są organizacje mające dostęp do systemów produkcyjnych, zasobów chmurowych lub aktywów cyfrowych.
  • Kradzież kryptowalut / tożsamości: stealer obejmuje portfele crypto, cookies i dane sesyjne — to skraca drogę do przejęcia kont bez łamania MFA (np. przez hijack sesji).
  • Trudniejsza detekcja: process hollowing do legalnego procesu + anti-VM zwiększają szanse, że infekcja „przeżyje” pierwsze godziny incydentu.

Rekomendacje operacyjne / co zrobić teraz

Poniżej zestaw działań „na już”, ułożony praktycznie (DevSecOps/SOC/IT):

1) Zabezpiecz ekosystem rozszerzeń VS Code

  • Wdróż allowlistę dozwolonych rozszerzeń (polityki organizacyjne) i blokuj instalacje ad-hoc tam, gdzie to możliwe. Microsoft wprost opisuje możliwość egzekwowania dozwolonych rozszerzeń w organizacji.
  • Preferuj rozszerzenia od zweryfikowanych wydawców (sygnał zaufania), ale traktuj to jako heurystykę, nie gwarancję.
  • Rozważ proces wewnętrznego „review” rozszerzeń (SCA na paczce rozszerzenia, analiza połączeń sieciowych, uprawnień i telemetrii).

2) Polowanie/detekcja w endpointach (EDR/XDR)

Szukaj telemetrii typowej dla łańcucha:

  • powershell.exe uruchamiany w sposób ukryty po akcji w VS Code / po instalacji rozszerzenia,
  • nowe binaria typu runtime.exe w katalogach TEMP,
  • nietypowe uruchomienia grpconv.exe i anomalie procesu (np. „hollowing” widoczny w EDR),
  • obecność podejrzanych DLL jak Lightshot.dll w nietypowych ścieżkach związanych z rozszerzeniami.

3) Kontrola egress i protokołów „legacy”

  • Zablokuj / monitoruj FTP egress tam, gdzie nie jest absolutnie konieczny (w wielu firmach to szybkie zwycięstwo). Kampania używa FTP do C2 i eksfiltracji ZIP.
  • Dodaj alertowanie na domeny/hosty anormalne dla stacji developerskich (w przykładach pojawia się server09.mentality[.]cloud).

4) Higiena sekretów i ograniczanie blast radius

  • Wymuś krótkie TTL dla tokenów, rotację i ograniczenie uprawnień (least privilege) dla: repo, CI, chmury, rejestrów paczek.
  • Egzekwuj przechowywanie sekretów w vaultach (a nie w plikach konfiguracyjnych, schowku, zmiennych środowiskowych bez kontroli).
  • Włącz skanowanie sekretów w kodzie i na endpointach (w tym pre-commit / pre-push).

5) Reakcja na incydent

Jeśli podejrzewasz infekcję:

  • izoluj host, zrób triage artefaktów (VS Code extensions folder, TEMP, AppData),
  • rotuj wszystkie potencjalnie wykradzione sekrety,
  • przeglądnij logi dostępu do repozytoriów i chmury pod kątem nietypowych akcji z czasu infekcji.

Różnice / porównania z innymi przypadkami

Evelyn Stealer wpisuje się w serię incydentów, gdzie Marketplace rozszerzeń jest traktowany jak kanał dystrybucji malware:

  • W grudniu 2025 opisywano kampanię z 19 złośliwymi rozszerzeniami, w których payload ukryto w zależnościach i plikach podszywających się pod obrazy (np. „fake PNG”), a kod wykonywał się przy starcie IDE.
  • Microsoft jednocześnie rozwija mechanizmy obronne (skanowanie, sandbox, blocklista, automatyczne odinstalowanie) i podkreśla rolę zgłoszeń społeczności. Dla obrońców oznacza to jedno: nie można zakładać, że „Marketplace = bezpieczne”, a kontrola organizacyjna (allowlista + monitoring) pozostaje kluczowa.

Na tle innych kampanii wyróżnia się tu dojrzałość łańcucha: DLL-loader → PowerShell → process hollowing → anti-analysis → FTP exfil — czyli konstrukcja typowa raczej dla bardziej „profesjonalnych” operacji niż masowego malware z reklam.


Podsumowanie / kluczowe wnioski

  • Deweloperzy są celem wysokiej wartości, bo ich stacje to magazyn tokenów, dostępów i artefaktów łańcucha dostaw.
  • W kampanii Evelyn kluczowy jest wektor VS Code extension, a potem klasyczne techniki stealth (process hollowing do grpconv.exe) i bogata kradzież danych.
  • Największy efekt obronny dają: allowlista rozszerzeń, monitoring PowerShell/grpconv.exe, oraz ograniczenie egress (zwłaszcza FTP).

Źródła / bibliografia

  1. Trend Micro — From Extension to Infection: An In-Depth Analysis of the Evelyn Stealer Campaign Targeting Software Developers (19 stycznia 2026). (trendmicro.com)
  2. The Hacker News — Evelyn Stealer Malware Abuses VS Code Extensions to Steal Developer Credentials and Crypto (20 stycznia 2026). (The Hacker News)
  3. Microsoft (VS Code Docs) — Extension runtime security (opis mechanizmów ochronnych Marketplace). (Visual Studio Code)
  4. Microsoft for Developers — Security and Trust in Visual Studio Marketplace (11 czerwca 2025). (Microsoft Developer)
  5. BleepingComputer — Malicious VSCode Marketplace extensions hid trojan in fake PNG file (11 grudnia 2025). (BleepingComputer)

Google Chrome pozwala wyłączyć i usunąć lokalny model AI od wykrywania scamów (Enhanced Protection)

Wprowadzenie do problemu / definicja luki

Google rozwija w Chrome dodatkową warstwę ochrony przed oszustwami (scamami) w ramach Safe Browsing → Enhanced Protection. Kluczowym elementem stał się lokalny (on-device) model AI, który ma szybciej rozpoznawać podejrzane strony i zachowania — w tym takie, które „żyją” zaledwie kilka minut i nie zdążą trafić na klasyczne listy blokad.

Nowość opisana 17 stycznia 2026 r. dotyczy kontroli użytkownika: w Chrome pojawiła się opcja pozwalająca wyłączyć „On-device GenAI” i tym samym usunąć lokalne modele AI wykorzystywane m.in. do mechanizmów anty-scam w Enhanced Protection (na razie w kanale Canary).


W skrócie

  • W Chrome (Canary) dodano przełącznik Settings → System → “On-device GenAI”, który pozwala wyłączyć i usunąć lokalny model AI używany przez Enhanced Protection.
  • Ochrona anty-scam w Chrome korzysta z podejścia on-device (Gemini Nano) do wyciągania sygnałów bezpieczeństwa ze strony, po czym Safe Browsing może wystawić „ostateczny werdykt”.
  • Funkcja (i wysyłanie streszczonych sygnałów) działa dla użytkowników, którzy świadomie włączyli Enhanced Protection.
  • W środowiskach firmowych poziom Safe Browsing można kontrolować polityką SafeBrowsingProtectionLevel.

Kontekst / historia / powiązania

  • Enhanced Protection istnieje od lat jako „mocniejszy” tryb Safe Browsing, ale w 2025 r. został istotnie rozbudowany o komponenty AI do ochrony „w czasie rzeczywistym”, szczególnie przeciw scamom typu tech support scam (fałszywe alerty o wirusach, blokowanie wyjścia ze strony, wymuszanie kontaktu telefonicznego itd.).
  • Google opisywało, że dzięki analizie on-device można reagować na zagrożenia szybciej — m.in. dlatego, że przeciętnie złośliwa strona potrafi istnieć bardzo krótko (rzędu minut).
  • Równolegle Google rozwija „wbudowane AI” w Chrome (Gemini Nano), poszerzając kompatybilność sprzętową (np. wsparcie inferencji także na CPU w wybranych konfiguracjach).

Analiza techniczna / szczegóły luki

Jak działa anty-scam z modelem on-device

Z perspektywy architektury bezpieczeństwa Chrome wygląda to (w uproszczeniu) tak:

  1. Trigger / sygnał uruchamiający: Chrome obserwuje zachowania typowe dla tech support scam (np. użycie Keyboard Lock API do utrudnienia zamknięcia karty/ucieczki).
  2. Analiza lokalna (on-device): treść bieżącej strony jest oceniana przez Gemini Nano w celu wyciągnięcia sygnałów bezpieczeństwa (np. „intencja strony”, wzorce socjotechniczne).
  3. Werdykt Safe Browsing: streszczone sygnały trafiają do Safe Browsing, który podejmuje decyzję o ostrzeżeniu/interstitialu.
  4. Ograniczenia wydajności i prywatności: Google deklaruje mechanizmy ograniczające koszty (rzadkie uruchamianie, limity, throttling, kontrola zasobów), a wysyłanie sygnałów ma dotyczyć użytkowników, którzy opt-in w Enhanced Protection.

Co zmienia przełącznik „On-device GenAI”

Według opisu BleepingComputer, aby usunąć lokalny model AI, użytkownik ma wejść w:
Chrome → Settings → System → wyłączyć “On-device GenAI”.

Ważne: wygląda na to, że „On-device GenAI” może docelowo zasilać więcej funkcji niż tylko scam detection, więc wyłączenie może mieć szerszy wpływ na przyszłe mechanizmy bezpieczeństwa/AI w Chrome.

Kontekst enterprise / Android

W notatkach dla Chrome Enterprise pojawia się opis, że np. w Chrome 145 na Androidzie wykrycie scam „on-device” może skutkować zapytaniem do Safe Browsing o końcowy werdykt, a funkcja ma być aktywna tylko przy Enhanced Protection; administratorzy mogą sterować poziomem ochrony polityką.


Praktyczne konsekwencje / ryzyko

Dla użytkowników indywidualnych

  • Wyłączenie/usuń model może oznaczać utratę dodatkowej warstwy ochrony przed scamami, zwłaszcza tymi szybko zmieniającymi domeny i treści (typowe dla kampanii krótkotrwałych). Logika on-device była właśnie odpowiedzią na ten problem.
  • Pojawia się „trade-off” kontrola i zasoby vs. bezpieczeństwo: niektórzy będą chcieli ograniczyć lokalne AI (np. zasoby, polityka prywatności), ale trzeba to świadomie zbilansować z ryzykiem.

Dla organizacji (IT/SOC)

  • Jeśli pracownicy mogą samodzielnie wyłączać komponent on-device, rośnie znaczenie:
    • standaryzacji ustawień Safe Browsing,
    • monitoringu zgodności,
    • oraz edukacji o skutkach „odchudzania” ochrony w przeglądarce.
  • W środowiskach enterprise warto traktować przeglądarkę jak element kontroli dostępu do SaaS, a nie tylko „aplikację użytkownika” — szczególnie gdy scam pages próbują wymuszać działania (płatności, zdalny dostęp, instalacje).

Rekomendacje operacyjne / co zrobić teraz

Dla zespołów bezpieczeństwa (firmy)

  1. Wymuś poziom ochrony Safe Browsing tam, gdzie to uzasadnione ryzykiem (np. grupy o podwyższonej ekspozycji: finanse, HR, support). W ekosystemie Chrome Enterprise kluczowa jest polityka SafeBrowsingProtectionLevel.
  2. Zdefiniuj politykę dot. funkcji AI w przeglądarce: czy dopuszczasz on-device AI w ramach ochrony (zwykle tak), czy wymagasz określonych ustawień — i dlaczego.
  3. Komunikacja do użytkowników: krótka instrukcja „co daje Enhanced Protection” i jakie są skutki wyłączania „On-device GenAI” (mniej ochrony przed scamami).
  4. Testy kompatybilności i wpływu: jeśli organizacja wykorzystuje kanały Canary/Dev do testów, sprawdź, czy przełącznik nie wpływa na inne elementy (bo według obserwacji może dotyczyć szerszego zestawu funkcji).

Dla użytkowników indywidualnych

  • Jeśli zależy Ci na ochronie anty-scam: upewnij się, że masz włączone Safe Browsing → Enhanced Protection, a wyłączanie „On-device GenAI” rób tylko świadomie (np. do testów). Mechanizm AI był projektowany do wykrywania m.in. technik wymuszających działania na stronie.

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

Enhanced Protection vs Standard Protection

  • Enhanced Protection: dodatkowe sygnały i mechanizmy, w tym warstwa AI on-device oraz przesyłanie streszczonych sygnałów do Safe Browsing (opt-in).
  • Standard Protection: bardziej „klasyczny” model ochrony; użytkownicy mogą korzystać pośrednio, bo nowe zidentyfikowane domeny/scamy trafiają potem na bloklisty.

On-device AI vs klasyczne bloklisty

  • On-device AI ma wykrywać „wzorce i intencje” nawet wtedy, gdy domena/kreacja jest nowa.
  • Bloklisty są skuteczne, ale wymagają czasu na obserwację, klasyfikację i dystrybucję — co przy „życiu” stron scam bywa zbyt wolne.

Podsumowanie / kluczowe wnioski

Dodanie w Chrome opcji wyłączenia „On-device GenAI” to sygnał większej transparentności i kontroli użytkownika nad lokalnymi modelami AI — ale jednocześnie otwiera dyskusję o tym, czy i gdzie warto wyłączać warstwy ochronne.

Dla bezpieczeństwa praktyczny wniosek jest prosty: jeśli Enhanced Protection ma realnie łapać krótkotrwałe scamy, to usunięcie lokalnego modelu AI może osłabić ten scenariusz ochrony. W organizacjach warto przygotować polityki i komunikację, zanim funkcja trafi szerzej ze środowisk testowych do stabilnych wydań.


Źródła / bibliografia

  1. BleepingComputer – „Google Chrome now lets you turn off on-device AI model powering scam detection” (17 stycznia 2026). (BleepingComputer)
  2. Google Online Security Blog – „Using AI to stop tech support scams in Chrome” (8 maja 2025). (Google Online Security Blog)
  3. Chrome Enterprise and Education release notes – wzmianka o „On-device scam detection on Android” i kontroli polityką. (Google Help)
  4. Malwarebytes – omówienie wdrożenia Gemini Nano w Chrome 137 i kontekstu tech support scams. (Malwarebytes)
  5. Chrome for Developers – „Expanding built-in AI to more devices with Chrome” (1 października 2025). (Chrome for Developers)

GhostPoster: złośliwe rozszerzenia do Chrome/Firefox/Edge z 840 tys. instalacji – malware ukryte w obrazach PNG

Wprowadzenie do problemu / definicja luki

Kampania GhostPoster pokazuje, że ryzyko nie musi zaczynać się od klasycznego “CVE” w przeglądarce. W tym przypadku problemem jest nadużycie modelu zaufania do sklepów z dodatkami: złośliwe rozszerzenia potrafią przejść weryfikację, wyglądać jak “normalne” narzędzia (tłumacz, adblock, pobieracz), a następnie uruchamiać ukryty ładunek już po instalacji.

Najbardziej niepokojący element GhostPoster to technika ukrywania kodu JavaScript w plikach PNG (steganografia / “doklejony” payload poza danymi obrazu), co utrudnia wykrywanie przez statyczną analizę paczki rozszerzenia.


W skrócie

  • W styczniu 2026 opisano kolejny zestaw 17 rozszerzeń powiązanych z GhostPoster, dostępnych w sklepach Chrome / Firefox / Edge, które łącznie zebrały ok. 840 000 instalacji.
  • Kampania była wcześniej nagłośniona w grudniu 2025 (pierwotnie w kontekście Firefoksa); wtedy wskazywano technikę ukrywania loadera w ikonie PNG.
  • Złośliwy kod po aktywacji umożliwia m.in. śledzenie aktywności przeglądania, podmianę linków afiliacyjnych, osłabianie zabezpieczeń (nagłówki), wstrzykiwanie iframe’ów do fraudu reklamowego.
  • Samo zdjęcie dodatku ze sklepu nie czyści infekcji – dodatki zainstalowane lokalnie mogą działać dalej, dopóki użytkownik/IT ich nie usunie.

Kontekst / historia / powiązania

GhostPoster został po raz pierwszy szerzej opisany w grudniu 2025 przez badaczy Koi Security na przykładzie dodatków do Firefoksa (m.in. “Free VPN Forever”) – już wtedy zwrócono uwagę na steganografię w PNG i wieloetapowy łańcuch infekcji.

Najnowsze ustalenia (styczeń 2026) wskazują, że infrastruktura i TTP tej samej kampanii obejmują też Chrome i Edge, a część dodatków mogła być obecna w sklepach nawet od 2020 r., co sugeruje długą, cierpliwą operację nastawioną na monetyzację i odporność na wykrycie.


Analiza techniczna / szczegóły luki

1) Steganografia i “nietypowy” loader w PNG

W wariancie opisanym przez Koi Security rozszerzenie czyta własny plik logo.png i przeszukuje surowe bajty w poszukiwaniu znacznika ===. Wszystko po znaczniku nie jest już obrazem – to ukryty JavaScript uruchamiany w czasie działania.

2) Łańcuch wieloetapowy i opóźnienia (evasion-by-design)

GhostPoster działa warstwowo:

  • Stage 1 (PNG): wydobycie loadera z ikony/obrazu,
  • Stage 2 (C2): loader pobiera właściwy payload z serwera zdalnego (w obserwacjach Koi: m.in. liveupdt[.]com oraz dealctr[.]com),
  • dodatkowo: rzadkie “check-in’y” (np. co 48h) i probabilistyczne pobieranie payloadu (np. tylko część prób), co utrudnia analitykom “złapanie” ruchu na żywo.

LayerX opisuje również mechanizmy opóźnionej aktywacji (≥48h) i warunkowego uruchamiania łączności C2 jako kluczowy element utrzymania się kampanii.

3) “Ewolucja” wariantów: delimiter >>>> i staging w background script

W styczniowym raporcie wskazano wariant, w którym logika stagingu została przeniesiona do background script, a payload jest ukrywany w zabundlowanym pliku graficznym (nie tylko ikonie). Skrypt skanuje bajty pod kątem delimitera >>>>, zapisuje dane w storage, dekoduje Base64 i wykonuje jako JavaScript.

4) Co robi payload po aktywacji (przykładowe funkcje)

Z opisu Koi i LayerX wynika, że po uruchomieniu złośliwy kod potrafi m.in.:

  • podmieniać linki afiliacyjne (kradzież prowizji) na platformach e-commerce,
  • wstrzykiwać tracking (np. przez elementy DOM / analitykę),
  • usuwać nagłówki bezpieczeństwa (np. Content-Security-Policy, X-Frame-Options), osłabiając ochronę przed clickjacking/XSS,
  • wstrzykiwać niewidoczne iframe’y do fraudu reklamowego/click fraud i dodatkowego śledzenia,
  • wdrażać mechanizmy CAPTCHA bypass (co zwiększa możliwości automatyzacji nadużyć w przeglądarce).

Praktyczne konsekwencje / ryzyko

Dla użytkownika indywidualnego

  • Utrata prywatności: profilowanie aktywności przeglądania i zachowań zakupowych.
  • Ryzyko dalszej infekcji / nadużyć: skoro payload jest pobierany zdalnie, operator może zmieniać funkcje w czasie (np. dołożyć phishing/credential theft), nawet jeśli dziś dominuje monetyzacja reklamowo-afiliacyjna. (To wniosek wynikający z opisanego modelu “loader + aktualizowany payload”.)

Dla organizacji (enterprise)

  • Shadow IT w przeglądarce: rozszerzenia instalowane “na własną rękę” omijają standardowe procesy oceny ryzyka.
  • Osłabienie polityk bezpieczeństwa aplikacji webowych przez manipulację nagłówkami (CSP/HSTS/anty-clickjacking) – to potencjalny “force multiplier” dla innych ataków webowych.
  • Trudność detekcji: długie uśpienie, selektywne check-in’y i steganografia powodują, że klasyczne podejście “sprawdź pliki JS w paczce” może nie wystarczyć.

Rekomendacje operacyjne / co zrobić teraz

1) Natychmiastowe działania (IR-lite)

  • Sprawdź i usuń podejrzane rozszerzenia – zwłaszcza te “utility”, które mają dużo instalacji, a nie są od rozpoznawalnego wydawcy. Lista kampanii (styczeń 2026) obejmuje m.in.:
    • Google Translate in Right Click (~522k), Translate Selected Text with Google (~159k), Ads Block Ultimate, Floating Player – PiP Mode, Youtube Download, Instagram Downloader i inne.
  • Zakładaj, że usunięcie ze sklepu ≠ usunięcie z endpointu: jeśli dodatek był zainstalowany, nadal może działać do czasu ręcznego odinstalowania.

2) Monitoring i hunting (blue team)

  • Wdróż przynajmniej podstawowy audit dodatków (inventory: nazwa, ID, wydawca, uprawnienia, data instalacji, źródło instalacji) w przeglądarkach zarządzanych.
  • Monitoruj ruch DNS/HTTP(S) pod kątem znanych wskaźników (na przykład domen C2 opisywanych przez Koi: liveupdt[.]com, dealctr[.]com).
  • Poluj na symptomy: nietypowe modyfikacje DOM, wstrzyknięte iframe’y, podejrzane żądania sieciowe z kontekstu rozszerzeń, anomalie w nagłówkach odpowiedzi (utrata CSP/X-Frame-Options).

3) Prewencja w organizacji

  • Allow-listing rozszerzeń + blokada instalacji “z wolnej ręki” (tam, gdzie to możliwe).
  • Zasada minimum uprawnień: rozszerzenie, które prosi o szeroki dostęp do wszystkich stron, powinno być traktowane jak komponent wysokiego ryzyka.
  • Rozważ narzędzia/telemetrię, które wykrywają zachowanie (a nie tylko sygnatury w kodzie) – LayerX wprost rekomenduje podejście behavior-based i regularny audit dodatków.

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

GhostPoster wpisuje się w trend “malware jako rozszerzenie”: zamiast exploitować przeglądarkę, atakujący wykorzystują fakt, że dodatki mają szerokie uprawnienia i użytkownicy instalują je masowo. Koi zwraca uwagę, że szczególnie kuszące są “darmowe” rozszerzenia VPN i narzędzia rzekomo zwiększające prywatność – a w praktyce bywają nośnikiem telemetryki lub gorzej.

Na tle wielu kampanii wyróżnia się tu ukrywanie kodu w PNG oraz bardzo konsekwentne mechanizmy opóźnień i selektywnej aktywacji, które zwiększają szanse przetrwania w sklepach i w środowiskach produkcyjnych.


Podsumowanie / kluczowe wnioski

  • 840 tys. instalacji w wielu sklepach dodatków pokazuje, że to nie incydent niszowy, tylko problem skali.
  • GhostPoster to kampania “zaprojektowana pod unikanie detekcji”: steganografia w PNG, staging, opóźnienia, modularny payload.
  • W praktyce ryzyko dotyczy zarówno użytkowników (śledzenie/monetyzacja), jak i firm (shadow IT, osłabianie zabezpieczeń web, trudność detekcji).
  • Najskuteczniejsze podejście obronne to połączenie: inventory + polityki instalacji + monitoring zachowania rozszerzeń oraz szybkie usuwanie podejrzanych dodatków z endpointów.

Źródła / bibliografia

  1. BleepingComputer – “Malicious GhostPoster browser extensions found with 840,000 installs” (17.01.2026). (BleepingComputer)
  2. LayerX – “Browser Extensions Gone Rogue: The Full Scope of the GhostPoster Campaign” (15.01.2026). (LayerX)
  3. Koi Security – “Inside GhostPoster: How a PNG Icon Infected 50,000 Firefox Users” (16.12.2025). (koi.ai)
  4. TechRadar – omówienie kampanii GhostPoster i reakcji ekosystemu dodatków (12.2025). (TechRadar)

Publiczny exploit na krytyczną lukę w FortiSIEM: zdalne RCE bez uwierzytelnienia i droga do roota (CVE-2025-64155)

Wprowadzenie do problemu / definicja luki

Fortinet FortiSIEM (SIEM/UEBA) dostał krytyczną podatność umożliwiającą zdalne wykonanie poleceń/kodu bez uwierzytelnienia w wyniku błędnej neutralizacji elementów w wywołaniu komendy systemowej (CWE-78). Luka jest śledzona jako CVE-2025-64155 i – co najważniejsze operacyjnie – ma już upubliczniony PoC/exploit, co zwykle znacząco przyspiesza adopcję przez atakujących.

Uwaga porządkująca nazewnictwo: część publikacji nagłośniła temat pod wcześniejszym identyfikatorem CVE-2025-25256 (sierpień 2025). Badacze opisują jednak, że dalsza analiza doprowadziła do odkrycia nowej, łańcuchowej podatności i przypisania jej CVE-2025-64155.


W skrócie

  • Co to jest: zdalna, nieuwierzytelniona podatność prowadząca do RCE i w typowym scenariuszu do pełnej kompromitacji (root).
  • Gdzie: FortiSIEM – problem dotyczy usług komunikacyjnych phMonitor (wskazywany port TCP/7900 jako kluczowy punkt ekspozycji/mitigacji).
  • Wersje podatne (przykładowe zakresy): 6.7.0–6.7.10, 7.0.0–7.0.4, 7.1.0–7.1.8, 7.2.0–7.2.6, 7.3.0–7.3.4 oraz 7.4.0.
  • Status eksploitu: PoC opublikowany, brak potwierdzonych raportów o masowym „in-the-wild” w momencie publikacji analiz (ale ryzyko gwałtownie rośnie).
  • Najważniejsze działanie: patch/upgrade + natychmiastowe odcięcie dostępu do TCP/7900 z sieci niezaufanych.

Kontekst / historia / powiązania

Badacze z Horizon3.ai wskazują, że phMonitor był już historycznie „wejściem” do kilku podatności w FortiSIEM (wspominane m.in. CVE-2023-34992 i CVE-2024-23108), a zainteresowanie podatnościami Fortinetu bywa wysokie także po stronie grup ransomware (w kontekście FortiSIEM przywołano wątek zainteresowania w wyciekach czatów).

W praktyce to klasyczny wzorzec: produkt infrastrukturalny (SIEM) często stoi wysoko w zaufaniu sieciowym, a kiedy pojawia się RCE bez auth + PoC, czas do prób skanowania/ataku w internecie zwykle skraca się do godzin–dni.


Analiza techniczna / szczegóły luki

Z perspektywy technicznej, opis Horizon3.ai jest szczególnie istotny, bo pokazuje nie tylko „command injection”, ale łańcuch prowadzący do roota:

  1. Brak uwierzytelnienia do handlerów w phMonitor
    phMonitor mapuje dziesiątki handlerów operacji (komendy/typy żądań) i – kluczowo – część z nich jest dostępna zdalnie bez autoryzacji.
  2. Wejście przez obsługę żądania storage typu elastic
    W określonym przepływie parametry z payloadu (XML) trafiają do skryptu elastic_test_url.sh jako argumenty. Wprowadzono warstwę „utwardzania” (np. owijanie argumentów w cudzysłowy), ale…
  3. Argument injection do curl zamiast klasycznego command injection
    Skrypt buduje komendę curl, a następnie ją wykonuje. Badacze pokazują, że da się „wstrzyknąć” dodatkowe argumenty curl (np. zapis do pliku) – finalnie wykorzystując funkcję --next, która pozwala łańcuchować żądania w jednej instancji curl. To omija część ochrony wynikającej z cytowania argumentów.
  4. Arbitrary file write jako użytkownik uprzywilejowany (admin), a potem eskalacja do roota
    W demonstracji plik wykonywalny cyklicznie uruchamiany w systemie jest nadpisywany, co daje shell jako „admin”, a następnie wykorzystywany jest fakt, że pewne pliki wykonywane przez root są zapisywalne przez admin (np. skrypt uruchamiany z crona), co prowadzi do root.

Dodatkowo BleepingComputer zwraca uwagę na praktyczny trop detekcyjny: w logach phMonitor (/opt/phoenix/log/phoenix.logs) warto szukać wpisów zawierających m.in. PHL_ERROR i wskazania URL payloadu oraz docelowej ścieżki zapisu.


Praktyczne konsekwencje / ryzyko

Dlaczego to „pali się” bardziej niż typowa podatność?

  • Brak uwierzytelnienia + zdalny wektor sieciowy → niski próg ataku, szybka automatyzacja skanami.
  • PoC publicznie dostępny → rośnie prawdopodobieństwo masowych prób, nawet jeśli wcześniej brak było obserwacji „in-the-wild”.
  • FortiSIEM jako „high-trust asset”: kompromitacja SIEM to nie tylko RCE na serwerze – to często dostęp do integracji, kluczy, tokenów, poświadczeń do kolektorów i systemów logowania, a także idealny punkt do ruchu bocznego.

Rekomendacje operacyjne / co zrobić teraz

1) Patch/upgrade – priorytet P1

Zgodnie z dostępnymi zestawieniami wersji naprawionych:

  • 7.4: aktualizuj do 7.4.1+
  • 7.3: do 7.3.5+
  • 7.2: do 7.2.7+
  • 7.1: do 7.1.9+
  • Linie 6.7 i 7.0: rekomendowana migracja do wspieranej, naprawionej wersji (zamiast oczekiwania na łatkę).

2) Ogranicz ekspozycję phMonitor (TCP/7900) – natychmiast

Jeśli nie możesz zapatchować od razu, wdrożenie kontroli dostępu do portu 7900 (tylko z zaufanych segmentów/hostów) jest wskazywane jako workaround.

Minimalny baseline:

  • zablokuj TCP/7900 z Internetu i sieci użytkowników,
  • dopuść wyłącznie komunikację wymaganą topologią (kolektory ↔ supervisor),
  • dodaj alerty na nietypowe źródła ruchu do 7900.

3) Detekcja i triage

  • Przeszukaj logi: /opt/phoenix/log/phoenix.logs pod kątem anomalii i wzorców typu PHL_ERROR oraz podejrzanych ścieżek zapisu.
  • Sprawdź integralność/zmiany w lokalizacjach wskazywanych w analizie (przykładowo pliki nadpisywane w scenariuszu PoC) i wykonaj szybki hunting pod kątem „nagle zmienionych” plików wykonywalnych/skryptów.

4) Po incydencie lub podejrzeniu kompromitacji

  • rotacja kluczy/poświadczeń dostępnych z FortiSIEM (integracje, konta serwisowe, tokeny),
  • przegląd połączeń wychodzących (reverse shell / nietypowe egress),
  • weryfikacja cronów i plików uruchamianych cyklicznie.

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

Warto zwrócić uwagę na różnicę jakościową: wiele błędów klasy „OS command injection” to pojedynczy punkt wstrzyknięcia. Tutaj badacze opisują argument injection do curl + arbitralny zapis pliku + eskalację przez błędne uprawnienia plików wykonywanych przez roota. To podejście jest szczególnie „produkcyjne” dla atakujących, bo:

  • pozwala obejść część utwardzeń (cytowanie argumentów),
  • daje stabilny prymityw (write-what-where w granicach uprawnień),
  • łatwo przerobić na trwałość (persistencję) przez pliki wykonywane cyklicznie.

Podsumowanie / kluczowe wnioski

  • CVE-2025-64155 to krytyczna podatność FortiSIEM umożliwiająca unauth RCE i typowo root w wyniku łańcucha błędów/konfiguracji.
  • Publiczny exploit/PoC znacząco zwiększa presję na szybkie działania obronne.
  • Najważniejsze kroki: aktualizacja do wersji naprawionych + odcięcie/ograniczenie TCP/7900 + szybki hunting w logach phMonitor.

Źródła / bibliografia

  1. BleepingComputer – informacja o upublicznieniu exploitu/PoC, mitigacji (port 7900) i wskazówkach dot. logów. (BleepingComputer)
  2. Horizon3.ai – techniczny write-up łańcucha: phMonitor → elastic_test_url.sh → argument injection do curl → zapis pliku → eskalacja do roota. (Horizon3.ai)
  3. Tenable – podsumowanie ryzyka, kontekst oraz tabela wersji podatnych/naprawionych. (Tenable®)
  4. NVD (NIST) – opis CVE i zakresy podatnych wersji. (NVD)