Archiwa: LLM - Strona 6 z 9 - Security Bez Tabu

VoidLink: cloud-native framework malware dla Linuksa, który (prawdopodobnie) powstał „prawie w całości” z pomocą AI

Wprowadzenie do problemu / definicja zagrożenia

VoidLink to zaawansowany, „cloud-first” framework malware dla Linuksa zaprojektowany pod długotrwały, dyskretny dostęp do środowisk chmurowych i kontenerowych (Kubernetes/Docker). Z perspektywy obrońców najważniejsze jest to, że nie wygląda jak typowy „jednofunkcyjny trojan” – bardziej przypomina kompletne C2/post-exploitation narzędzie z loaderami, implantami, mechanizmami rootkit oraz rozbudowanym systemem wtyczek.

W styczniu 2026 temat zyskał dodatkowy ciężar: Check Point Research wskazuje na rzadko spotykane dowody sugerujące, że znacząca część rozwoju VoidLink mogła zostać wykonana w trybie „AI-driven development” (agent + specyfikacje + sprinty), co radykalnie skraca czas tworzenia złożonych narzędzi ofensywnych.


W skrócie

  • Cel i środowisko: Linux w chmurze i kontenerach; rozpoznawanie dostawcy chmury oraz kontekstu (K8s/Docker) i dopasowanie zachowania.
  • Architektura: loader 2-etapowy + implant + in-memory plugin system (ponad 30 modułów; panel wskazywał ok. 37 wtyczek).
  • Stealth i rootkity: LD_PRELOAD / LKM / eBPF – wybór techniki zależny od wersji kernela i „postury” środowiska.
  • C2/łączność: wiele kanałów (m.in. HTTP/HTTPS, DNS, ICMP) oraz mechanizmy kamuflażu ruchu; w próbkach widać też kierunek „mesh/P2P”.
  • AI w wytwarzaniu: Check Point opisuje metodykę SDD (Spec Driven Development) i artefakty po narzędziu TRAE SOLO; THN i Sysdig przytaczają dodatkowe sygnały „LLM-owego” boilerplate’u.
  • Status: brak potwierdzonych infekcji „w realu” w momencie publikacji analiz; wygląda na projekt w fazie intensywnego rozwoju.

Kontekst / historia / powiązania

  • Wykrycie: Check Point Research trafił na próbki w grudniu 2025; część binariów zawierała artefakty developerskie (np. symbole debug), co sugerowało buildy „w trakcie” a nie masowo wdrożone malware.
  • Atrybucja (ostrożnie): w raportach pojawia się wątek środowiska developerskiego powiązanego językowo/operacyjnie z Chinami, ale bez twardego przypisania do konkretnej grupy.
  • Tempo rozwoju: Check Point wskazuje, że narzędzie urosło do ~88 tys. linii kodu do początku grudnia 2025; THN podkreśla „pierwszy funkcjonalny implant” w czasie krótszym niż tydzień.
  • „Wgląd w warsztat”: kluczowe w tej historii jest to, że badacze mieli wyjątkowy wgląd w artefakty planowania i budowy (m.in. przez błędy OPSEC autora i wyciek plików).

Analiza techniczna / szczegóły luki

Poniżej najważniejsze elementy „tradecraftu” VoidLink, z perspektywy obrony chmury i Linuksa.

1) Cloud-first rozpoznanie i działania w kontenerach

VoidLink potrafi identyfikować popularnych dostawców chmury (m.in. AWS, Azure, GCP, Alibaba, Tencent) i pobierać dane z mechanizmów metadata/instancji. Dodatkowo wykrywa, czy działa w Dockerze lub w podzie Kubernetes, a następnie dobiera moduły post-exploitation (np. pod kątem eksfiltracji sekretów, prób „container escape”, ruchu lateralnego).

2) Modularność: Plugin API inspirowane Cobalt Strike

Check Point opisuje architekturę z własnym Plugin API inspirowanym podejściem Beacon Object Files (BOF). Wtyczki są ładowane w runtime i wykonywane in-memory, co sprzyja „cichym” operacjom i ogranicza artefakty na dysku. Kategorie modułów obejmują m.in. recon, cloud/container, credential harvesting, persistence, anti-forensics, lateral movement.

3) Rootkity i ukrywanie: LD_PRELOAD, LKM oraz eBPF

VoidLink ma „rootkit-style capabilities” w kilku wariantach:

  • LD_PRELOAD (user-mode hooking),
  • LKM (kernel module),
  • eBPF (hooking ścieżek w sposób lepiej dopasowany do nowszych, „utwardzonych” systemów).

Mechanizm doboru techniki zależy od kernela i dostępnych funkcji; celem jest m.in. ukrywanie procesów, plików i socketów, a także maskowanie samych komponentów.

4) C2 i kamuflaż ruchu

VoidLink obsługuje wiele transportów (HTTP/1.1, HTTP/2, WebSocket, DNS, ICMP) oraz warstwy kamuflażu (udawanie „legitnego” ruchu, pakowanie danych w obiekty przypominające treści webowe/grafiki itp.). W kodzie widać też kierunek rozwoju w stronę mesh/P2P.

5) Adaptive stealth i OPSEC: „ryzyko” środowiska wpływa na zachowanie

Jedna z mocniejszych cech: po starcie malware ma enumerować zabezpieczenia (np. EDR/hardening), wyliczać risk score i na tej podstawie modyfikować agresywność działań (np. wolniejsze skanowanie w środowisku monitorowanym). Do tego dochodzą: runtime code encryption, mechanizmy anty-debug, integralność runtime oraz self-deletion przy wykryciu manipulacji.

6) „Server-Side Rootkit Compilation” (Sysdig)

Sysdig zwraca uwagę na element, który rozwiązuje klasyczny problem LKM rootkitów: portowalność względem wersji kernela. Według analizy, serwer C2 ma budować moduły kernela „na żądanie” pod konkretną wersję kernela ofiary (SRC). To może znacząco podnieść skuteczność w heterogenicznych flotach linuksowych w chmurze.


Praktyczne konsekwencje / ryzyko

Dla większości organizacji ryzyko nie sprowadza się do „jeszcze jednego malware”, tylko do możliwego przejęcia warstwy sterującej chmurą:

  • Kradzież poświadczeń i sekretów (cloud creds, tokeny, klucze, dane do repozytoriów/SCM typu Git) → ryzyko kompromitacji CI/CD, „secrets sprawl” i dostępu do kodu.
  • Trwała obecność w klastrach i node’ach dzięki persistence + ukrywaniu (rootkit/eBPF/LKM) oraz adaptacji do monitoringu.
  • Cichy post-exploitation w K8s/Docker (recon, eskalacje, potencjalne ucieczki z kontenera) → dostęp do workloadów i danych.
  • Zmiana ekonomii ataku dzięki AI: jeśli Check Point ma rację, bariera wejścia dla budowy „pełnego frameworka” spada – pojedynczy actor może iterować szybciej, niż zespoły defensywne aktualizują detekcje i polityki.

Jednocześnie warto trzymać w głowie fakt, że w analizach na styczeń 2026 nie ma potwierdzonych, masowych infekcji w środowiskach produkcyjnych – ale projekt wygląda jak „prawie gotowy” ekosystem C2.


Rekomendacje operacyjne / co zrobić teraz

Poniżej lista działań, które mają sens nawet wtedy, gdy VoidLink nie jest (jeszcze) „w wild”.

