Archiwa: DevSecOps - Strona 8 z 37 - Security Bez Tabu

Atak supply chain na LiteLLM naraził tysiące organizacji i setki tysięcy pipeline’ów CI/CD

Cybersecurity news

Wprowadzenie do problemu / definicja

Ataki typu supply chain należą do najpoważniejszych zagrożeń dla współczesnego ekosystemu tworzenia oprogramowania. Polegają one na skompromitowaniu zaufanego elementu procesu wytwórczego, takiego jak biblioteka, narzędzie bezpieczeństwa, repozytorium pakietów lub pipeline CI/CD, aby złośliwy kod został dostarczony do ofiar w sposób pozornie legalny. Incydent związany z LiteLLM pokazuje, jak pojedyncze naruszenie jednego ogniwa może przełożyć się na szeroką ekspozycję organizacji korzystających z narzędzi AI i automatyzacji developerskiej.

W skrócie

Kompromitacja LiteLLM była efektem wtórnym wcześniejszego naruszenia związanego z Trivy. Złośliwa zależność została automatycznie pobrana w pipeline’ie budującym projekt, co doprowadziło do opublikowania dwóch skażonych wersji pakietu: 1.82.7 oraz 1.82.8. W rezultacie tysiące organizacji i setki tysięcy pipeline’ów CI/CD mogły zostać narażone na wyciek sekretów, przejęcie poświadczeń oraz dalszą kompromitację środowisk.

  • Złośliwe wersje LiteLLM trafiły do zaufanego kanału dystrybucji pakietów.
  • Payload mógł uruchamiać się przy każdym wywołaniu interpretera Python.
  • Ryzyko obejmowało wyciek tokenów, kluczy API, danych chmurowych i sekretów CI/CD.

Kontekst / historia

LiteLLM to popularna biblioteka i warstwa pośrednicząca wykorzystywana do integracji aplikacji z modelami językowymi oraz usługami AI. Tego typu komponenty często mają dostęp do poświadczeń, danych aplikacyjnych i zasobów chmurowych, dlatego stanowią atrakcyjny cel dla napastników.

W analizowanym przypadku problem nie wynikał z klasycznej luki w samym kodzie LiteLLM, lecz z kaskadowej kompromitacji wcześniejszego elementu łańcucha dostaw. Gdy zainfekowana wersja Trivy została użyta w procesie CI, doszło do skażenia procesu budowania LiteLLM. Następnie opublikowano zainfekowane wersje pakietu, co umożliwiło dalszą dystrybucję złośliwego kodu przez zaufany mechanizm aktualizacji i instalacji zależności.

To modelowy przykład nowoczesnego ataku wieloetapowego, w którym napastnik nie musi bezpośrednio włamywać się do końcowego projektu. Wystarczy wykorzystanie automatyzacji, zależności i domyślnego zaufania między narzędziami developerskimi.

Analiza techniczna

Od strony technicznej incydent obnaża ryzyko automatycznego pobierania zależności w procesach budowania i publikacji oprogramowania. Jeśli pipeline CI/CD pobiera komponent, który został wcześniej skompromitowany, złośliwy kod może zostać uruchomiony jeszcze zanim powstanie finalny artefakt.

W przypadku LiteLLM modyfikacja była wyjątkowo groźna, ponieważ kod miał uruchamiać się przy każdym wywołaniu interpretera Python, bez konieczności jawnego importowania dodatkowego modułu przez użytkownika. Oznacza to, że już sama instalacja skażonego pakietu mogła wystarczyć do aktywacji payloadu i rozpoczęcia działań po stronie systemu ofiary.

Potencjalny zakres dostępu obejmował szerokie spektrum wrażliwych informacji obecnych w środowiskach developerskich i wykonawczych:

  • klucze API dostawców AI,
  • tokeny publikacyjne i dostępowe,
  • poświadczenia chmurowe,
  • klucze SSH,
  • zmienne środowiskowe,
  • dane dostępne w pamięci procesu,
  • informacje możliwe do pobrania z usług metadata w środowiskach chmurowych.

Atak ten można traktować jako kompromitację warstwy kontrolnej środowisk AI. Biblioteki pośredniczące, proxy modeli i warstwy orkiestracyjne często dysponują szerokim dostępem do usług zewnętrznych, danych i tożsamości. Ich przejęcie może stać się punktem wyjścia do eskalacji ataku na repozytoria kodu, chmurę, systemy biznesowe i inne pipeline’y.

Konsekwencje / ryzyko

Najpoważniejszym skutkiem tego typu incydentu jest utrata integralności zaufanego komponentu o wysokich uprawnieniach. W praktyce oznacza to nie tylko ryzyko kradzieży sekretów, ale również możliwość przejęcia kolejnych elementów infrastruktury.

  • przejęcie kont i usług na podstawie skradzionych tokenów,
  • wyciek danych z systemów aplikacyjnych i środowisk chmurowych,
  • wstrzyknięcie złośliwych commitów lub backdoorów do kolejnych projektów,
  • ruch lateralny między systemami developerskimi i produkcyjnymi,
  • utrzymanie trwałej obecności w infrastrukturze,
  • zakłócenie działania usług i procesów operacyjnych,
  • wtórna dystrybucja złośliwego kodu do kolejnych odbiorców.

Warto zaznaczyć, że sama liczba organizacji określonych jako narażone nie oznacza automatycznie skutecznej kompromitacji każdego środowiska. Oznacza jednak realną ekspozycję oraz konieczność przeprowadzenia przeglądu incydentowego. W atakach supply chain nawet krótka dostępność złośliwego pakietu może wystarczyć do szerokiego rozpropagowania zagrożenia przez zautomatyzowane pipeline’y, cache zależności i harmonogramy zadań.

Rekomendacje

Organizacje korzystające z LiteLLM, zautomatyzowanych pipeline’ów oraz narzędzi AI powinny potraktować ten incydent jako sygnał do natychmiastowego przeglądu bezpieczeństwa łańcucha dostaw oprogramowania.

Najważniejsze działania operacyjne obejmują:

  • identyfikację wszystkich systemów, które instalowały lub uruchamiały podatne wersje pakietu,
  • ustalenie, jakie sekrety były dostępne dla procesu w czasie wykonania,
  • natychmiastową rotację tokenów, kluczy API, kluczy SSH, poświadczeń chmurowych i sesji serwisowych,
  • analizę logów CI/CD, logów systemowych i logów chmurowych pod kątem anomalii,
  • weryfikację integralności pipeline’ów build i release,
  • przegląd zasad automatycznego pobierania zależności,
  • wdrożenie pinowania wersji, kontroli sum kontrolnych i polityk zatwierdzania artefaktów,
  • ograniczenie uprawnień serwisów buildowych zgodnie z zasadą najmniejszych uprawnień,
  • separację środowisk developerskich, testowych i produkcyjnych,
  • monitorowanie nietypowych odwołań do sekretów oraz usług metadata.

W perspektywie długofalowej warto wdrożyć również szersze praktyki ochronne:

  • podpisywanie artefaktów i walidację pochodzenia pakietów,
  • pełną inwentaryzację zależności oraz generowanie SBOM,
  • ochronę tokenów używanych w procesach publikacji,
  • kontrolę zależności tranzytywnych,
  • detekcję anomalii w pipeline’ach CI/CD,
  • dodatkowe zabezpieczenia dla komponentów AI pełniących rolę pośredników między aplikacją a usługami zewnętrznymi.