1) Detekcja runtime dla Linuksa i kontenerów

  • Postaw na runtime monitoring (syscall/activity-based), bo część technik jest „fileless” lub ukrywa artefakty na dysku. Sysdig podkreśla, że mimo zaawansowania zachowania na poziomie syscalls są widoczne dla narzędzi klasy runtime (np. Falco).
  • W K8s: reguły na nietypowe exec w kontenerach, dostęp do socketów dockera, nietypowe mounty, operacje na /proc, manipulacje BPF, ładowanie modułów kernela.

2) Ograniczenie „blast radius” w chmurze

  • Przejrzyj IAM: minimalne uprawnienia, krótkie TTL tokenów, rotacja kluczy, rozdzielenie ról CI/CD i adminów.
  • Uszczelnij dostęp do instance metadata (IMDS/metadata proxy), bo VoidLink aktywnie pyta o dane środowiska chmurowego.
  • Zredukuj ekspozycję sekretów: używaj menedżerów sekretów (i audytuj, gdzie lądują w env/args).

3) Twarde kontrole na hoście

  • Rozważ ograniczenia dla eBPF i ładowania modułów (tam, gdzie to możliwe operacyjnie).
  • Hardening: kontrola integralności, ograniczenie narzędzi developerskich na serwerach produkcyjnych, monitoring zmian w usługach/systemd/cron (persistence).

4) Kontrola egress i anomalii C2

  • Monitoruj/ogranicz: DNS tunneling, nietypowe ICMP, WebSocket/HTTP2 do nieznanych destynacji. VoidLink ma wiele kanałów C2 i kamuflaż ruchu, więc „allow-all egress” w chmurze to proszenie się o kłopoty.

5) Przygotuj proces IR „pod cloud-native”

  • Playbook na incydent w K8s (izolacja node/pod, snapshoty, artefakty runtime, eksport audit logs).
  • Zbieraj dane, które przetrwają anti-forensics (telemetria runtime, logi z warstwy kontrolnej chmury).

Różnice / porównania z innymi przypadkami

  • VoidLink vs „klasyczne Linux malware”: tu mamy platformę C2 + post-exploitation z pluginami, dashboardem operatorskim i adaptacją do cloud/K8s – to bardziej „Linuxowy odpowiednik” ekosystemów znanych z Windows.
  • Inspiracje Cobalt Strike: podobieństwo jest jawne w warstwie API/wtyczek (BOF-like). To ważne, bo pokazuje przenoszenie sprawdzonych wzorców ofensywnych do chmury opartej o Linuksa.
  • AI-assisted malware (nowa jakość): Check Point argumentuje, że wcześniejsze „AI malware” bywało niskiej jakości lub wtórne, a VoidLink ma być pierwszym dobrze udokumentowanym przypadkiem, gdzie AI przyspieszyło budowę złożonego, oryginalnego frameworka przy udziale kompetentnego twórcy.

Podsumowanie / kluczowe wnioski

VoidLink to sygnał ostrzegawczy w dwóch wymiarach: (1) technicznie – bo łączy cloud awareness, pluginową architekturę i rootkity (LD_PRELOAD/LKM/eBPF) z wielokanałowym C2; (2) metodycznie – bo według Check Point znacząca część wytwarzania mogła być „napędzana” przez podejście agentowe (SDD + sprinty + automatyzacja), co skraca cykl tworzenia ofensywnych platform.

Dobra wiadomość: w momencie publikacji analiz (styczeń 2026) nie ma twardych dowodów na szerokie użycie w atakach. Zła: projekt wygląda jak „prawie gotowy” i może zostać szybko dopięty do kampanii szpiegowskich, kradzieży sekretów w chmurze lub działań supply-chain.


Źródła / bibliografia

  1. Check Point Research – „Unveiling VoidLink – A Stealthy, Cloud-Native Linux Malware Framework” (13.01.2026). (Check Point Research)
  2. Sysdig Threat Research – „VoidLink threat analysis: Sysdig discovers C2-compiled kernel rootkits” (16.01.2026). (sysdig.com)
  3. Check Point Research – „VoidLink: Evidence That the Era of Advanced AI-Generated Malware Has Begun” (20.01.2026). (Check Point Research)
  4. The Hacker News – „VoidLink Linux Malware Framework Built with AI Assistance Reaches 88,000 Lines of Code” (21.01.2026). (The Hacker News)
  5. SecurityWeek – „VoidLink Linux Malware Framework Targets Cloud Environments” (15.01.2026). (SecurityWeek)

ChainLeak w Chainlit: dwie luki (CVE-2026-22218 i CVE-2026-22219) mogą wyciekać pliki, sekrety i dane z infrastruktury AI

Wprowadzenie do problemu / definicja luki

Chainlit to popularny, otwartoźródłowy framework w Pythonie do budowania aplikacji konwersacyjnych (chatbotów i interfejsów dla agentów/LLM), często integrowany z ekosystemem narzędzi LLM. Zafran Labs opisał dwie podatności wysokiej wagi (zbiorczo nazywane „ChainLeak”), które w pewnych konfiguracjach mogą prowadzić do ujawnienia plików z serwera oraz do SSRF (Server-Side Request Forgery), czyli wykonywania żądań sieciowych z wnętrza serwera aplikacji do zasobów wewnętrznych (w tym endpointów metadanych chmurowych).


W skrócie

  • Dotknięte wersje: Chainlit < 2.9.4 (łatka w 2.9.4).
  • CVE-2026-22218 (arbitrary file read): uwierzytelniony klient może doprowadzić do skopiowania wskazanego pliku do swojej „sesji” i następnie pobrać go po identyfikatorze (m.in. przez endpoint /project/file/<chainlitKey>).
  • CVE-2026-22219 (SSRF): w konfiguracji z backendem warstwy danych opartym o SQLAlchemy uwierzytelniony klient może podać kontrolowany url, który serwer pobierze metodą HTTP GET, co umożliwia sięgnięcie do usług wewnętrznych i/lub metadanych chmurowych.
  • Skutek biznesowy: wyciek sekretów (np. kluczy API), danych aplikacji i potencjalnie danych innych użytkowników w środowiskach współdzielonych.

Kontekst / historia / powiązania

W aplikacjach opartych o LLM typowe „stare” klasy podatności webowych (IDOR, SSRF, file read) są szczególnie groźne, bo te systemy:

  • często działają internet-facing (boty wsparcia, portale dla klientów),
  • trzymają sekrety do modeli/agentów (API keys), konektory do baz danych i zasobów firmowych,
  • bywają wielowarstwowe (UI → orkiestracja → narzędzia → dane), co zwiększa powierzchnię ataku.

Zafran wskazuje, że podatności zostały potwierdzone w rzeczywistych, publicznie dostępnych wdrożeniach.


Analiza techniczna / szczegóły luki

CVE-2026-22218 — Arbitrary File Read przez „element update flow”

Z opisu podatności wynika następujący łańcuch:

  1. Uwierzytelniony klient wysyła spreparowany „Element” z kontrolowaną ścieżką (path).
  2. Serwer kopiuje wskazany plik do obszaru sesji atakującego.
  3. Serwer zwraca identyfikator (np. chainlitKey), który pozwala pobrać treść pliku przez API (w opisie pada ścieżka /project/file/<chainlitKey>).

Dlaczego to jest groźne w AI-app?
Jeśli proces Chainlit ma uprawnienia do odczytu wrażliwych plików (konfiguracje, klucze, cache, logi), atakujący może sukcesywnie „wydzierać” informacje z hosta.

CVE-2026-22219 — SSRF przez url w elementach (SQLAlchemy data layer)

Ten wektor dotyczy sytuacji, gdy aplikacja używa backendu warstwy danych opartego o SQLAlchemy. Mechanizm (z perspektywy opisu) wygląda tak:

  1. Atakujący (uwierzytelniony) tworzy element z kontrolowanym polem url.
  2. Logika serwera pobiera zawartość spod tego URL (HTTP GET) „z wnętrza” infrastruktury serwera.
  3. Odpowiedź może zostać zapisana w skonfigurowanym storage providerze, co ułatwia eksfiltrację.

W praktyce SSRF bywa wykorzystywane do:

  • skanowania usług wewnętrznych (panele admin, Redis/Elastic, wewnętrzne API),
  • uderzenia w cloud metadata endpoints (np. poświadczenia ról/instancji), co bywa początkiem eskalacji w chmurze.

Praktyczne konsekwencje / ryzyko

Najbardziej „nośne” scenariusze ryzyka w kontekście Chainlit/LLM to:

  • Wyciek sekretów i konfiguracji (zmienne środowiskowe, pliki .env, konfiguracje konektorów) – Zafran wskazuje m.in. możliwość odczytu /proc/self/environ jako przykład pozyskania wrażliwych wartości.
  • Wyciek danych aplikacyjnych: logi, cache, artefakty sesji, pliki tymczasowe – szczególnie jeśli serwer pracuje na wspólnym hoście/klastrze i ma szerokie uprawnienia.
  • Ryzyko w środowiskach multi-tenant: jeśli aplikacja przechowuje treści promptów/odpowiedzi w warstwach cache/plikach, file read może prowadzić do ujawnienia danych innych użytkowników.
  • SSRF jako „pomost” do chmury: dostęp do metadanych instancji lub wewnętrznych usług może skończyć się przejęciem uprawnień i ruchem bocznym (lateral movement).

Warto podkreślić: oba CVE wymagają uwierzytelnionego klienta, więc najczęściej nie jest to „drive-by” bez logowania. Z drugiej strony, w realnych wdrożeniach często istnieją konta o niskim poziomie zaufania (np. self-service), integracje SSO, konta testowe lub źle skonfigurowane role — i to zwykle wystarcza, by podatność stała się praktycznie wykorzystywalna.


Rekomendacje operacyjne / co zrobić teraz

1) Patch management (najważniejsze)

  • Zaktualizuj Chainlit do wersji 2.9.4 lub nowszej (to wersja wskazana jako naprawiająca problem).

2) Zmniejsz skutki, jeśli nie możesz patchować natychmiast

  • Ogranicz ekspozycję: jeśli to możliwe, zdejmij instancję z publicznego internetu (VPN / allowlista / reverse proxy z MFA). (To dobra praktyka dla paneli LLM i aplikacji wewnętrznych, nawet niezależnie od tej konkretnej luki.)
  • Zasada najmniejszych uprawnień dla procesu: uruchamiaj usługę na użytkowniku systemowym bez dostępu do katalogów z sekretami; rozważ kontenery z read-only FS tam, gdzie da się. (Zmniejsza to realny „zasięg” arbitrary file read.)
  • Egress filtering dla serwera (firewall/SG/NACL): ogranicz ruch wychodzący tylko do niezbędnych domen/usług (to kluczowe w obronie przed SSRF).
  • Ochrona metadanych chmurowych: w zależności od chmury i architektury — blokuj dostęp do adresów metadanych z poziomu aplikacji lub wymagaj nowszych mechanizmów autoryzacji (np. tokenów dla metadanych), by SSRF nie mógł pobrać poświadczeń „za darmo”.

3) Detekcja i monitoring

  • Przejrzyj logi pod kątem nietypowych żądań związanych z tworzeniem/aktualizacją „elementów” oraz pobieraniem plików po identyfikatorach.
  • Monitoruj nietypowy ruch wychodzący HTTP z hostów aplikacji (kierunki wewnętrzne, nietypowe hosty, próby dostępu do metadanych).

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

To dobry przykład, że „AI framework” nie musi mieć „AI-specyficznej” podatności, by doprowadzić do poważnego incydentu. W praktyce:

  • Arbitrary file read w aplikacji LLM to często natychmiastowy wyciek: kluczy API do modeli, konfiguracji narzędzi (tooling), poświadczeń do baz i integracji.
  • SSRF w środowisku chmurowym jest klasycznym wektorem do pozyskania tokenów/poświadczeń i eskalacji.

Wniosek operacyjny: traktuj warstwę aplikacji LLM jak każdą krytyczną aplikację webową — z pełnym zestawem kontroli (hardening, segmentacja, egress, least privilege), bo „nowoczesny” stos technologiczny dziedziczy „klasyczne” ryzyka.


Podsumowanie / kluczowe wnioski

  • Chainlit < 2.9.4 jest narażony na dwie podatności (CVE-2026-22218, CVE-2026-22219), które mogą prowadzić do wycieku plików i/lub SSRF.
  • W realnych wdrożeniach AI ryzyko jest podbite przez obecność sekretów (API keys), konektorów do danych firmowych i częstą ekspozycję usług na internet.
  • Najszybsza i najpewniejsza redukcja ryzyka: upgrade do 2.9.4+, a dodatkowo ograniczenie egress i uprawnień procesu.

Źródła / bibliografia

  1. SecurityWeek — opis podatności i kontekst ekspozycji instancji w internecie. (SecurityWeek)
  2. Zafran Labs — „ChainLeak” (analiza techniczna, scenariusze eksfiltracji i wpływ na AI stack). (Zafran Security)
  3. GitHub Advisory Database — CVE-2026-22218 (arbitrary file read, warunki i wersje). (GitHub)
  4. GitHub Advisory Database — CVE-2026-22219 (SSRF, warunki dot. SQLAlchemy, wersje). (GitHub)
  5. Tenable — opis CVE-2026-22218 i przykładowe ścieżki/endpointy eksfiltracji. (Tenable®)

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)

Skanowanie otwartych endpointów LLM: „How many states are there in the United States?” jako sygnał rozpoznania

Wprowadzenie do problemu / definicja luki

Wraz z upowszechnieniem wdrożeń LLM (lokalnych i chmurowych) rośnie liczba usług wystawianych na Internet „na szybko”: bez uwierzytelnienia, z błędną konfiguracją reverse proxy, z domyślnymi ustawieniami CORS albo z niekontrolowanym ruchem wychodzącym. To nie jest pojedyncza luka CVE, tylko klasa ryzyk: nieautoryzowana ekspozycja endpointów LLM oraz nadużycia wynikające z błędnych konfiguracji pośredników (proxy).

Sygnałem, że ktoś „szuka otwartych LLM”, mogą być pozornie banalne zapytania. SANS Internet Storm Center pokazał przypadek, w którym honeypot rejestrował powtarzające się requesty z promptem: „How many states are there in the United States?” – traktowane jako rozpoznanie (recon) w celu wykrycia dostępnych, niechronionych usług LLM.