Podsumowanie

Incydent LiteLLM to wyraźny przykład nowej klasy zagrożeń, w których narzędzia AI i warstwy integracyjne stają się krytycznym punktem ataku na łańcuch dostaw oprogramowania. Kluczowym problemem nie była wyłącznie obecność złośliwego kodu w pakiecie, lecz możliwość przejęcia szerokiego zestawu sekretów i wykorzystania automatyzacji do szybkiego rozprzestrzeniania kompromitacji. Dla zespołów bezpieczeństwa, DevOps i DevSecOps to sygnał, że ochrona CI/CD, zależności open source oraz infrastruktury AI musi być traktowana jako jeden wspólny obszar ryzyka.

Źródła

  1. SecurityWeek — Over 2,500 Organizations Impacted by LiteLLM Supply Chain Attack — https://www.securityweek.com/over-2500-organizations-impacted-by-litellm-supply-chain-attack/
  2. CloudSEK Blog — LiteLLM Supply Chain Attack Analysis — https://www.cloudsek.com/blog/litellm-supply-chain-attack-analysis
  3. CloudSEK Exposure Portal — LiteLLM Exposure Assessment — https://exposure.cloudsek.com/

GhostSplice ujawnia nowe ryzyko w MCP: jak złośliwe serwery mogą skłaniać agentów AI do wycieku sekretów

Cybersecurity news

Wprowadzenie do problemu / definicja

Rosnące wykorzystanie agentów AI w programowaniu i automatyzacji zadań zwiększa znaczenie bezpieczeństwa integracji z narzędziami zewnętrznymi. Szczególną rolę odgrywa tu Model Context Protocol (MCP), który pozwala modelom korzystać z zasobów i funkcji udostępnianych przez zewnętrzne serwery.

Najnowsze analizy pokazują jednak, że zaufanie do serwera MCP może stać się słabym punktem całego środowiska. Technika określana jako GhostSplice demonstruje, że złośliwy serwer może wpłynąć na zachowanie agenta AI w taki sposób, aby doprowadzić do ujawnienia poufnych danych bez użycia jednej, jawnie niebezpiecznej komendy.

W skrócie

GhostSplice polega na rozbiciu szkodliwej instrukcji na kilka pozornie nieszkodliwych fragmentów. Elementy te mogą zostać rozmieszczone w opisie narzędzia, odpowiedzi narzędzia oraz dodatkowych interakcjach w trakcie sesji, a agent AI scala je następnie w jeden kontekst decyzyjny.

W efekcie możliwe staje się skłonienie agenta do odczytu i ujawnienia danych takich jak klucze SSH, zmienne środowiskowe, pliki konfiguracyjne, kod źródłowy lub informacje klientów. Nie jest to jednak uniwersalne przejęcie dowolnego systemu — atak zakłada wcześniejsze podłączenie złośliwego serwera MCP oraz istnienie odpowiednich uprawnień po stronie agenta.

  • atak wykorzystuje zaufanie do zewnętrznego serwera MCP,
  • instrukcje są ukrywane w wielu elementach sesji,
  • zagrożone są środowiska, w których agent ma dostęp do lokalnych zasobów,
  • problem dotyczy całego łańcucha integracyjnego, a nie wyłącznie modelu językowego.

Kontekst / historia

Scenariusz ten wpisuje się w szerszy nurt badań nad prompt injection i nadużyciami w ekosystemie agentów AI. Dotychczas wiele mechanizmów ochronnych koncentrowało się na wykrywaniu pojedynczych, wyraźnie podejrzanych poleceń lub instrukcji o wysokim ryzyku.

GhostSplice pokazuje, że takie podejście może być niewystarczające. Jeśli złośliwa logika zostanie rozdzielona na kilka niezależnych komunikatów, każdy z nich osobno może wyglądać jak standardowa operacja administracyjna, kontrola integralności albo rutynowe zapytanie diagnostyczne.

Według opisu badań testy prowadzono w kontrolowanych, izolowanych środowiskach z wykorzystaniem sztucznych poświadczeń i bez wskazania produkcyjnego incydentu. Mimo to sama technika ma duże znaczenie praktyczne, ponieważ dobrze odzwierciedla sposób działania nowoczesnych agentów developerskich, które przetwarzają wiele kanałów wejściowych jednocześnie.

Analiza techniczna

Istota ataku polega na rozproszeniu intencji eksfiltracyjnej między różne elementy komunikacji. Serwer MCP może zaprezentować narzędzie wyglądające całkowicie neutralnie, na przykład moduł audytu lub sprawdzania spójności danych, z polami opisanymi w mało podejrzany sposób.

W kolejnym kroku agent otrzymuje dodatkowe informacje, które mapują te pola na konkretne zasoby lokalne, takie jak plik .ssh/id_rsa, zawartość .env, fragmenty repozytorium albo dokumenty projektowe. Każdy komunikat osobno wydaje się akceptowalny, ale ich połączenie w jednym kontekście roboczym prowadzi do wykonania pełnej sekwencji działań skutkującej ujawnieniem danych.

To właśnie tutaj zawodzą proste mechanizmy filtrujące. Oddzielenie opisu narzędzia od jego wyniku na poziomie protokołu nie daje gwarancji bezpieczeństwa, jeśli model nadal interpretuje oba elementy łącznie i traktuje je jako podstawę do podejmowania dalszych decyzji.

Z perspektywy bezpieczeństwa przypomina to skażenie przepływu danych. Informacje pochodzące z niezaufanego serwera nie są traktowane wyłącznie jako dane wejściowe, lecz zaczynają pełnić rolę instrukcji wpływających na kolejne wywołania narzędzi. Jeżeli klient umożliwia automatyczne przekazywanie takich wartości dalej, tworzy ścieżkę nadużycia uprawnień.

Znaczenie ma również architektura środowiska. Skuteczność ataku zależy od używanego klienta MCP, sposobu orkiestracji narzędzi, polityki zgód, filtrowania argumentów i lokalnych zabezpieczeń. Oceniając ryzyko, organizacje powinny więc analizować cały stos integracyjny, a nie wyłącznie sam model AI.

Konsekwencje / ryzyko

Najpoważniejszą konsekwencją jest cicha eksfiltracja danych wysokiej wartości. W praktyce może to oznaczać wyciek kluczy prywatnych, tokenów API, sekretów zapisanych w zmiennych środowiskowych, kodu własnościowego, dokumentacji technicznej czy danych klientów.

Taki incydent może stać się punktem wyjścia do dalszych naruszeń, w tym przejęcia infrastruktury, nadużyć w łańcuchu dostaw oprogramowania, dostępu do systemów wewnętrznych oraz problemów zgodności regulacyjnej. Szczególnie zagrożone są środowiska, w których agent AI dysponuje szerokim dostępem do repozytoriów, terminala, plików roboczych i usług przechowujących sekrety.

Dodatkowym wyzwaniem pozostaje detekcja. Ponieważ pojedyncze komunikaty mogą wyglądać całkowicie rutynowo, wykrycie incydentu bywa możliwe dopiero po prześledzeniu pełnego łańcucha wywołań narzędzi, źródeł danych wejściowych i nietypowych prób transferu informacji.

Rekomendacje

Podstawową zasadą bezpieczeństwa powinno być traktowanie wszystkich danych pochodzących z serwera MCP jako niezaufanych. Klient i warstwa orkiestracji muszą rozdzielać dane od instrukcji oraz blokować automatyczne przekazywanie niezweryfikowanych wartości pomiędzy narzędziami.

  • ograniczać zaufanie do zewnętrznych i niestandardowych serwerów MCP,
  • prowadzić formalne przeglądy integracji przed dopuszczeniem ich do środowisk produkcyjnych,
  • wymuszać jawną zgodę użytkownika przy odczycie wrażliwych plików i wysyłaniu danych poza środowisko lokalne,
  • stosować zasadę najmniejszych uprawnień dla agentów AI,
  • filtrować i walidować argumenty przekazywane do narzędzi,
  • wdrażać listy dozwolonych ścieżek, operacji i miejsc docelowych,
  • blokować dostęp do sekretów wszędzie tam, gdzie nie jest on niezbędny,
  • prowadzić pełne logowanie sekwencji wywołań wraz z pochodzeniem danych wejściowych.

W organizacjach istotne są również zabezpieczenia administracyjne. Warto kontrolować, które integracje mogą być aktywowane, ograniczać działanie agentów do odczytu tam, gdzie to możliwe, oraz wdrażać dodatkowe polityki zatwierdzania dla operacji mogących prowadzić do ujawnienia informacji wrażliwych.

Z punktu widzenia architektury bezpieczny klient MCP powinien zakładać, że serwer narzędziowy może próbować manipulować modelem. Ochrona musi więc koncentrować się na realnych skutkach wywołań narzędzi, a nie jedynie na deklarowanym przeznaczeniu integracji.

Podsumowanie

GhostSplice pokazuje, że bezpieczeństwo agentów AI zależy nie tylko od jakości samego modelu językowego, ale przede wszystkim od sposobu interpretacji danych, scalania kontekstu i zarządzania wywołaniami narzędzi. Złośliwy serwer MCP nie musi przesyłać jednej oczywiście groźnej instrukcji — wystarczy, że rozdzieli ją na kilka wiarygodnie wyglądających elementów.

Dla zespołów bezpieczeństwa, platform engineering i DevSecOps to wyraźny sygnał, że warstwa orkiestracji agentów AI wymaga takiej samej uwagi jak tradycyjne interfejsy API czy komponenty łańcucha dostaw. Wraz ze wzrostem wykorzystania agentów kodujących bezpieczeństwo MCP staje się jednym z kluczowych obszarów ochrony nowoczesnych środowisk developerskich.

Źródła

Łatki generowane przez AI zawodzą w niemal połowie przypadków

Cybersecurity news

Wprowadzenie do problemu / definicja

Wykorzystanie modeli AI do generowania kodu oraz poprawek bezpieczeństwa szybko staje się elementem nowoczesnych procesów DevSecOps. Problem polega jednak na tym, że automatycznie wygenerowana łatka nie zawsze usuwa rzeczywistą przyczynę podatności. W praktyce może jedynie maskować objawy, zmieniać zachowanie aplikacji, powodować regresje lub nawet otwierać drogę do nowych błędów bezpieczeństwa.

W przypadku patchowania bezpieczeństwa nie wystarczy, że kod „kompiluje się” i przechodzi podstawowy test. Poprawka musi być odporna na obejścia, zgodna z logiką aplikacji i skuteczna wobec pełnego spektrum możliwych scenariuszy ataku.

W skrócie

Najnowsze badania wskazują, że skuteczność łatek generowanych przez AI pozostaje wyraźnie ograniczona. Spośród tysięcy przeanalizowanych poprawek tylko część rzeczywiście usuwała podatność bez negatywnego wpływu na działanie aplikacji.

  • Jedynie 46% wygenerowanych łatek eliminowało bazową podatność.
  • Tylko około jedna czwarta usuwała problem bez zmiany zachowania aplikacji.
  • Część poprawek nie rozwiązywała problemu w ogóle.
  • Niektóre łatki dodatkowo wprowadzały nowe luki lub tworzyły rozwiązania podatne na obejście.

Wniosek jest jasny: AI może przyspieszać przygotowanie propozycji naprawy, ale nie powinna być traktowana jako autonomiczny mechanizm bezpiecznego patchowania.

Kontekst / historia

W ostatnich latach organizacje zaczęły szeroko wdrażać generatywną AI nie tylko do tworzenia kodu, ale także do analizy błędów, triage podatności i przygotowywania łatek. Wynika to z rosnącej presji na skracanie czasu reakcji na nowe CVE, redukcję backlogów bezpieczeństwa oraz automatyzację prac wcześniej wykonywanych ręcznie przez zespoły inżynierskie.

Na tym tle coraz większe znaczenie mają badania oceniające realną jakość kodu tworzonego przez modele językowe. Kluczowe staje się rozróżnienie między kodem, który „działa”, a kodem, który rzeczywiście spełnia wymagania bezpieczeństwa. W przypadku łatek bezpieczeństwa margines błędu jest minimalny, ponieważ nawet pozornie skuteczna poprawka może pozostawić aktywny wektor ataku.

Analiza techniczna

Badanie opisywane w mediach branżowych objęło ponad 6 tysięcy łatek wygenerowanych dla sześciu podatności open source ujawnionych od marca 2026 roku. Testy przeprowadzono z użyciem dwóch dużych modeli językowych oraz różnych pipeline’ów patchowania i zestawów promptów. Wyniki pokazały, że tylko 46% wygenerowanych poprawek usuwało podstawową podatność, a nie wszystkie robiły to w sposób odporny i bezpieczny produkcyjnie.

Klasyfikacja wyników uwzględniała kilka scenariuszy: pełne usunięcie podatności, usunięcie jej kosztem zmiany zachowania aplikacji, brak skutecznej naprawy, naprawę połączoną z wprowadzeniem nowej luki oraz jednoczesny brak naprawy i dodanie kolejnego problemu. Szczególnie istotne jest to, że tylko około jedna czwarta łatek usuwała problem bez wpływu na funkcjonalność aplikacji.

Technicznie główny problem polega na tym, że modele często generują poprawki na podstawie wzorców składniowych i statystycznych podobieństw, a nie pełnego zrozumienia semantyki przepływu danych, logiki biznesowej, zależności między modułami oraz skutków ubocznych zmian. W rezultacie AI może tworzyć poprawki, które wyglądają wiarygodnie, ale są niekompletne lub kruche.

  • Poprawienie jednego warunku wejściowego przy pominięciu innych ścieżek wykonania.
  • Usunięcie symptomu błędu zamiast jego przyczyny źródłowej.
  • Dodanie walidacji, którą da się łatwo ominąć.
  • Zmiana zachowania funkcji prowadząca do regresji.
  • Wprowadzenie nowej podatności, na przykład błędnej autoryzacji lub niepełnej sanityzacji danych.

Z perspektywy AppSec szczególnie niebezpieczne są poprawki kruche, czyli takie, które przechodzą podstawowy test, ale zawodzą przy mniej oczywistych danych wejściowych, scenariuszach granicznych lub alternatywnych wektorach obejścia. To oznacza, że samo sprawdzenie, czy pierwotny exploit przestał działać, nie wystarcza do uznania łatki za skuteczną.

Konsekwencje / ryzyko

Najpoważniejszym zagrożeniem jest fałszywe poczucie bezpieczeństwa. Organizacja może uznać podatność za załataną, podczas gdy w rzeczywistości luka nadal istnieje albo została zastąpiona nową. Taka sytuacja prowadzi do błędnej oceny ekspozycji, zaniżenia priorytetu incydentów i opóźnienia właściwej reakcji.