W skrócie

  • Atakujący prowadzą systematyczną enumerację publicznie dostępnych endpointów LLM i źle skonfigurowanych proxy, używając „bezpiecznych” promptów do fingerprintingu modelu.
  • GreyNoise opisało kampanię, w której w 11 dni wygenerowano 80 469 sesji i sondowano 73+ endpointów (formaty kompatybilne z OpenAI oraz Google Gemini).
  • W praktyce ryzyko dotyczy m.in. wdrożeń lokalnych (np. Ollama), gdy ktoś celowo lub przypadkiem wystawi API na sieć/Internet bez warstwy uwierzytelnienia. Ollama domyślnie nasłuchuje na 127.0.0.1:11434, ale można to zmienić zmienną OLLAMA_HOST — co bywa początkiem problemów, jeśli zabraknie kontroli dostępu.

Kontekst / historia / powiązania

Wzorzec jest znany z innych usług: najpierw ciche mapowanie powierzchni ataku, potem dopiero eksploatacja (lub „monetyzacja” dostępu). W przypadku LLM „monetyzacja” bywa nietypowa:

  • użycie cudzej infrastruktury do generowania odpowiedzi (koszty),
  • dostęp do danych przesyłanych w promptach (tajemnice, PII, fragmenty kodu),
  • wykorzystanie modelu jako „silnika” do dalszych działań (np. automatyzacja phishingu, analiza danych, generowanie złośliwych treści – zależnie od polityk i zabezpieczeń).

GreyNoise zwraca uwagę na aspekt fingerprintingu bez wzbudzania alertów: zamiast agresywnych payloadów stosuje się neutralne pytania (w tym to o liczbę stanów USA), by potwierdzić, że endpoint żyje i jaki model/format API obsługuje.

Analiza techniczna / szczegóły luki

1) Jak wygląda rozpoznanie „na drzwiach” LLM

W logach honeypotów pojawiają się żądania HTTP przypominające typowe wywołania „chat/completions” lub endpointów kompatybilnych z OpenAI. W przykładzie z SANS widać request JSON zawierający pole prompt oraz charakterystyczny, powtarzalny tekst pytania, a także automatyzujący User-Agent (np. skaner).

To działa, bo:

  • wiele wdrożeń kopiuje „de facto standard” formatów API,
  • odpowiedź modelu (lub same błędy) pozwalają odróżnić implementacje,
  • prompt jest na tyle neutralny, że często omija proste reguły detekcji.

2) Co mówi telemetryka GreyNoise

GreyNoise opisuje kampanię enumeracyjną, w której testowano zarówno OpenAI-compatible API, jak i formaty Google Gemini, obejmując szerokie spektrum rodzin modeli. Kluczowe jest to, że zapytania były „niewinne”, a celem najpewniej było ustalenie co odpowiada i jakim modelem.

3) Dlaczego Ollama i podobne wdrożenia są wrażliwe na „przypadkową ekspozycję”

Ollama to częsty wybór do uruchamiania modeli lokalnie. Problem zaczyna się, gdy ktoś:

  • ustawia OLLAMA_HOST na adres dostępny w sieci,
  • publikuje port przez router/tunnel,
  • stawia reverse proxy „na szybko” bez autoryzacji.

Dokumentacja potwierdza, że domyślnie Ollama wiąże się z 127.0.0.1:11434 (czyli lokalnie), ale można ją wystawić na sieć przez zmianę bind address. Jednocześnie lokalny dostęp do API nie wymaga uwierzytelnienia — co jest OK dla localhost, ale ryzykowne po ekspozycji na zewnątrz.

Praktyczne konsekwencje / ryzyko

  1. Nieautoryzowane użycie zasobów i koszty
    Jeśli endpoint/proxy daje dostęp do płatnych usług albo kosztownej infrastruktury GPU, atakujący mogą „po cichu” generować obciążenie.
  2. Wyciek danych z promptów i kontekstu
    LLM często przetwarza dane wrażliwe (fragmenty kodu, logi, opisy incydentów). Przy błędnej konfiguracji kontroli dostępu ryzyko wycieku rośnie.
  3. DoS i degradacja jakości usługi
    OWASP wprost wskazuje „Model Denial of Service” jako kategorię ryzyka: modele można przeciążyć ruchem lub drogimi zapytaniami, powodując przestoje i koszty.
  4. Ryzyka łańcucha dostaw i integracji
    Gdy LLM ma „wtyczki”, akcje lub integracje, rośnie stawka: OWASP wymienia m.in. „Insecure Plugin Design” i „Excessive Agency” jako typowe problemy wdrożeń LLM.

Rekomendacje operacyjne / co zrobić teraz

Poniżej zestaw działań, które w praktyce najszybciej redukują ryzyko enumeracji i nadużyć:

Warstwa sieciowa i ekspozycja

  • Nie wystawiaj endpointów LLM bezpośrednio na Internet. Jeśli musisz, rób to przez reverse proxy z silnym uwierzytelnieniem i ograniczeniami.
  • Ogranicz dostęp po IP/VPN/Zero Trust (preferowane: dostęp tylko z sieci firmowej lub przez tunel z MFA).
  • Rate limiting i ochrona przed skanowaniem na warstwie proxy/WAF (limity per IP/ASN, detekcja burstów, blokady na nietypowe UA).

Uwierzytelnienie i autoryzacja

  • Traktuj LLM jak każdy krytyczny backend API: API key / mTLS / OIDC.
  • W przypadku wdrożeń lokalnych pamiętaj, że brak auth jest normalny dla localhost, ale po zmianie bind address to już poważna luka konfiguracyjna.

Monitoring i detekcja

  • Dodaj reguły SIEM/SOAR pod kątem powtarzalnych, „niewinnych” promptów używanych do fingerprintingu (np. pytania faktograficzne w dużej skali). GreyNoise pokazało, że takie prompty występują masowo.
  • Loguj: źródłowe IP, ścieżki endpointów, czasy odpowiedzi, kody błędów, rozmiary payloadów, nagłówki (w tym UA).

Higiena wdrożeniowa (LLM security baseline)

  • Oprzyj checklistę o OWASP Top 10 for LLM Applications: w praktyce najbardziej „natychmiastowe” są kontrola outputów (LLM02), ochrona przed DoS (LLM04), ochrona danych wrażliwych (LLM06) oraz ograniczenie agency/integracji (LLM08).

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

Enumeracja LLM ≠ klasyczne skanowanie CVE.
W tradycyjnym skanowaniu szuka się konkretnej podatności i wersji. Tutaj często chodzi o:

  • wykrycie „czy to w ogóle jest LLM”,
  • jaki format API obsługuje,
  • czy stoi za tym płatna usługa/proxy,
  • czy są jakiekolwiek bariery (auth, limity, filtracja).

Dlatego „bezpieczne” prompty są sprytne: pozwalają mapować cele bez generowania oczywistych sygnatur exploitów.

Podsumowanie / kluczowe wnioski

  • Powtarzalne, neutralne pytania (np. o liczbę stanów USA) mogą być realnym wskaźnikiem reconnaissance pod otwarte endpointy LLM.
  • Kampanie enumeracyjne są prowadzone na dużą skalę i obejmują wiele rodzin modeli oraz formatów API.
  • Największy błąd operacyjny to wystawienie API bez uwierzytelnienia (szczególnie po zmianie bind address lub przez źle skonfigurowane proxy).
  • Sensowna „minimum viable security” dla LLM to: brak publicznej ekspozycji, silny auth, limity, monitoring oraz checklista OWASP LLM Top 10.