Drugim problemem jest wzrost powierzchni ataku wynikający z automatycznego akceptowania zmian bez pełnego przeglądu. Jeśli zespoły developerskie zbyt mocno polegają na agentach AI, proces dostarczania kodu może przyspieszyć kosztem jakości kontroli bezpieczeństwa.

  • Regresje funkcjonalne po wdrożeniu łatki.
  • Niekompletne usunięcie podatności.
  • Pojawienie się nowych błędów zgodności i integralności.
  • Wyższe koszty retestów, rollbacków i obsługi incydentów.
  • Trudności audytowe przy wykazywaniu zgodności z wymaganiami secure coding.

Dodatkowo widoczna staje się asymetria między atakiem a obroną. Jeśli AI szybciej wspiera wykrywanie i exploitowanie błędów niż ich bezpieczne usuwanie, organizacje znajdą się pod jeszcze większą presją czasową, dysponując jednocześnie mniej wiarygodnymi narzędziami remediacyjnymi.

Rekomendacje

Organizacje powinny traktować łatki generowane przez AI jako propozycje zmian, a nie gotowe poprawki bezpieczeństwa. W praktyce oznacza to konieczność wdrożenia kilku warstw kontroli.

  • Obowiązkowa walidacja ekspercka: każda poprawka bezpieczeństwa powinna przejść przegląd specjalisty AppSec lub doświadczonego developera znającego kontekst systemu.
  • Testy bezpieczeństwa i regresji: patch należy weryfikować nie tylko pod kątem usunięcia pojedynczego PoC, ale również przez testy jednostkowe, integracyjne, regresyjne i negatywne scenariusze nadużyć.
  • Analiza przyczyny źródłowej: zespół powinien potwierdzić, że poprawka eliminuje root cause, a nie jedynie widoczny objaw.
  • SAST, DAST i analiza zależności: automatyczne skanery powinny być warstwą kontrolną po wygenerowaniu patcha.
  • Zakaz automatycznego wdrażania poprawek wysokiego ryzyka: dla komponentów krytycznych i mechanizmów kontroli dostępu nie należy dopuszczać pełnej autonomii AI.
  • Pomiar jakości patchowania AI: warto monitorować skuteczność łatek, liczbę regresji i podatności ponownie otwieranych po wdrożeniu.
  • Redukcja backlogu bez utraty jakości: AI może przyspieszać przygotowanie zmian, ale nie powinna zastępować wymagań jakościowych i dowodów skuteczności remediacji.

Podsumowanie

Łatki generowane przez AI stają się ważnym elementem współczesnego cyklu wytwarzania oprogramowania, jednak obecny poziom ich niezawodności pozostaje zbyt niski, by powierzać im samodzielne usuwanie podatności. Problem nie ogranicza się do przypadków całkowicie błędnych — równie groźne są poprawki częściowo skuteczne, kruche lub wprowadzające nowe luki.

Z perspektywy cyberbezpieczeństwa najlepszym podejściem jest traktowanie AI jako akceleratora pracy zespołu, a nie zastępstwa dla inżynierii bezpieczeństwa. Rygorystyczna walidacja, testy oraz nadzór człowieka pozostają niezbędne, jeśli organizacja chce bezpiecznie korzystać z automatycznego patchowania.

Źródła

  • https://www.darkreading.com/application-security/ai-generated-patches-fail-half-time
  • https://blog.1password.com/flawed-ai-generated-security-patches/
  • https://www.veracode.com/research/ai-generated-code-security/
  • https://openai.com/index/patch-the-planet/

CISA ostrzega przed aktywnie wykorzystywaną luką RCE w JetBrains TeamCity (CVE-2026-63077)

Cybersecurity news

Wprowadzenie do problemu / definicja

CVE-2026-63077 to krytyczna podatność typu remote code execution w JetBrains TeamCity On-Premises, oceniona na 9,8 w skali CVSS. Luka wynika z niebezpiecznej deserializacji niezaufanych danych i może umożliwić nieuwierzytelnionemu atakującemu obejście mechanizmów kontroli dostępu oraz zdalne wykonanie poleceń systemowych na serwerze CI/CD.

W skrócie

Amerykańska agencja CISA oznaczyła CVE-2026-63077 jako podatność aktywnie wykorzystywaną w środowisku produkcyjnym. Problem dotyczy lokalnych instalacji TeamCity i może zostać użyty bez wcześniejszego logowania przez protokół agent polling. Skuteczne wykorzystanie błędu pozwala uruchamiać komendy z uprawnieniami procesu serwera TeamCity, co stwarza ryzyko przejęcia infrastruktury budowania, artefaktów oraz poświadczeń przechowywanych w systemie. Producent udostępnił poprawki w wersjach 2025.11.7 oraz 2026.1.3.

Kontekst / historia

TeamCity jest szeroko stosowaną platformą CI/CD w środowiskach deweloperskich i enterprise, dlatego każda krytyczna luka w tym produkcie ma znaczenie wykraczające poza pojedynczy serwer aplikacyjny. W praktyce system tego typu często posiada dostęp do repozytoriów kodu, sekretów aplikacyjnych, tokenów API, kluczy podpisujących, środowisk wdrożeniowych i mechanizmów automatyzacji publikacji.

JetBrains opublikował ostrzeżenie bezpieczeństwa pod koniec lipca 2026 roku, wskazując na możliwość nieuwierzytelnionego wykonania kodu przez agent polling protocol. Następnie CISA dodała CVE-2026-63077 do katalogu Known Exploited Vulnerabilities, co oznacza istnienie dowodów aktywnego wykorzystania podatności. Krótki termin działań naprawczych dla organizacji federalnych w USA dodatkowo podkreśla wagę incydentu.

Analiza techniczna

Rdzeniem problemu jest deserializacja niezaufanych danych w mechanizmie komunikacji związanym z odpytującymi agentami TeamCity. Tego rodzaju klasa błędów jest szczególnie groźna, ponieważ aplikacja przetwarza dane dostarczone przez zewnętrzny podmiot w sposób umożliwiający utworzenie lub wykonanie niebezpiecznych obiektów i ścieżek kodu.

W przypadku CVE-2026-63077 wektor ataku nie wymaga uwierzytelnienia. Atakujący, który ma dostęp sieciowy do serwera TeamCity, może użyć protokołu agent polling do obejścia kontroli autoryzacyjnych. Następnie możliwe jest wykonanie dowolnych poleceń systemowych z uprawnieniami procesu TeamCity. Faktyczny wpływ zależy więc od tego, z jakim kontem uruchomiono usługę oraz jakie zasoby są z nią powiązane.

To szczególnie istotne z perspektywy architektury DevSecOps, ponieważ serwer CI/CD rzadko działa w izolacji. Zwykle utrzymuje połączenia z repozytoriami Git, rejestrami kontenerów, systemami artefaktów, platformami chmurowymi i narzędziami wdrożeniowymi. W efekcie pojedyncza luka RCE w warstwie orkiestracji buildów może stać się punktem wejścia do ataku na łańcuch dostaw oprogramowania.

  • serwer TeamCity przechowuje poświadczenia do produkcji,
  • proces działa z podwyższonymi uprawnieniami systemowymi,
  • buildy publikują artefakty do zaufanych repozytoriów,
  • środowisko nie stosuje segmentacji między CI/CD a infrastrukturą krytyczną,
  • logowanie i monitoring zmian w pipeline’ach są ograniczone.