Źródła / bibliografia

  • SANS Internet Storm Center (Didier Stevens), wpis dziennika o rekonesansie przez prompt „How many states…”. (SANS Internet Storm Center)
  • GreyNoise: Threat Actors Actively Targeting LLMs (opis kampanii enumeracyjnej i charakterystycznych promptów). (greynoise.io)
  • OWASP Foundation: Top 10 for Large Language Model Applications (kategorie ryzyk LLM). (owasp.org)
  • Ollama Docs: FAQ (domyślne bindowanie do localhost, ekspozycja przez OLLAMA_HOST, proxy). (docs.ollama.com)
  • Ollama Docs: API Authentication (brak auth lokalnie; znaczenie po ekspozycji). (docs.ollama.com)

Reprompt: jedno kliknięcie wystarczało, by przejąć sesję Microsoft Copilot i wyprowadzić dane

Wprowadzenie do problemu / definicja luki

„Reprompt” to opisany przez Varonis Threat Labs łańcuch ataku na Microsoft Copilot (wariant konsumencki: Copilot Personal), w którym napastnik mógł wstrzyknąć polecenie do Copilota przez legalny link i doprowadzić do cichej eksfiltracji danych po jednym kliknięciu. Kluczowy element: Copilot akceptował prompt przekazany w parametrze URL q i wykonywał go automatycznie po załadowaniu strony, co (w połączeniu z obejściami zabezpieczeń) umożliwiało działanie „w imieniu” zalogowanego użytkownika.

Microsoft załatał problem w aktualizacjach z 13 stycznia 2026 (Patch Tuesday), a według opisu nie ma potwierdzonych dowodów masowego wykorzystania „in the wild” w momencie publikacji.


W skrócie

  • Mechanizm wejścia: phishingowy (lub podsunięty innym kanałem) link do Copilota z ukrytym promptem w parametrze q.
  • Dlaczego to groźne: 1 klik, bez wtyczek/connectorów, a atak mógł utrzymywać sterowanie nawet po zamknięciu karty Copilota.
  • Trik na guardraile: tzw. double-request (polecenie wykonania tej samej akcji dwa razy) oraz chain-request (kolejne instrukcje pobierane z serwera atakującego).
  • Status: załatane przez Microsoft (Patch Tuesday 13.01.2026); Varonis podaje, że środowiska Microsoft 365 Copilot (enterprise) nie były objęte tym konkretnym scenariuszem.

Kontekst / historia / powiązania

Reprompt wpisuje się w szerszą klasę zagrożeń dla asystentów LLM: indirect prompt injection (pośrednie wstrzyknięcie poleceń), gdzie „instrukcje” dostarcza nie sam użytkownik, lecz dane z zewnątrz (np. link, treść strony, dokument). Microsoft wprost opisuje, że skutkiem takich ataków bywa m.in. eksfiltracja danych i wykonywanie niezamierzonych akcji z uprawnieniami użytkownika, dlatego promuje podejście „defense-in-depth” (m.in. izolowanie danych nieufnych, mechanizmy detekcji typu Prompt Shields, kontrola egress i governance).


Analiza techniczna / szczegóły luki

Varonis rozbił Reprompt na trzy kluczowe techniki, które razem tworzyły stabilny łańcuch eksfiltracji:

1) Parameter 2 Prompt (P2P) injection – q w URL

Copilot potrafił przyjąć prompt w parametrze q (np. copilot.microsoft.com/?q=<PROMPT>), a następnie automatycznie go wykonać po otwarciu strony. To „feature” UX-owy, ale jednocześnie gotowy wektor do nadużyć, bo ofiara widzi „legalny” link do usługi Microsoft.

2) Double-request technique – obejście guardrails przez „zrób to dwa razy”

Według opisu badaczy, zabezpieczenia Copilota (np. zasada „nie pobieraj URL bez uzasadnienia”, redakcja wrażliwych danych) w praktyce miały działać głównie dla pierwszego żądania. Badacze uzyskali obejście, każąc Copilotowi powtarzać akcję (wywołanie/fetch) dwukrotnie – w przykładzie część wrażliwa była usuwana w pierwszym podejściu, ale przechodziła w drugim.

3) Chain-request technique – sterowanie „z serwera” i eksfiltracja etapami

Najbardziej niebezpieczny element to „łańcuch” poleceń: po starcie z linku, Copilot był nakłaniany do pobrania kolejnych instrukcji z domeny atakującego (stage1 → stage2 → stage3…), a każda odpowiedź mogła być użyta do zbudowania następnego kroku. To utrudnia:

  • ocenę szkody przez ofiarę (pierwszy prompt nie ujawnia pełnej intencji),
  • detekcję po stronie klienta (bo „prawdziwe” polecenia przychodzą później),
  • ograniczenie ilości wykradanych informacji (ataker adaptuje pytania).

Co mogło wyciec?

W scenariuszach przytaczanych w opisie pojawiają się m.in. pamięć/konwersacje Copilota, kontekst konta i informacje osobiste (np. aktywność, lokalizacja, wątki rozmów), zależnie od tego, do czego Copilot ma dostęp w danym kontekście.


Praktyczne konsekwencje / ryzyko

Największe ryzyko operacyjne wynika z kombinacji: 1 klik + legalny link + „niewidoczna” kontynuacja ataku. W praktyce to:

  • phishing nowej generacji: użytkownik nie wpisuje promptu, nie instaluje wtyczek, nie „zezwala” jawnie — tylko otwiera URL.
  • wyciek danych trudny do odtworzenia: instrukcje mogą być dostarczane dopiero po rozpoczęciu sesji, więc analiza „co dokładnie poszło” jest trudna.
  • ryzyko reputacyjne i compliance (zwłaszcza jeśli w Copilocie lądują dane wrażliwe), bo prompt injection omija typowy model „użytkownik świadomie pyta”.

Rekomendacje operacyjne / co zrobić teraz

Dla organizacji (IT/SecOps)

  1. Wymuś aktualizacje: upewnij się, że aktualizacje z 13.01.2026 i kolejne są wdrożone na stacjach (Windows/Edge i komponenty Copilota).
  2. Higiena linków i szkolenia: dodaj do awareness prosty pattern: link do Copilota z długim ?q=... to sygnał ostrzegawczy (nawet jeśli domena jest prawdziwa).
  3. Kontrola egress / proxy: łańcuch ataku wymaga komunikacji z infrastrukturą atakera (pobieranie kolejnych instrukcji / „fetch URL”). Ograniczaj i monitoruj nietypowe połączenia do świeżych domen, szczególnie gdy inicjują je procesy przeglądarki w kontekście sesji Copilota.
  4. Warstwy ochrony dla prompt injection: jeśli używasz rozwiązań Microsoft, rozważ mechanizmy z rodziny „Prompt Shields” i podejście defense-in-depth (izolowanie danych nieufnych, polityki dostępu, audyt, DLP).

Dla użytkowników

  • Aktualizuj system i przeglądarkę, a do Copilota wchodź z własnego skrótu, nie z linków z wiadomości.
  • Jeśli Copilot otwiera się z automatycznie wypełnionym promptem, przeczytaj go przed wykonaniem (właśnie na tym żeruje ten wektor).

Różnice / porównania z innymi przypadkami

  • Reprompt (ten przypadek): „one-click” przez URL q, nacisk na utrzymanie kontroli po starcie i „prompt chaining” z serwera.
  • Klasa indirect prompt injection ogólnie: atakujący „przemyca instrukcje” w danych wejściowych, a skutkiem często jest data exfiltration (np. przez generowanie URL-i/znaczników, wywołania narzędzi, itp.). Microsoft opisuje to jako trudne do wyeliminowania i wymagające wielu warstw obrony.

Podsumowanie / kluczowe wnioski

Reprompt pokazał, że nawet „wygodne” funkcje typu prefill prompt z URL mogą stać się krytycznym wektorem, jeśli da się je połączyć z obejściem guardrails (double-request) i sterowaniem sekwencyjnym (chain-request). Atak był szczególnie niebezpieczny, bo minimalizował sygnały dla użytkownika i utrudniał detekcję po stronie endpointu. Z perspektywy bezpieczeństwa to kolejny argument, by traktować asystentów AI jak nową powierzchnię ataku, wymagającą polityk, monitoringu i kontroli przepływu danych — nie tylko „ustawień prywatności”.


Źródła / bibliografia

  1. BleepingComputer — opis ataku i wektora q (14.01.2026). (BleepingComputer)
  2. Varonis Threat Labs — analiza Reprompt (P2P, double-request, chain-request; aktualizacja 14.01.2026). (varonis.com)
  3. Microsoft MSRC — „How Microsoft defends against indirect prompt injection attacks” (29.07.2025) – kontekst i defense-in-depth. (Microsoft)
  4. Malwarebytes — potwierdzenie łatki w Patch Tuesday i kontekst ryzyka (15.01.2026). (Malwarebytes)
  5. SecurityWeek — podsumowanie technik i skutków (15.01.2026). (securityweek.com)

Hakerzy polują na źle skonfigurowane proxy, żeby „za darmo” korzystać z płatnych LLM (OpenAI, Anthropic, Gemini i inne)

Wprowadzenie do problemu / definicja luki

Wraz z boomem na GenAI, wiele firm stawia „bramki” (reverse proxy, API gateway, internal proxy) przed modelami językowymi — żeby ujednolicić dostęp, logować ruch, ukryć klucze API albo kierować zapytania do różnych dostawców. Problem zaczyna się wtedy, gdy takie proxy jest wystawione do internetu bez odpowiedniej kontroli dostępu (albo ma zbyt liberalną konfigurację routingu). W praktyce staje się otwartą furtką: każdy może wysyłać żądania, a rachunek i limity zużywa właściciel infrastruktury.

Na początku stycznia 2026 r. GreyNoise opisało kampanie, w których aktorzy (w tym prawdopodobnie „szarzy” researcherzy, ale też profesjonalny threat actor) masowo skanowali i testowali endpointy powiązane z LLM-ami, polując właśnie na takie błędy konfiguracyjne.


W skrócie

  • GreyNoise zarejestrowało 91 403 sesje ataków na swojej infrastrukturze honeypot (Ollama) między październikiem 2025 a styczniem 2026 i wyodrębniło dwie osobne kampanie.
  • Kampania #1: SSRF (server-side request forgery) — wymuszanie połączeń wychodzących z serwera ofiary (m.in. przez mechanizmy „model pull” i integracje webhook).
  • Kampania #2: enumeracja i fingerprinting — od 28 grudnia 2025 dwa IP metodycznie sprawdzały 73+ endpointy modeli, generując 80 469 sesji w 11 dni, testując formaty zgodne z OpenAI i Google Gemini.
  • Celem jest wykrycie źle zabezpieczonych proxy / bramek, które pozwalają uzyskać dostęp do komercyjnych API LLM (czyli realnie: ktoś inny płaci za tokeny).

Kontekst / historia / powiązania

Ten wektor nie jest „nowy” jako idea: źle skonfigurowane reverse proxy potrafi ujawnić dostęp do zasobów, które miały być wewnętrzne (np. inne hosty w sieci, metadane, usługi lokalne), a także bywa nadużywane jako „pośrednik” do wykonywania żądań w imieniu serwera. To klasyczny fundament pod SSRF i nadużycia routingu.

Nowością jest to, że LLM-y są kosztowym zasobem (tokeny, limity, budżety) oraz coraz częściej stoją za nimi automaty (agenty, workflow, funkcje), więc nawet „niewinne” zapytania testowe mogą być wstępem do:

  • kradzieży budżetu (token draining),
  • pivotu do systemów wewnętrznych (jeśli gateway ma dodatkowe integracje),
  • eskalacji do wycieku danych (jeśli proxy ma dostęp do RAG/źródeł).

Dodatkowo Cisco zwraca uwagę, że wiele wdrożeń LLM bywa publicznie wystawionych przez pośpiech, kopiowanie przykładów konfiguracji i brak twardych kontroli dostępu (na przykładzie serwerów LLM wykrywanych przez Shodan).


Analiza techniczna / szczegóły luki

1) Kampania SSRF: „zmuś serwer, żeby zadzwonił do mnie”

GreyNoise opisuje kampanię aktywną od października 2025 do stycznia 2026, w której atakujący próbowali potwierdzać SSRF poprzez OAST (out-of-band application security testing) i domeny callback. W praktyce chodzi o to, żeby serwer ofiary wykonał połączenie wychodzące do kontrolowanej infrastruktury — co potwierdza podatność.

W raporcie pojawiają się m.in.:

  • wykorzystywanie mechanizmu Ollama model pull do podkładania URL-i rejestru,
  • współwystępujące próby przez integracje webhook (np. parametry typu MediaUrl w kontekście SMS/MMS),
  • charakterystyka automatyzacji (fingerprinty JA4, wskazania na narzędzia w stylu Nuclei).

GreyNoise ocenia, że ta część wygląda jak aktywność „research/bug bounty”, ale skala i timing (pik w okresie świątecznym) sugerują „grey-hat pushing boundaries”.

2) Kampania enumeracyjna: „zbuduj listę otwartych bramek do płatnych modeli”

Druga kampania jest bardziej niepokojąca operacyjnie. Od 28 grudnia 2025 dwa adresy IP wykonywały metodyczne próby na 73+ endpointach modeli, testując formaty API kompatybilne z OpenAI i Gemini. W 11 dni zrobiły 80 469 sesji.

Co istotne, testy były „ciche” — proste prompt-y („hi”, puste wejście, pytania faktograficzne), żeby:

  • zidentyfikować, czy endpoint odpowiada,
  • sfingerprintować, jaki model stoi za proxy,
  • nie wywołać alarmów SOC/abuse detection.

GreyNoise wiąże tę infrastrukturę ze „znanymi” aktywnościami skanowania i eksploatacji CVE, co sugeruje, że enumeracja ma zasilić większy pipeline (najpierw mapa, potem nadużycie/eksploatacja).

Dlaczego proxy jest tu kluczowe?

W wielu organizacjach wygląda to tak:

  • reverse proxy/gateway ma ważny klucz API do OpenAI/Anthropic itp.,
  • na zewnątrz wystawia „własny” endpoint (często kompatybilny z OpenAI),
  • jeśli brakuje authN/authZ, ograniczeń tras lub izolacji tenantów, atakujący może używać tego endpointu jak „darmowej karty” do płatnego API.

To jest klasyczna konsekwencja złej konfiguracji reverse proxy: „proxy robi to, o co prosisz”, jeśli nie ma bezpiecznych guardrail’i.