W takim modelu kompromitacja TeamCity może prowadzić nie tylko do kradzieży danych, ale również do modyfikacji pipeline’ów, podmiany artefaktów, osadzenia trwałych backdoorów w procesie budowania lub wykorzystania legalnej infrastruktury organizacji do dalszych działań ofensywnych.

Konsekwencje / ryzyko

Najpoważniejszym skutkiem wykorzystania CVE-2026-63077 jest przejęcie centralnego elementu procesu wytwarzania oprogramowania. W praktyce oznacza to ryzyko:

  • kradzieży zapisanych poświadczeń i sekretów,
  • odczytu konfiguracji projektów oraz danych buildów,
  • modyfikacji zadań kompilacji i wdrożeń,
  • naruszenia integralności artefaktów,
  • propagacji złośliwego kodu do dalszych etapów pipeline’u,
  • ruchu bocznego do innych systemów w sieci organizacji.

Dla wielu firm kompromitacja serwera CI/CD ma charakter strategiczny. Atakujący nie musi od razu szyfrować środowiska ani kraść dużych wolumenów danych. Znacznie bardziej wartościowe może być uzyskanie trwałego, dyskretnego dostępu do procesu budowania aplikacji, co umożliwia późniejsze wstrzyknięcie złośliwych zmian do kodu, kontenerów lub pakietów dystrybucyjnych.

Ryzyko rośnie także wtedy, gdy organizacja korzysta z TeamCity jako wspólnej platformy dla wielu zespołów. Wówczas pojedyncza podatność może mieć zasięg obejmujący liczne projekty, środowiska i integracje zewnętrzne.

Rekomendacje

Organizacje używające TeamCity On-Premises powinny potraktować tę podatność priorytetowo i wdrożyć działania w trybie awaryjnym.

Najważniejsze kroki operacyjne:

  • niezwłocznie zaktualizować TeamCity do wersji 2025.11.7 lub 2026.1.3,
  • jeśli natychmiastowy upgrade nie jest możliwy, zastosować tymczasowe mitigacje wskazane przez producenta,
  • ograniczyć dostęp sieciowy do serwera TeamCity wyłącznie do zaufanych segmentów i hostów administracyjnych,
  • zweryfikować, czy usługa TeamCity nie działa z nadmiernymi uprawnieniami,
  • przeprowadzić przegląd przechowywanych sekretów, tokenów i danych uwierzytelniających,
  • wymusić rotację poświadczeń powiązanych z serwerem CI/CD,
  • przeanalizować logi pod kątem nietypowych żądań, uruchomień procesów i zmian konfiguracji,
  • sprawdzić integralność pipeline’ów, agentów, pluginów oraz artefaktów zbudowanych po ujawnieniu luki,
  • wdrożyć monitoring procesów potomnych uruchamianych przez usługę TeamCity,
  • odseparować infrastrukturę CI/CD od systemów produkcyjnych i repozytoriów o wysokim poziomie zaufania.

W działaniach typu threat hunting warto skupić się na:

  • nieautoryzowanych zmianach w konfiguracji projektów i build stepów,
  • nowych lub zmodyfikowanych pluginach serwera,
  • podejrzanych plikach skryptowych i binariach zapisanych w katalogach TeamCity,
  • nietypowych połączeniach wychodzących z serwera,
  • użyciu kont serwisowych poza standardowym oknem aktywności,
  • nagłych zmianach w artefaktach, obrazach kontenerów i paczkach publikowanych przez pipeline.

Podsumowanie

CVE-2026-63077 to jedna z najpoważniejszych klas błędów, jakie mogą dotknąć platformę CI/CD: nieuwierzytelnione RCE w komponencie centralnym procesu budowania i wdrażania. Fakt, że luka została dodana do katalogu aktywnie wykorzystywanych podatności, oznacza konieczność natychmiastowej reakcji. W środowiskach korzystających z TeamCity On-Premises priorytetem powinno być szybkie łatanie, ograniczenie ekspozycji sieciowej, rotacja sekretów oraz weryfikacja, czy kompromitacja nie nastąpiła jeszcze przed wdrożeniem poprawek.

Źródła

  1. CISA Flags TeamCity CVE-2026-63077 RCE Flaw Under Active Exploitation in the Wild — https://thehackernews.com/2026/08/cisa-flags-teamcity-cve-2026-63077-rce.html
  2. Critical Security Issue Affecting TeamCity On-Premises (CVE-2026-63077) – Update to 2025.11.7 or 2026.1.3 Now — https://blog.jetbrains.com/teamcity/2026/07/cve-2026-63077/
  3. NVD – CVE-2026-63077 — https://nvd.nist.gov/vuln/detail/CVE-2026-63077
  4. TeamCity 2026.1.3 and 2025.11.7 Are Now Available — https://blog.jetbrains.com/teamcity/2026/07/teamcity-2026-1-3-2025-11-7-bugfix/
  5. CISA Known Exploited Vulnerabilities Catalog — https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Luki w AWS, Google i Vercel pozwalały uruchamiać narzędzia agentów AI bez udziału modelu

Cybersecurity news

Wprowadzenie do problemu / definicja

Ujawnione podatności w rozwiązaniach Amazon Bedrock AgentCore, Google Agent Development Kit for Python oraz pakietach Vercel AI SDK pokazały istotny problem bezpieczeństwa w architekturze agentów AI. W każdym z tych przypadków warstwa wykonawcza akceptowała dane wyglądające jak autoryzowane wywołanie narzędzia, mimo że nie zostały one faktycznie zatwierdzone przez model językowy.

W praktyce oznaczało to możliwość uruchamiania funkcji agenta z pominięciem promptów systemowych, mechanizmów kontroli treści i dodatkowych zabezpieczeń opartych na decyzji modelu. To nie był klasyczny prompt injection, lecz obejście granicy zaufania między modelem a wykonaniem akcji.

W skrócie

Badacze bezpieczeństwa opisali trzy odrębne zestawy luk, które prowadziły do podobnego efektu: narzędzia agentów mogły zostać uruchomione bez legalnej tury modelu. Problem objął usługi i biblioteki rozwijane przez AWS, Google oraz Vercel.

  • AWS poprawił problem po stronie zarządzanej usługi Bedrock AgentCore.
  • Google usunął błędy w ADK for Python w wersji 2.5.0.
  • Vercel opublikował poprawki dla pakietów harness związanych z agentami kodującymi.

Wspólnym mianownikiem był brak skutecznej weryfikacji, czy żądanie wykonania narzędzia rzeczywiście pochodziło z autoryzowanej ścieżki działania modelu.

Kontekst / historia

Agenci AI są coraz częściej wykorzystywani jako warstwa pośrednia między modelem językowym a narzędziami wykonującymi konkretne operacje. Mogą one obsługiwać zapytania do API, odczyt sekretów, wdrożenia, działania w chmurze, a nawet uruchamianie kodu. Standardowy mechanizm zakłada, że model analizuje kontekst, a następnie generuje uporządkowaną instrukcję użycia narzędzia.

Opisane przypadki podważyły ten model bezpieczeństwa. Zamiast wymagać dowodu, że konkretna akcja została zatwierdzona przez model w ramach legalnej sesji, podatne komponenty przyjmowały odpowiednio sformatowane dane jako wystarczającą podstawę do wykonania operacji.