Praktyczne konsekwencje / ryzyko

  1. Koszty i limity (token theft / budget drain)
    Najbardziej bezpośredni efekt: nieautoryzowane zapytania spalają tokeny, limity rate i budżety — często zanim ktoś zauważy.
  2. Ryzyko incydentu danych (jeśli gateway ma dostęp do RAG lub narzędzi)
    Samo „hello” nic nie kradnie. Ale jeśli ten sam endpoint ma dostęp do: wewnętrznych konektorów, retrieval, funkcji/agentów, logów rozmów — to rośnie ryzyko wycieku lub nadużyć (np. wymuszanie działań przez integracje).
  3. Sygnał, że jesteś „na liście”
    GreyNoise podkreśla, że tak duża enumeracja to inwestycja; mapowanie infrastruktury zwykle poprzedza realne nadużycie.
  4. Zgodność i reputacja
    Koszty to jedno, ale druga sprawa to audyt, raportowanie incydentów, ślady w logach i ryzyko, że twoje zasoby AI staną się „publicznym serwisem” bez twojej wiedzy.

Rekomendacje operacyjne / co zrobić teraz

Minimum bezpieczeństwa dla „AI gateway / LLM proxy”

  • Wymuś uwierzytelnianie (mTLS, OAuth2, signed JWT, API keys per klient/usługa) i autoryzację (policy per endpoint/model).
  • Nie wystawiaj kompatybilnych endpointów OpenAI „na świat” bez kontroli dostępu, nawet jeśli to „tylko test”.
  • Rate limiting + quota per klient/IP/token, osobno dla endpointów „model list / models” i „chat/completions”.

Twarde ograniczenia ruchu wychodzącego (SSRF)

  • Egress filtering: serwery LLM/proxy nie powinny móc łączyć się „gdziekolwiek w internet”.
  • Blokuj domeny OAST/callback na DNS (GreyNoise wskazuje wzorce .oast. jako istotne w kampanii SSRF).
  • Jeśli używasz Ollama/pull: ogranicz „model pulls” do zaufanych rejestrów.

Detekcja i monitoring

  • Alertuj na wzorce enumeracji: wiele endpointów modeli w krótkim czasie, nietypowe sekwencje „niewinnych promptów” i skok liczby sesji.
  • Monitoruj fingerprinty sieciowe, jeśli masz taką możliwość (GreyNoise opisuje użycie JA4 do identyfikacji automatyzacji).
  • Przejrzyj logi reverse proxy pod kątem:
    • nietypowych „OpenAI-compatible paths”,
    • prób listowania modeli,
    • powtarzalnych krótkich zapytań testowych.

Ramy kontrolne (żeby nie „zgubić” tego w backlogu)

W OWASP Top 10 dla aplikacji LLM temat nieautoryzowanego użycia, niewłaściwych kontroli oraz podatności wynikających z integracji i niebezpiecznych zachowań systemu przewija się wielokrotnie (np. ryzyka wokół nadużyć, DoS, ujawnień danych, supply chain i projektowania wtyczek/agentów). Traktuj te pozycje jako checklistę do przeglądu wdrożenia LLM.


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

  • Wycieki kluczy API: klasyka (klucz w repo/logach). Tu jest subtelniej: klucz może być dobrze ukryty, ale proxy jest otwarte i działa jak publiczna bramka.
  • Publicznie wystawione serwery LLM (self-hosted): inny wariant problemu, ale podobna przyczyna — wdrożenie „na szybko”, bez kontroli dostępu i segmentacji (Cisco opisuje, jak takie ekspozycje można masowo wykrywać).
  • SSRF „klasyczne” vs SSRF w ekosystemie GenAI: mechanika ta sama, ale konsekwencje szersze, bo pipeline AI często ma integracje i automatyzacje, a koszty LLM są bezpośrednio mierzalne (tokeny).

Podsumowanie / kluczowe wnioski

  • Od końcówki grudnia 2025 widać metodyczną enumerację endpointów LLM, ukierunkowaną na wykrycie źle skonfigurowanych proxy, które mogą dać dostęp do płatnych modeli kosztem ofiary.
  • Równolegle działa kampania SSRF, gdzie celem jest potwierdzanie podatności i kanału egress (callback).
  • Największe ryzyko „tu i teraz” to: koszty, limity, oraz potencjalny pivot w głąb środowiska, jeśli bramka AI jest spięta z danymi i narzędziami.
  • Obrona nie wymaga magii: authN/authZ na bramce, rate limit, egress filtering, blokady OAST, monitoring wzorców enumeracji.

Źródła / bibliografia

  1. BleepingComputer – opis kampanii i obserwacji GreyNoise (9 stycznia 2026). (BleepingComputer)
  2. GreyNoise – „Threat Actors Actively Targeting LLMs” (8 stycznia 2026), metryki, kampanie, IOCs i rekomendacje obrony. (GreyNoise)
  3. ProjectDiscovery – seria o nadużyciach reverse proxy (kontekst bezpieczeństwa i skutki błędnej konfiguracji). (ProjectDiscovery)
  4. Cisco Security – studium wykrywania publicznie wystawionych serwerów LLM (Ollama) i ryzyk wynikających z ekspozycji. (Cisco Blogs)
  5. OWASP – Top 10 dla aplikacji LLM (ramy ryzyk i kontroli bezpieczeństwa dla wdrożeń GenAI). (OWASP Foundation)

ZombieAgent: jak „zombifikować” ChatGPT i wykradać dane z konektorów oraz pamięci

Wprowadzenie do problemu / definicja luki

ZombieAgent to pokazowy łańcuch ataków typu indirect prompt injection (pośrednia iniekcja promptów), który – według badań Radware – pozwalał przejąć sterowanie nad zachowaniem ChatGPT w scenariuszach „agentowych”: gdy model ma dostęp do narzędzi (np. przeglądania WWW), integracji/konektorów (np. poczta, dysk, repozytoria) i/lub mechanizmów pamięci długoterminowej. Efekt: wyciek danych z usług podłączonych do ChatGPT, możliwość propagacji (rozsyłania ładunku dalej) oraz utrwalenia (persistence) przez manipulację zasadami zapisywanymi w pamięci.

Kluczowe jest to, że w pośredniej iniekcji promptów „polecenia” atakującego nie przychodzą wprost od użytkownika, tylko są ukryte w treści, którą agent ma przetworzyć (e-mail, dokument, plik). Jeśli agent potraktuje tę treść jak instrukcję, zaczyna działać „dla atakującego”.


W skrócie

  • Atak bazuje na złośliwych e-mailach i/lub plikach, które zawierają instrukcje dla AI ukryte w treści.
  • Celem jest eksfiltracja danych (np. z inboxa i książki adresowej) oraz obejście wcześniejszych ograniczeń (m.in. zakazu modyfikowania URL).
  • W wariancie „persistence” atakujący dąży do zapisania reguł w pamięci długoterminowej, by agent wykonywał złośliwe działania w kolejnych rozmowach.
  • Radware raportował podatności wcześniej (ShadowLeak), a ZombieAgent pokazał „drugą rundę”: obejście poprawek; według doniesień luka była zgłoszona 26 września 2025 i załatana 16 grudnia 2025.

Kontekst / historia / powiązania

ZombieAgent jest rozwinięciem szerszego problemu: agentic AI zwiększa powierzchnię ataku, bo model nie tylko „pisze tekst”, ale czyta dane z systemów i wykonuje akcje. Radware wcześniej opisywał technikę ShadowLeak, w której model wyciekał dane przez dopisywanie ich do parametrów URL — co OpenAI miało ograniczyć m.in. przez blokadę modyfikowania linków.

ZombieAgent pokazuje, że nawet po wprowadzeniu takich guardrails można zbudować obejście, jeśli atakujący zmieni sposób „kodowania” danych i kanał wycieku.


Analiza techniczna / szczegóły luki

Radware opisał kilka scenariuszy, które łączy wspólny mianownik: agent dostaje do przetworzenia treść kontrolowaną przez atakującego i wykonuje ukryte instrukcje.

1) Eksfiltracja przez „pre-zbudowane” URL (obejście blokady modyfikacji linków)

Wg opisu, wcześniejsza obrona polegała na tym, że ChatGPT „nie może modyfikować dostarczonych URL” (np. dopisując wykradane dane jako parametry). ZombieAgent omija to, podając z góry przygotowaną listę URL-i odpowiadających literom/cyfrom/spacjom. Agent ma:

  1. odnaleźć w skrzynce ofiary wrażliwy fragment (np. token, adres, dane kontaktowe),
  2. „znormalizować” go,
  3. a potem „wyciekać” znak po znaku, wywołując odpowiedni URL dla kolejnych znaków.
    Ponieważ agent nie „modyfikuje” linku (tylko wybiera z listy), ograniczenie przestaje pomagać.

2) Złośliwy plik + kanały wycieku (serwer + renderowanie Markdown)

Drugi wektor to złośliwe instrukcje w pliku udostępnionym ChatGPT, które skłaniają agenta do eksfiltracji danych zarówno „po stronie usługi”, jak i przez mechanizmy renderowania (np. elementy w treści rozmowy).

3) Propagacja: atak „robi się sam” w ekosystemie e-mail

W wariancie propagacji agent najpierw pozyskuje z inboxa ostatnie adresy e-mail, a następnie atakujący rozsyła payload do kolejnych osób, zwiększając zasięg kampanii. To klasyczny „worm-like” efekt, tylko że paliwem są: konektory + automatyzacja pracy agenta.

4) Persistence przez pamięć długoterminową (Memory)

Najbardziej niepokojący element to „utrwalenie”: złośliwy plik ma instruować agenta, by dodał do pamięci trwałe reguły (np. priorytetyzowanie określonych kroków przed odpowiedzią). W opisie SecurityWeek: normalnie konektory i pamięć nie powinny działać razem w tym samym czacie, ale poprzez wstrzyknięte „reguły pamięci” agent może zawsze najpierw wykonać kroki atakującego (np. odczyt/wyciek), a dopiero potem rozmawiać z użytkownikiem.


Praktyczne konsekwencje / ryzyko

Najważniejsze ryzyka dla firm i użytkowników, jeśli podobne klasy błędów występują w agentach:

  • Wyciek danych z aplikacji podłączonych konektorami: poczta, dyski, narzędzia dev/PM (repozytoria, tickety), komunikatory — wszystko, co agent potrafi odczytać.
  • „Cloud-side exfiltration” i ślepe plamki detekcji: jeśli operacje dzieją się po stronie dostawcy usługi AI, tradycyjne zabezpieczenia perymetryczne/EDR/SWG mogą nie widzieć pełnego obrazu (w praktyce zależy od architektury integracji i logowania).
  • Utrwalony „insider”: pamięć długoterminowa jako mechanizm persistence to jakościowa zmiana — atak nie musi być jednorazowy, tylko może „żyć” w kolejnych sesjach.
  • Ryzyko łańcuchowe: propagacja przez e-mail i automatyzację może szybko przenosić problem na kolejne skrzynki/zespoły.

Rekomendacje operacyjne / co zrobić teraz

Poniżej praktyczny zestaw działań, które mają sens niezależnie od tego konkretnego PoC (bo celują w całą klasę indirect prompt injection dla agentów):

Szybkie „hardening” (dni)

  • Ogranicz konektory do minimum: odłącz e-mail i dyski od agentów tam, gdzie nie są krytyczne; stosuj zasadę najmniejszych uprawnień (tylko odczyt, tylko wybrane foldery/projekty).
  • Wyłącz lub ściśle kontroluj Memory w środowiskach firmowych (szczególnie dla kont uprzywilejowanych i zespołów obsługujących dane wrażliwe).
  • Wprowadź regułę: agent nie wykonuje akcji na podstawie treści z e-maili/plików bez walidacji (human-in-the-loop dla akcji i eksportów danych).
  • Allowlist dla otwierania linków / egress control: jeżeli agent ma narzędzie „open URL”, ogranicz domeny i blokuj nietypowe wzorce (np. masowe „odpytywanie” setek linków). (To dokładnie uderza w styl eksfiltracji „znak po znaku”).

Ochrona procesowa i monitorowanie (tygodnie)

  • Logowanie i audyt narzędzi agenta (co otworzył, co pobrał, jakie akcje wykonał w konektorach) + korelacja z DLP.
  • Segmentacja agentów: osobne tożsamości/instancje do zadań o różnym ryzyku (np. osobny agent do „czytania maili”, bez dostępu do repozytoriów i bez pamięci).
  • Testy bezpieczeństwa agentów: stałe „red teaming” prompt injection na realnych workflow (mail → podsumuj → wykonaj akcję). Radware podkreśla, że klasyczne guardrails bywają niewystarczające przeciw trwałym, pośrednim iniekcjom.

Wymagania wobec dostawcy (vendor / procurement)

  • Pytaj o separację „instrukcji” od „danych”, filtrowanie IPI, polityki pamięci, granice narzędzi oraz telemetrię (co klient może monitorować).
  • Weryfikuj timeline poprawek i komunikację podatności: w tym przypadku media opisywały zgłoszenie 26.09.2025 i łatę 16.12.2025.

Różnice / porównania z innymi przypadkami

  • ShadowLeak vs ZombieAgent: ShadowLeak (wg opisu mediów i Radware) eksfiltrował dane przez dopisywanie ich do URL (parametry). ZombieAgent omija to przez „słownik” predefiniowanych URL-i, czyli nie prosi modelu o modyfikację linku — tylko o wybór linku odpowiadającego znakowi.
  • Jednorazowy wyciek vs persistence: nowością w ZombieAgent jest mocny nacisk na utrwalenie przez pamięć i „reguły”, które wpływają na przyszłe zachowanie agenta.

Podsumowanie / kluczowe wnioski

ZombieAgent to ważny sygnał ostrzegawczy: im bardziej ChatGPT (i inne LLM) stają się agentami z narzędziami, tym mniej wystarcza klasyczne „prompt hardening”. Pośrednia iniekcja promptów w e-mailach i dokumentach jest szczególnie groźna, bo:

  • wygląda jak zwykła treść biznesowa,
  • może uruchamiać się w ramach normalnej pracy („podsumuj skrzynkę / przejrzyj plik”),
  • a w najgorszym wariancie może zostawić trwały ślad w pamięci agenta.

Jeśli w organizacji używacie konektorów i pamięci w narzędziach typu ChatGPT, potraktujcie ten temat jak nową klasę ryzyka operacyjnego (AI supply chain + data governance), a nie „ciekawostkę o jailbreakach”.


Źródła / bibliografia

  1. SecurityWeek — opis scenariuszy eksfiltracji, propagacji i persistence (ZombieAgent).
  2. Radware (blog Threat Intelligence) — streszczenie podatności, eksfiltracja z konektorów, pamięć, propagacja.
  3. Radware (Threat Advisory/Report) — kontekst „agentic economy”, indirect prompt injection, blind spots i persistence.
  4. SC Media/SCWorld — obejście guardrails z URL i wzmocnienia po stronie OpenAI.
  5. The Register — timeline zgłoszenia i łat (26.09.2025 → 16.12.2025) oraz odniesienie do ShadowLeak.