Sprawa ma też szerszy wymiar architektoniczny. Wraz z rozwojem systemów agentowych rośnie ryzyko, że organizacje będą nadmiernie ufały zabezpieczeniom osadzonym wyłącznie na poziomie LLM, ignorując konieczność twardej autoryzacji w runtime.

Analiza techniczna

Istotą problemu był brak niezawodnego powiązania wywołania narzędzia z konkretną decyzją modelu. Jeśli runtime nie weryfikuje pochodzenia żądania, to każde dane wejściowe przypominające autoryzowane polecenie mogą zostać potraktowane jako legalne.

W Amazon Bedrock AgentCore podatność dotyczyła ścieżki InvokeHarness. Uwierzytelniony użytkownik mógł dostarczyć blok typu tool-use w końcowej wiadomości żądania, a mechanizm wykonywania mógł uznać go za prawidłową instrukcję użycia narzędzia. W efekcie możliwe było pominięcie uruchomienia modelu i wszystkich kontroli związanych z jego odpowiedzią.

W Google ADK dla Pythona badacze wskazali dwa pokrewne problemy. Pierwszy dotyczył mechanizmu potwierdzania narzędzi wymagających dodatkowej zgody. Jeśli atakujący mógł manipulować historią sesji lub wstrzykiwać zdarzenia, był w stanie sfałszować potwierdzenie wykonania wrażliwego narzędzia. Drugi problem obejmował tryb resumable, w którym komunikaty użytkownika mogły zawierać fragmenty function_call interpretowane jako bezpośrednie instrukcje uruchomienia narzędzia.

W przypadku Vercel problem miał inną ścieżkę wykorzystania, ale prowadził do podobnego rezultatu. Warstwa relay ufała procesowi w sandboxie, jeśli spełniał on określone warunki identyfikacyjne. To otwierało drogę do uzyskania dostępu do narzędzi hosta przez niezaufany kod działający już w środowisku izolowanym, w tym do funkcji związanych z wdrożeniami, sekretami i API chmurowymi.

W ujęciu architektonicznym wszystkie trzy przypadki pokazują ten sam antywzorzec: format danych został potraktowany jako dowód uprawnienia. Tymczasem prawidłowy model bezpieczeństwa wymaga powiązania każdej akcji z sesją, stanem autoryzacji, decyzją modelu oraz nienaruszonym zestawem argumentów.

Konsekwencje / ryzyko

Skutki takich luk zależą przede wszystkim od tego, jakie uprawnienia miał agent oraz do jakich zasobów był podłączony. Sama podatność nie nadawała agentowi nowych uprawnień, ale pozwalała przejąć te, które już posiadał w środowisku produkcyjnym.

  • nieautoryzowane uruchamianie narzędzi administracyjnych,
  • odczyt lub ujawnienie sekretów, tokenów i danych dostępowych,
  • modyfikację konfiguracji lub artefaktów wdrożeniowych,
  • wykonywanie operacji w chmurze z uprawnieniami przypisanymi agentowi,
  • obejście kontroli bezpieczeństwa opartych wyłącznie na promptach i logice modelu.

To szczególnie groźne w środowiskach, w których agent pełni rolę operacyjną, integruje się z CI/CD, repozytoriami kodu, systemami chmurowymi lub magazynami sekretów. W takich scenariuszach błąd w walidacji ścieżki wykonania może prowadzić do realnego naruszenia integralności środowiska.

Rekomendacje

Organizacje wdrażające agentów AI powinny traktować warstwę wykonawczą jako kluczowy punkt egzekwowania bezpieczeństwa. Nie wystarczy zakładać, że model, prompt systemowy lub mechanizm potwierdzeń same w sobie zablokują nieautoryzowane użycie narzędzi.

  • zaktualizować komponenty do wersji zawierających poprawki,
  • odrzucać wszelkie wywołania narzędzi, function_call i komunikaty potwierdzeń pochodzące z niezaufanych granic systemu,
  • powiązać każde wykonanie narzędzia z konkretnym zdarzeniem modelu, identyfikatorem sesji, nazwą narzędzia i zestawem argumentów,
  • stosować zasadę najmniejszych uprawnień dla agentów, ról IAM, sekretów i narzędzi hostowych,
  • utrzymywać twardą segmentację między sandboxem a hostem,
  • rejestrować i audytować wszystkie wywołania narzędzi w celu wykrywania anomalii.

Z perspektywy AppSec i DevSecOps warto przeprowadzić przegląd architektury agentów pod kątem pytania, czy jakikolwiek użytkownik, proces, plugin lub zależność może dostarczyć dane wyglądające jak autoryzowane polecenie wykonania. Jeśli tak, obecny model ochrony może być niewystarczający.

Podsumowanie

Luki ujawnione w AWS, Google i Vercel nie są wyłącznie serią odizolowanych błędów, lecz sygnałem ostrzegawczym dla całego ekosystemu agentów AI. Pokazują, że granica zaufania nie może kończyć się na modelu językowym.

Bezpieczeństwo agentów wymaga ścisłej autoryzacji w runtime, integralności przepływu sterowania oraz jednoznacznego potwierdzenia pochodzenia każdego wywołania narzędzia. Dla organizacji rozwijających systemy agentowe to wyraźna wskazówka, że ochrona promptu nie zastąpi kontroli wykonania.

Źródła

  • https://thehackernews.com/2026/08/aws-google-and-vercel-patch-agent-flaws.html
  • https://github.com/google/adk-python/releases/tag/v2.5.0
  • https://nvd.nist.gov/vuln/detail/CVE-2026-18236
  • https://github.com/advisories/GHSA-8fq9-q6jc-57v8
  • https://github.com/advisories/GHSA-76m4-4vjr-r9w5

Słaby generator losowości w CryptoJS naraził portfele kryptowalutowe na kradzież co najmniej 5,7 mln dolarów

Cybersecurity news

Wprowadzenie do problemu / definicja

Bezpieczeństwo portfeli kryptowalutowych zależy nie tylko od algorytmów kryptograficznych, ale także od jakości losowości wykorzystywanej podczas generowania fraz odzyskiwania. Jeżeli źródło entropii jest przewidywalne, nawet poprawnie zaimplementowane mechanizmy ochrony mogą zostać podważone. Właśnie taki scenariusz dotyczy podatności określanej jako Ill Bloom, powiązanej z funkcją CryptoJS.lib.WordArray.random().

Problem polega na tym, że część aplikacji używała tej funkcji do tworzenia materiału wejściowego dla fraz seed BIP39. W efekcie tajne dane, które powinny być praktycznie niemożliwe do odgadnięcia, mogły zostać zredukowane do przestrzeni możliwej do przeszukania przez atakujących.

W skrócie

Badacze bezpieczeństwa powiązali serię kradzieży środków z portfeli kryptowalutowych ze słabym generatorem pseudolosowym w bibliotece CryptoJS. Według opublikowanych analiz skutki dwóch fal ataków miały doprowadzić do strat sięgających co najmniej 5,69 mln dolarów.

  • podatność obniżała efektywną entropię fraz odzyskiwania,
  • atakujący mogli odtwarzać możliwe seedy i wyprowadzać z nich adresy portfeli,
  • problem dotyczył wybranych aplikacji wykorzystujących wadliwą funkcję do celów bezpieczeństwa,
  • sama aktualizacja aplikacji nie naprawia fraz seed wygenerowanych wcześniej.

Kontekst / historia

Źródła problemu sięgają starszych wersji biblioteki CryptoJS. W 2014 roku wprowadzono własny mechanizm pseudolosowy typu Multiply-With-Carry, inicjalizowany przez Math.random(), co z perspektywy bezpieczeństwa kryptograficznego było rozwiązaniem niewystarczającym.

Choć w wersjach 3.2.0 i 3.2.1 biblioteka korzystała tymczasowo z natywnych źródeł kryptograficznej losowości, zmiana została później cofnięta ze względów kompatybilności. Trwały powrót do bezpieczniejszych mechanizmów nastąpił dopiero w wersji 4.0.0. W 2026 roku badacze połączyli serię incydentów z przewidywalnymi frazami odzyskiwania generowanymi właśnie z użyciem tej wadliwej ścieżki.

W analizach publicznie wskazano pięć aplikacji, które miały zostać dotknięte problemem: RRWallet, Bexo Wallet, NanChat, Bitcoin Libre oraz Milo. Nie we wszystkich przypadkach opublikowano jednak pełny zakres podatnych wersji, a część projektów została już porzucona lub ograniczyła wsparcie.

Analiza techniczna

Kluczowym aspektem podatności jest rozbieżność między deklarowaną a rzeczywistą entropią. Dla standardowych fraz seed opartych na 128-bitowym lub 256-bitowym materiale wejściowym oczekuje się astronomicznie dużej przestrzeni wyszukiwania. W podatnej implementacji efektywna entropia miała jednak spaść odpowiednio do około 2^39 i 2^47, co radykalnie obniżyło próg ataku.

W praktyce atak polegał na odtworzeniu działania wadliwego generatora, wygenerowaniu zbioru potencjalnych wyników PRNG, przekształceniu ich w poprawne frazy BIP39, a następnie wyprowadzeniu kluczy prywatnych i adresów dla różnych łańcuchów bloków. Kolejnym krokiem było porównanie otrzymanych adresów z publicznie dostępnymi danymi on-chain w celu identyfikacji portfeli posiadających środki.

Istotne jest to, że obecność biblioteki crypto-js w projekcie nie oznacza automatycznie podatności. Realne zagrożenie pojawia się dopiero wtedy, gdy wadliwa funkcja zostaje użyta do generowania sekretów o znaczeniu kryptograficznym, takich jak seed, klucz prywatny, token resetujący lub inny wrażliwy identyfikator.

Problem mógł dodatkowo rozprzestrzeniać się przez zależności pośrednie i forki bibliotek, które zastępowały natywne źródła losowości wywołaniami CryptoJS. To klasyczny przykład ryzyka łańcucha dostaw, w którym aplikacja dziedziczy krytyczną słabość mimo braku bezpośredniej implementacji własnej kryptografii.

Konsekwencje / ryzyko

Najpoważniejszą konsekwencją jest trwały charakter kompromitacji. Jeśli fraza odzyskiwania została wygenerowana przy użyciu słabej entropii, późniejsze poprawki biblioteki lub aktualizacje aplikacji nie usuwają problemu. Sam sekret pozostaje przewidywalny, a więc potencjalnie możliwy do odtworzenia przez osoby trzecie.

Ryzyko ma również charakter wielołańcuchowy. Jedna fraza seed może kontrolować środki w kilku sieciach jednocześnie, dlatego skutki naruszenia mogą obejmować więcej niż jeden ekosystem blockchain. W analizach uwzględniano między innymi Bitcoin, Ethereum, Tron, Polygon oraz Rootstock, ale potencjalny wpływ może być szerszy.

Dla twórców aplikacji Web3 to również ważna lekcja procesowa. Naruszenie nie wymagało łamania nowoczesnych algorytmów kryptograficznych, lecz wykorzystania błędu na bardzo wczesnym etapie generowania sekretu. Pokazuje to, jak krytyczne znaczenie ma dobór źródła losowości.

Rekomendacje

Użytkownicy, którzy utworzyli portfel w potencjalnie podatnej aplikacji, powinni założyć, że wygenerowana w ten sposób fraza odzyskiwania jest skompromitowana. Najbezpieczniejszym rozwiązaniem jest utworzenie zupełnie nowego portfela z nową frazą seed wygenerowaną przez zaufane, kryptograficznie bezpieczne źródło oraz szybka migracja środków na nowe adresy.

Samo przeniesienie starej frazy do innej aplikacji lub portfela sprzętowego nie eliminuje zagrożenia. Zmiana interfejsu nie zmienia jakości sekretu, który od początku mógł być przewidywalny.

  • nie używać CryptoJS.lib.WordArray.random() do operacji związanych z bezpieczeństwem,
  • wymusić stosowanie natywnych kryptograficznych API systemu lub przeglądarki,
  • przeprowadzić przegląd zależności pod kątem pośredniego użycia słabego PRNG,
  • jasno wskazać użytkownikom zakres podatnych wersji,
  • przygotować procedury migracji środków i regeneracji seedów,
  • objąć audytem procesy generowania kluczy, seedów i tokenów bezpieczeństwa.

Z perspektywy DevSecOps warto też wdrożyć testy wykrywające użycie niekryptograficznych generatorów liczb losowych w kontekstach wrażliwych. Kontrola powinna obejmować zarówno kod własny, jak i biblioteki zewnętrzne oraz ich pochodne.

Podsumowanie

Incydent Ill Bloom pokazuje, że jakość entropii pozostaje jednym z fundamentów bezpieczeństwa kryptowalut. W tym przypadku słabość w popularnej bibliotece JavaScript miała doprowadzić do generowania przewidywalnych fraz odzyskiwania, a w konsekwencji do przejęć portfeli i strat szacowanych na co najmniej 5,7 mln dolarów.

Najważniejszy wniosek jest prosty: jeśli seed został wygenerowany przez słaby PRNG, sama aktualizacja oprogramowania nie wystarczy. Konieczne jest wygenerowanie nowego sekretu i pełna migracja środków.

Źródła

  1. https://thehackernews.com/2026/08/cryptojs-weak-rng-behind-57-million-in.html
  2. https://illbloom.org/
  3. https://github.com/brix/crypto-js/security/advisories/GHSA-rg76-677x-56q9

Prompt injection nadal pozostaje nierozwiązanym ryzykiem dla systemów LLM

Cybersecurity news

Wprowadzenie do problemu / definicja

Prompt injection to jedna z najpoważniejszych klas podatności w aplikacjach opartych na dużych modelach językowych. Polega na takim przygotowaniu danych wejściowych lub treści zewnętrznych, aby model zmienił swoje zachowanie w sposób niezamierzony przez projektantów systemu.

Problem dotyczy nie tylko prostych chatbotów, ale również agentów AI z dostępem do narzędzi, baz danych, systemów workflow oraz interfejsów API. W efekcie model może zostać skłoniony do zignorowania zasad bezpieczeństwa, ujawnienia informacji albo wykonania operacji wykraczających poza dozwolony zakres.

W skrócie

Prompt injection pozostaje fundamentalnym zagrożeniem dla bezpieczeństwa generatywnej AI. Eksperci podkreślają, że nie jest to wyłącznie błąd pojedynczej implementacji, lecz problem architektoniczny wynikający z braku ścisłego rozdzielenia danych od instrukcji interpretowanych przez model.

Ryzyko staje się szczególnie wysokie tam, gdzie LLM działa autonomicznie, przetwarza zewnętrzne treści lub korzysta z narzędzi wykonawczych. W takich scenariuszach skutki ataku mogą wyjść poza warstwę konwersacyjną i przełożyć się na realne incydenty bezpieczeństwa.

Kontekst / historia

W ostatnich latach prompt injection konsekwentnie znajduje się wśród najważniejszych zagrożeń wskazywanych dla aplikacji LLM. Początkowo problem był kojarzony głównie z próbami obchodzenia polityk modeli i wymuszania niepożądanych odpowiedzi, jednak wraz z rozwojem ekosystemu generatywnej AI jego znaczenie wyraźnie wzrosło.

Ataki ewoluowały od prostych komend wpisywanych bezpośrednio przez użytkownika do bardziej złożonych metod pośrednich. Złośliwe instrukcje mogą być dziś osadzane w dokumentach, stronach internetowych, wiadomościach e-mail, logach, repozytoriach kodu, a nawet w zasobach multimodalnych przetwarzanych przez model.

Rosnąca popularność agentów AI jeszcze bardziej podniosła wagę tego zagrożenia. Udany atak nie musi już kończyć się jedynie błędną odpowiedzią — może prowadzić do uruchomienia akcji w systemach zewnętrznych, pobrania danych, zmiany konfiguracji lub nadużycia uprawnień.

Analiza techniczna

Źródłem problemu jest sam sposób działania modeli językowych. LLM interpretuje wejście jako wspólny kontekst semantyczny, w którym instrukcje systemowe, dane użytkownika, treści zewnętrzne i wyniki z narzędzi często występują obok siebie. Model nie posiada natywnego, w pełni niezawodnego mechanizmu rozróżniania, które elementy są danymi, a które poleceniami.

W praktyce prompt injection może przyjmować wiele form. Najczęściej wymienia się ataki bezpośrednie, pośrednie, wieloetapowe oraz warianty multimodalne. Każdy z nich wykorzystuje tę samą słabość: możliwość wpłynięcia na logikę działania modelu za pomocą odpowiednio sformułowanego kontekstu.

  • Bezpośredni prompt injection polega na wprowadzeniu złośliwej instrukcji przez użytkownika bezpośrednio do interfejsu aplikacji.
  • Pośredni prompt injection wykorzystuje zewnętrzne źródła danych, takie jak dokumenty, strony WWW, wiadomości lub wyniki wyszukiwania.
  • Wieloetapowy prompt injection stopniowo zmienia priorytety modelu i może prowadzić do obejścia filtrów bezpieczeństwa.
  • Prompt injection w systemach multimodalnych ukrywa instrukcje w obrazach, metadanych lub warstwach tekstowych zasobów.

Szczególnie niebezpieczne są środowiska, w których LLM ma dostęp do narzędzi wykonawczych. Jeśli model może wywoływać API, modyfikować dane, przeszukiwać zasoby wewnętrzne, wysyłać wiadomości lub uruchamiać działania administracyjne, prompt injection staje się mechanizmem przejęcia logiki sterowania agentem.

Problem pogłębia fakt, że zabezpieczenia oparte wyłącznie na dodatkowych promptach, prostych filtrach lub listach blokad nie rozwiązują podstawowej słabości architektonicznej. Mogą ograniczyć część prostych prób ataku, ale nie gwarantują skutecznego wykrycia wszystkich wariantów manipulacji językiem naturalnym.

Konsekwencje / ryzyko

Najpoważniejszą konsekwencją prompt injection jest utrata zaufanej granicy między wejściem a logiką działania systemu. W praktyce oznacza to, że dane dostarczone do modelu mogą przejąć kontrolę nad jego zachowaniem i wpłynąć na decyzje podejmowane przez aplikację.

  • Ujawnienie danych wrażliwych, w tym instrukcji systemowych, fragmentów kontekstu i informacji operacyjnych.
  • Nadużycie narzędzi podłączonych do agenta, takich jak bazy danych, poczta, CRM, integracje SaaS czy panele administracyjne.
  • Manipulacja analizą, podsumowaniami, klasyfikacją alertów oraz rekomendacjami bezpieczeństwa.
  • Eskalacja skutków ataku w środowiskach SOC, DevSecOps i systemach automatyzacji.
  • Ryzyko naruszenia wymogów zgodności, jeśli model przetwarza dane chronione lub wykonuje działania bez właściwej autoryzacji.

Poziom zagrożenia zależy przede wszystkim od zakresu uprawnień samej aplikacji. Model bez dostępu do narzędzi może wygenerować szkodliwą odpowiedź, ale model z szerokimi uprawnieniami operacyjnymi może stać się punktem wejścia do pełnowymiarowego incydentu cyberbezpieczeństwa.

Rekomendacje

Organizacje wdrażające LLM powinny traktować prompt injection jako ryzyko projektowe, a nie jedynie problem filtrowania treści. Obronę należy budować przede wszystkim poza samym modelem, na poziomie architektury, kontroli dostępu i polityk wykonania.

  • Stosować zasadę najmniejszych uprawnień dla wszystkich narzędzi i integracji dostępnych dla modelu.
  • Oddzielać warstwę decyzyjną od wykonawczej, aby LLM nie mógł samodzielnie uruchamiać operacji wysokiego ryzyka.
  • Wprowadzać obowiązkową autoryzację człowieka dla działań krytycznych.
  • Segmentować źródła danych i oznaczać poziom zaufania do treści wprowadzanych do kontekstu.
  • Walidować wejście i wyjście oraz ograniczać dopuszczalne formaty odpowiedzi.
  • Izolować sesje, pamięć i kontekst, aby ograniczyć przenoszenie złośliwych instrukcji między zadaniami.
  • Monitorować interakcje modelu z narzędziami, logować decyzje i analizować anomalie.
  • Prowadzić testy red-teamowe obejmujące ataki bezpośrednie, pośrednie, wieloetapowe i multimodalne.
  • Nie przechowywać sekretów, poświadczeń ani krytycznej logiki bezpieczeństwa w promptach systemowych.
  • Egzekwować polityki bezpieczeństwa na poziomie infrastruktury, bram API, brokerów narzędzi i systemów kontroli dostępu.

Dojrzałe podejście zakłada, że prompt injection nie da się całkowicie wyeliminować wyłącznie na poziomie modelu. Celem powinno być ograniczenie skutków potencjalnego ataku oraz zmniejszenie powierzchni ryzyka w całym łańcuchu wykonawczym.

Podsumowanie

Prompt injection pozostaje jednym z kluczowych wyzwań bezpieczeństwa generatywnej AI. Problem wynika z samej natury modeli językowych, które interpretują dane i instrukcje w jednej przestrzeni kontekstowej, co utrudnia niezawodne oddzielenie treści od poleceń.

Wraz z rozwojem agentów AI i ich integracją z systemami biznesowymi zagrożenie będzie rosło. Z perspektywy cyberbezpieczeństwa oznacza to konieczność projektowania aplikacji LLM zgodnie z zasadami zero trust, silnej segmentacji oraz niezależnej od modelu kontroli wykonania.

Źródła

  1. https://www.infosecurity-magazine.com/news/infosec-europe-prompt-injection/
  2. https://genai.owasp.org/llmrisk/llm01-prompt-injection/
  3. https://owasp.org/www-community/attacks/PromptInjection
  4. https://cheatsheetseries.owasp.org/cheatsheets/LLM_Prompt_Injection_Prevention_Cheat_Sheet.html
  5. https://owasp.org/www-project-top-10-for-large-language-model-applications/assets/PDF/OWASP-Top-10-for-LLMs-v2025.pdf