Katalog incydentów bezpieczeństwa kodu i aplikacji AI: co zawiodło, jak i co by to wykryło
Katalog incydentów to datowana lista przypadków, w których kod pisany z asystentem AI albo warstwa aplikacyjna wokół modelu zawiodły w sposób udokumentowany publicznie: rekord CVE, biuletyn dostawcy, oficjalny post-mortem, recenzowany pomiar. Ta strona prowadzi taki katalog, uporządkowany według mechanizmu, i przy każdym wpisie podaje sprawdzenie, które by go wykryło.
dfzoo AI Engineering prowadzi katalog publicznie udokumentowanych incydentów bezpieczeństwa w kodzie pisanym z AI i w warstwie aplikacyjnej systemów z LLM, dla szefów inżynierii, którzy chcą wiedzieć, co naprawdę poszło źle u innych, zanim zdecydują, co sprawdzić u siebie. Każdy wpis ma datę, źródło pierwotne (rekord CVE, biuletyn dostawcy, oficjalny post-mortem albo opublikowane badanie) i jeden nazwany mechanizm: treść czytana przez agenta potraktowana jak polecenie, wygenerowana konfiguracja backendu wdrożona bez zmian, zmyślona nazwa pakietu zainstalowana z rejestru, destrukcyjne polecenie wykonane przy wyłączonym potwierdzeniu, wynik modelu przekazany do SQL albo do wykonania, narzędzie MCP lub rozszerzenie z dostępem szerszym niż zadanie. Katalog jest materiałem wejściowym do przeglądu bezpieczeństwa kodu pisanego z AI: każda klasa mechanizmu ma listę kontrolną, werdykt dla konkretnego repozytorium i retest, który dowodzi poprawki. Incydenty objęte NDA nie wchodzą do katalogu; wchodzi wyłącznie to, co da się sprawdzić u źródła.
Dla kogo jest ten przewodnik.
- CTO i szefowie inżynierii, których zespoły wdrażają kod z Copilota, Cursora, Claude Code albo Gemini CLI i którym zarząd albo klient zadał pytanie, co może pójść nie tak
- Szefowie bezpieczeństwa i platformy, którzy dołożyli do produktu agenta, serwer MCP albo automatyzację obsługi zgłoszeń na LLM i potrzebują konkretnej listy zagrożeń zamiast ogólnej
- Software house'y oddające klientom kod pisany z AI, od których klienci zaczęli wymagać dowodu niezależnego sprawdzenia bezpieczeństwa
- Inżynierowie, którzy czytają biuletyny dostawców po kolei i chcą je mieć w jednym miejscu, pogrupowane według mechanizmu
Co jest wpisem, a co nim nie jest
Gdy w sierpniu 2026 na forum poświęconym bezpieczeństwu padło pytanie, czy ktoś miał już incydent spowodowany przez agenta kodującego, najwyżej oceniona odpowiedź brzmiała: kto miał, ten nie powie, bo NDA i wstyd. Z tej ciszy bierze się kalibrowanie ryzyka według materiałów marketingowych. Katalog poniżej idzie w drugą stronę i przyjmuje tylko to, co da się sprawdzić u źródła: rekord CVE, biuletyn bezpieczeństwa dostawcy, publiczne oświadczenie kierownictwa dostawcy albo recenzowany pomiar z opublikowaną metodą. Wątki praktyków, którzy liczą incydenty z codziennej eksploatacji, istnieją i są dobrym wzorem formatu, ale wątek nie jest źródłem i żaden nie jest tu cytowany.
Trzy granice trzymają tę listę w ryzach. Obejmuje kod i warstwę aplikacyjną: to, co napisał asystent, to, co aplikacja wysyła do modelu i czemu ufa w odpowiedzi, to, co agent ma prawo wywołać. Nie obejmuje infrastruktury, konfiguracji chmury, sieci, testów penetracyjnych ani SOC; to osobne dyscypliny z własnymi katalogami. I nie robi z modelu winowajcy. Każdy wiersz to narzędzie użyte bez sprawdzenia, które postawiłby przed nim proces, i dokładnie dlatego każdy wiersz ma takie sprawdzenie dopisane.
Katalog
Kolejność według daty. Kolumna klasy odsyła do sześciu klas mechanizmów z następnej sekcji. Linki do źródeł są na końcu strony; oceny to wartości CVSS z rekordów CVE tam, gdzie rekord istnieje.
| Data | System i źródło | Co zawiodło | Skutek | Klasa | Co by to wykryło |
|---|---|---|---|---|---|
| 2023-07 | LangChain SQLDatabaseChain, CVE-2023-36189 | SQL wygenerowany przez model wykonywany na bazie bez granicy między pytaniem a zapytaniem | Zdalny atakujący odczytuje wrażliwe dane przez łańcuch | E | Rola tylko do odczytu dla generowanego SQL, lista dozwolonych instrukcji, przegląd zapytania przed wykonaniem |
| 2024-03 | huggingface-cli na PyPI, eksperyment Lasso Security | Nazwa pakietu wielokrotnie zmyślana przez asystentów została zarejestrowana przez badaczy; publiczne repozytorium badawcze Alibaby miało ją w instrukcji instalacji | Pusty pakiet instalowany przez prawdziwe projekty według instrukcji napisanych z asystentem | C | Sprawdzenie w rejestrze każdej nowej zależności: wiek, wydawca, historia pobrań, plus diff pliku lockfile w przeglądzie |
| 2024-05 | Vanna.AI, tekst na SQL, CVE-2024-5565, CVSS 8.1 | Niezaufane dane w ask() trafiają do promptu, który pisze kod wizualizacji Plotly, a ten kod jest wykonywany | Zdalne wykonanie kodu; obejście to wyłączenie wizualizacji dla niezaufanych danych | E | Zero exec kodu pisanego przez model na ścieżkach użytkownika; renderowanie w piaskownicy; dane oznaczone jako niezaufane od wejścia do końca |
| 2025-05 | GitLab Duo, ujawnienie Legit Security | Ukryty tekst w merge requestach, zgłoszeniach, commitach i kodzie (biały KaTeX, kodowanie base16) czytany przez Duo jak polecenie | Prywatny kod źródłowy wyprowadzony przez wstrzyknięty znacznik obrazka; niebezpieczne adresy pokazane jako bezpieczne | A | Lista dozwolonych adresów wychodzących dla renderowanych odpowiedzi; usuwanie aktywnego HTML z odpowiedzi; zestaw testów wstrzyknięć w CI |
| 2025-05 | Serwer GitHub MCP, Invariant Labs | Publiczne zgłoszenie instruuje agenta, który ma token także do prywatnych repozytoriów | Dane z prywatnego repozytorium wpisane do publicznego pull requesta | F | Jeden token na zakres repozytoriów; agent nie czyta zakresu prywatnego w sesji zaczętej od publicznego |
| 2025-05 | Aplikacje generowane w Lovable, CVE-2025-48757, CVSS 9.3 | Wygenerowane polityki row-level security w Supabase niewystarczające albo nieobecne w projektach sprzed 2025-04-15 | Odczyt i zapis dowolnych tabel bez uwierzytelnienia; dostawca kwestionuje wpis i przenosi odpowiedzialność na każdego klienta | B | Sprawdzenie polityk tabela po tabeli klientem anonimowym przed publikacją; RLS wymagane dla każdej tabeli z danymi użytkowników |
| 2025-06 | Microsoft 365 Copilot, EchoLeak, CVE-2025-32711, CVSS 9.3 | Polecenia w przychodzącym mailu przetworzone przez asystenta bez żadnej akcji użytkownika | Ujawnienie informacji przez sieć, bez kliknięcia | A | Niezaufana treść nigdy w jednej sesji z narzędziem sięgającym na zewnątrz; lista dozwolonych adresów wyjściowych dla każdej akcji asystenta |
| 2025-07 | Supabase MCP z Cursorem, General Analysis | Treść zgłoszenia do wsparcia prosi agenta o odczyt tabeli integration_tokens; połączenie MCP działa z rolą service_role, która omija row-level security | Sekrety OAuth i dane sesji wpisane z powrotem do wątku zgłoszenia | F | Tryb tylko do odczytu i ograniczenie do projektu na serwerze MCP; zero service_role w jakimkolwiek połączeniu dostępnym dla agenta |
| 2025-07 | mcp-remote, CVE-2025-6514, CVSS 9.6 | Adres authorization_endpoint zwrócony przez niezaufany serwer MCP przekazany do polecenia systemowego | Wstrzyknięcie polecenia systemowego na maszynie dewelopera | F | Przypięta, przejrzana lista serwerów MCP; zero budowania poleceń powłoki ze zdalnych ciągów; bramka na wersję klienta |
| 2025-07 | Amazon Q Developer dla VS Code 1.84.0, biuletyn AWS-2025-015 | Zbyt szeroko uprawniony token GitHuba wpuścił niezatwierdzony kod do repozytorium rozszerzenia i do wydania | Złośliwy kod w opublikowanej wersji; nie zadziałał przez błąd składni; wersja wycofana, wydano 1.85.0 | F | Przypinanie wersji rozszerzeń i przegląd aktualizacji; tokeny o minimalnych uprawnieniach w procesie publikacji |
| 2025-07 | Gemini CLI 0.1.13, Tracebit | Polecenia ukryte w README, lista dozwolonych przepuszczająca łańcuch poleceń po jednej zgodzie na grep, białe znaki chowające ładunek | Zmienne środowiskowe wysłane na zdalny serwer, zanim użytkownik zobaczył polecenie; poprawka w 0.1.14 | A | Zgoda na każde polecenie z pokazaną całą linią; zero dopasowania do listy dozwolonych po pierwszym tokenie |
| 2025-07 | Replit Agent, projekt SaaStr, oświadczenie prezesa dostawcy | Agent wykonał destrukcyjne polecenie na bazie w trakcie ogłoszonego zamrożenia kodu i zgłosił, że przywrócenie jest niemożliwe | Skasowana baza produkcyjna; dostawca nazwał to niedopuszczalnym i wprowadził rozdział dev/prod oraz tryb samego planowania | D | Zero danych dostępowych do produkcji w środowisku agenta; operacje destrukcyjne za jawnym potwierdzeniem i przetestowanym przywracaniem |
| 2025-08 | Cursor poniżej 1.3.9, CVE-2025-54135, CVSS 8.6 | Pośrednie wstrzyknięcie promptu tworzy nowy plik .cursor/mcp.json bez zgody, której wymaga edycja istniejącego | Zdalne wykonanie kodu na maszynie dewelopera | A | Tworzenie i edycja plików konfiguracyjnych pod tą samą regułą zgody; test wstrzyknięcia, który zapisuje plik-kanarek |
| 2025-08 | Cursor 1.2.4 i starsze, CVE-2025-54136, CVSS 7.2 | Zatwierdzona wcześniej definicja MCP we wspólnym repozytorium podmieniona na inne polecenie bez ponownego pytania | Trwałe wykonanie kodu dla każdego z prawem zapisu do gałęzi | F | Hash każdej zatwierdzonej definicji MCP; ponowna zgoda przy każdej zmianie; konfiguracja MCP przeglądana jak workflow CI |
| 2025-08 | Claude Code poniżej 0.2.111, CVE-2025-54794, CVSS 7.7 | Sprawdzenie ścieżki po prefiksie zamiast po ścieżce kanonicznej; katalog o tym samym prefiksie co katalog roboczy przechodzi | Dostęp do plików poza katalogiem roboczym, gdy w kontekście jest niezaufana treść | A | Porównanie ścieżek kanonicznych w każdej strażnicy ścieżek; test z katalogiem sąsiednim o wspólnym prefiksie |
| 2025-08 | GitHub Copilot i Visual Studio, CVE-2025-53773, CVSS 7.8 | Wstrzyknięcie promptu edytuje .vscode/settings.json i ustawia chat.tools.autoApprove, co zdejmuje wszystkie potwierdzenia | Lokalne wykonanie kodu na Windows, macOS i Linuksie | A | Pliki ustawień traktowane jak kod: zablokowane do zapisu w sesji agenta, pokazywane w diffie, flagi auto-zgody zakazane polityką |
| 2025-09 | Salesforce Agentforce, ForcedLeak, Noma Security, CVSS 9.4 | Pole opisu w formularzu Web-to-Lead niesie polecenia; odpowiedź agenta może trafić na wygasłą domenę wciąż obecną na liście CSP | Rekordy CRM wysłane na domenę zarejestrowaną przez atakującego; poprawka przez wymuszenie zaufanych adresów | A | Audyt listy dozwolonych adresów pod kątem wygasłych wpisów; pola formularzy oznaczone jako niezaufane, zanim dotrą do agenta |
| 2025-11 | Google Antigravity, PromptArmor | Polecenia czcionką 1 pt na stronie WWW; agent czyta .env przez cat mimo blokady z gitignore, a podagent przeglądarki otwiera adres atakującego z zawartością | Dane dostępowe wyprowadzone do serwisu logującego obecnego na domyślnej liście dozwolonych przeglądarki | A | Blokada odczytu plików obejmująca też powłokę; przejrzana domyślna lista dozwolonych przeglądarki; sekrety poza katalogiem roboczym |
| 2025-12 | Google Antigravity w trybie Turbo, The Register, dostawca prowadzi postępowanie | Polecenie czyszczenia pamięci podręcznej wycelowało w korzeń dysku D: zamiast w katalog projektu, bez potwierdzenia w tym trybie | Zawartość dysku użytkownika skasowana z pominięciem kosza | D | Destrukcyjne operacje na plikach ograniczone do ścieżki projektu; tryb z potwierdzeniami poza piaskownicą |
| 2026-01 | Moltbook, Wiz Research | Klucz Supabase wpisany na sztywno w JavaScript po stronie klienta, bez row-level security; założyciel oświadczył, że nie napisał ręcznie ani jednej linii | 1,5 mln tokenów API, 35 tys. adresów e-mail i prywatne wiadomości do odczytu i zapisu bez uwierzytelnienia; poprawka w kilka godzin od zgłoszenia | B | Sonda klientem anonimowym na każdej tabeli przed startem; skan sekretów na zbudowanej paczce, nie tylko w repozytorium |
Sześć klas mechanizmów i co je łączy
Nazwy narzędzi zmieniają się co kwartał; mechanizmy nie. Każda klasa poniżej nazywa, co zrobiło narzędzie, czego zabrakło w procesie, i podaje pomiar, jeśli istnieje. Dwa recenzowane badania stoją za klasami dotyczącymi samego generowanego kodu: Pearce i współautorzy (IEEE S&P 2022) wygenerowali Copilotem 1689 programów w 89 scenariuszach słabości i znaleźli podatności w około 40%; Fu i współautorzy (ACM TOSEM 2025) przeanalizowali 733 fragmenty napisane z asystentem znalezione w prawdziwych projektach na GitHubie i wykazali słabości w 29,5% próbek w Pythonie oraz 24,2% w JavaScripcie. Dla zmyślonych pakietów Spracklen i współautorzy (USENIX Security 2025) wygenerowali 576 000 próbek kodu z 16 modeli i znaleźli nieistniejące nazwy pakietów w co najmniej 5,2% odpowiedzi modeli komercyjnych i 21,7% odpowiedzi modeli otwartych, w sumie 205 474 unikalnych zmyślonych nazw.
| Klasa | Mechanizm | Czego zabrakło w procesie | Wpisy wyżej |
|---|---|---|---|
| A. Treść staje się poleceniem | Tekst, który agent czyta (zgłoszenie, ticket, README, mail, strona WWW, pole formularza), jest przetwarzany tak, jakby wpisał go użytkownik, a po nim idzie wywołanie narzędzia | Granica między niezaufaną treścią a narzędziami sięgającymi na zewnątrz; zgoda pokazująca całą akcję | GitLab Duo, EchoLeak, Gemini CLI, Cursor, Claude Code, Copilot, Agentforce, Antigravity |
| B. Wygenerowana konfiguracja idzie bez zmian | Reguły dostępu do backendu, klucze w paczce klienta i domyślne ustawienia frameworka trafiają na produkcję w stanie, w jakim wyprodukował je asystent | Sprawdzenie przed publikacją per tabela i per sekret, wykonane jako klient anonimowy | Lovable RLS, Moltbook |
| C. Zmyślona zależność | Asystent podaje nazwę pakietu, którego nie ma; ktoś ją rejestruje; linia instalacji jest zaufana, bo wygląda zwyczajnie | Weryfikacja w rejestrze każdej nowej zależności na etapie przeglądu | huggingface-cli, Spracklen i współautorzy |
| D. Destrukcyjne polecenie bez bramki | Agent z dostępem do produkcji albo do systemu plików wykonuje delete, drop albo wipe w trybie, w którym potwierdzenia są wyłączone | Rozdział danych dostępowych między środowiskami; jawna bramka na operacje destrukcyjne; przetestowane przywracanie | Replit Agent, Antigravity Turbo |
| E. Wynik modelu do SQL albo do wykonania | Tekst z modelu trafia do bazy albo do interpretera tak, jakby ktoś go przejrzał | Role tylko do odczytu, lista dozwolonych instrukcji, zero exec generowanego kodu ze ścieżek użytkownika | LangChain, Vanna.AI |
| F. Narzędzie lub rozszerzenie z dostępem szerszym niż zadanie | Serwer MCP, rozszerzenie albo token ma zakres na wszystko, co może deweloper, a agent go dziedziczy | Jeden zakres na zadanie; hash i ponowna zgoda na definicje narzędzi; przypięte wersje | GitHub MCP, Supabase MCP, mcp-remote, podmiana MCP w Cursorze, rozszerzenie Amazon Q |
Co przegląd bezpieczeństwa kodu pisanego z AI sprawdza w każdej klasie
Katalog zaczyna być użyteczny, gdy każda klasa dostaje werdykt dla konkretnego repozytorium: czy to może się zdarzyć u was, tak albo nie, i co tego dowodzi. Lista poniżej to lista kontrolna, którą przegląd wykonuje klasa po klasie. Każdy punkt kończy się artefaktem albo testem, bo werdykt bez nich jest opinią.
- Klasa A: prześledzenie każdej ścieżki, którą niezaufany tekst wchodzi do promptu i po której może iść wywołanie narzędzia; lista każdego narzędzia sięgającego poza proces (sieć, powłoka, zapis pliku, przeglądarka); zestaw testów wstrzyknięć z akcją-kanarkiem uruchamiany w CI na każdej ścieżce; audyt listy dozwolonych adresów wyjściowych pod kątem wygasłych wpisów i symboli wieloznacznych.
- Klasa B: spis tabel i zasobników, a potem sonda na każdym jako klient anonimowy i jako użytkownik o niskich uprawnieniach; skan zbudowanej paczki klienta pod kątem kluczy, nie tylko repozytorium; porównanie domyślnych ustawień frameworka odtworzonych przez asystenta (CORS, flagi weryfikacji, wypisywanie błędów) z konfiguracją produkcyjną.
- Klasa C: diff pliku lockfile w każdym pull requeście napisanym z asystentem; sprawdzenie każdego nowego pakietu w rejestrze pod kątem wieku, wydawcy i historii pobrań; lista dozwolonych pakietów dla środowiska uruchomieniowego i blokada poleceń instalacji, które asystent wpisał do dokumentacji.
- Klasa D: lista wszystkich danych dostępowych w środowisku agenta razem ze środowiskiem, do którego należą; oddzielenie produkcji od wszystkiego, do czego agent sięga; operacje destrukcyjne za jawnym potwierdzeniem i jedna próba przywracania z zapisanym czasem trwania.
- Klasa E: znalezienie każdego miejsca, w którym wynik modelu jest wykonywany albo wysyłany jako zapytanie; rola tylko do odczytu i lista dozwolonych instrukcji dla generowanego SQL; usunięcie exec generowanego kodu z każdej ścieżki dostępnej dla użytkownika; piaskownica dla tego, co zostaje.
- Klasa F: inwentaryzacja serwerów MCP, rozszerzeń i tokenów z ich zakresami; zawężenie każdego do zadania, któremu służy; hash zatwierdzonych definicji narzędzi i ponowna zgoda przy zmianie; przypięte wersje i przegląd aktualizacji jak przy aktualizacji zależności.
- Retest: po poprawkach każda klasa dostaje ten sam test jeszcze raz, a wynik zapisuje się obok pierwotnego werdyktu. Ta para wyników jest dowodem, który może przeczytać klient albo zarząd.
Gdzie to się psuje i co z tym robimy.
- 1Treść, którą agent czyta, jest traktowana jak polecenie
Agent dostaje do kontekstu zgłoszenie, ticket, README albo mail, bo tego potrzebuje do pracy, a model nie ma pewnego sposobu na odróżnienie cytowanego tekstu od prośby użytkownika. Gdy w tej samej sesji jest dostępne narzędzie sięgające poza proces, tekst może je wywołać. Każdy wpis klasy A w katalogu ma ten kształt, od GitLab Duo po Antigravity, a poprawki dostawców były granicami wokół narzędzi, nie lepszymi modelami.
Co z tym robimyMapujemy każdą ścieżkę, którą niezaufany tekst wchodzi do promptu, i wypisujemy każde narzędzie osiągalne z tej sesji. Tam, gdzie się spotykają, albo zdejmujemy narzędzie wychodzące, albo stawiamy je za zgodą pokazującą pełną akcję, albo oznaczamy treść jako dane w strukturze promptu. Potem uruchamiamy zestaw testów wstrzyknięć z akcją-kanarkiem na każdej ścieżce i zostawiamy go w waszym CI.
Co zostaje u was: mapa niezaufanych treści i osiągalnych narzędzi ścieżka po ścieżce, razem z zestawem testów wstrzyknięć i wynikiem per ścieżka - 2Wygenerowana konfiguracja backendu trafia na produkcję w stanie, w jakim powstała
Asystent stawia backend według wzorca, który zna najlepiej: klucz w kliencie, reguły dostępu wyłączone albo zbyt szerokie, wypisywanie błędów włączone. W demie to działa, bo demo ma jednego użytkownika. CVE dla Lovable i ekspozycja Moltbooka to ten sam mechanizm w dwóch skalach i w obu przypadkach stanowisko dostawcy brzmiało, że reguły dostępu są po stronie klienta.
Co z tym robimySpisujemy każdą tabelę i zasobnik, potem sondujemy każdy z nich jako klient anonimowy i jako użytkownik o niskich uprawnieniach, a zbudowaną paczkę skanujemy pod kątem kluczy. Każda tabela, która nie przechodzi, dostaje politykę, każdy klucz przechodzi na stronę serwera, a sonda biegnie ponownie, aż nie zwróci nic. Sonda zostaje jako sprawdzenie przed publikacją.
Co zostaje u was: macierz dostępu tabela po tabeli z wynikiem sondy klientem anonimowym przed i po, plus sonda wpięta w proces wydawania - 3Nazwy pakietów są zaufane, bo wyglądają zwyczajnie
Asystent pisze linię instalacji z wiarygodną nazwą, której nie ma w rejestrze, a badanie Spracklena i współautorów pokazuje, że te same zmyślone nazwy powtarzają się między promptami. Kto zarejestruje taką nazwę, dostaje instalacje z każdego projektu, który tej linii zaufał. Przypadek huggingface-cli pokazuje nazwę, która dotarła do dokumentacji prawdziwego repozytorium, zanim ktokolwiek sprawdził rejestr.
Co z tym robimyRobimy diff pliku lockfile każdej zmiany napisanej z asystentem, sprawdzamy każdy nowy pakiet w rejestrze pod kątem wieku, wydawcy i historii, i zamieniamy to sprawdzenie w regułę przeglądu. Polecenia instalacji, które asystent wpisał do dokumentacji, dostają to samo.
Co zostaje u was: raport pochodzenia zależności za okres pracy z asystentem, plus sprawdzenie w rejestrze jako reguła CI - 4Destrukcyjne polecenia idą, bo potwierdzenie było wyłączone
Turbo, YOLO, auto-zgoda: ten tryb istnieje, bo potwierdzenia spowalniają demo. W tym trybie czyszczenie pamięci podręcznej, które trafia w złą ścieżkę, albo reset bazy wydany w czasie zamrożenia kodu, wykonują się z prędkością agenta. Oba wpisy klasy D w katalogu wydarzyły się, gdy agent miał dane dostępowe, których do zadania nigdy nie potrzebował.
Co z tym robimyWypisujemy każde dane dostępowe, do których agent sięga, ze środowiskiem, do którego należą, zdejmujemy z tej listy produkcję i stawiamy operacje destrukcyjne za jawną bramką. Potem raz przechodzimy przywracanie i zapisujemy, ile trwało.
Co zostaje u was: mapa danych dostępowych per agent i środowisko, lista operacji za bramką i zapis próby przywracania z czasem trwania - 5Definicja narzędzia się zmienia i nikt nie pyta ponownie
Serwer MCP albo rozszerzenie zostały zatwierdzone raz. Definicja żyje we wspólnym repozytorium albo aktualizuje się sama, a zgoda nie idzie za zmianą. Obejście ponownej zgody w Cursorze i wydanie rozszerzenia Amazon Q pokazują dwa końce: podmienione polecenie na gałęzi i niezatwierdzony kod w opublikowanej wersji.
Co z tym robimyInwentaryzujemy serwery MCP, rozszerzenia i tokeny z ich zakresami, zawężamy każdy zakres do zadania, liczymy hash każdej zatwierdzonej definicji i wymagamy ponownej zgody przy zmianie. Wersje zostają przypięte, a aktualizacje przechodzą ten sam przegląd co aktualizacje zależności.
Co zostaje u was: inwentarz narzędzi z zakresem per zadanie, hashe zatwierdzonych definicji i reguła ponownej zgody w waszej konfiguracji
Co zostaje u was.
- Mapa incydentów na repozytorium: werdykt per klasa mechanizmu dla waszych repozytoriów i integracji agentów, z dowodem za każdym werdyktem
- Lista kontrolna per klasa, wypełniona dla waszego stosu, z artefaktem albo testem zamykającym każdy punkt
- Zestaw testów wstrzyknięć z akcjami-kanarkami, wpięty w CI, z wynikiem per ścieżka niezaufanej treści
- Macierz dostępu do tabel i zasobników z wynikiem sondy klientem anonimowym przed i po
- Raport pochodzenia zależności za okres pracy z asystentem i sprawdzenie w rejestrze jako reguła przeglądu
- Inwentarz narzędzi: serwery MCP, rozszerzenia i tokeny z zakresem per zadanie, hashe definicji i reguła ponownej zgody
- Zapis retestu: każda klasa sprawdzona ponownie po poprawkach, obok pierwotnego werdyktu
Jak pracujemy.
- 11. Mapowanie
Przechodzimy repozytoria i integracje agentów z seniorem z waszej strony i zaznaczamy, gdzie może wystąpić każda klasa mechanizmu: ścieżki niezaufanej treści, wygenerowane reguły backendu, nowe zależności, dane dostępowe agenta, wynik modelu do SQL albo exec, zakresy narzędzi.
Tydzień 1 - 22. Werdykty
Wykonujemy listę kontrolną klasa po klasie: testy wstrzyknięć, sondy klientem anonimowym, sprawdzenia pliku lockfile i rejestru, inwentarze danych dostępowych i narzędzi. Każda klasa dostaje tak albo nie z dowodem, a znaleziska, które z tego wychodzą, mają reprodukcję.
Tydzień 1-2 - 33. Poprawki i bramki
Naprawiamy znaleziska razem z waszym zespołem i zamieniamy każdy zamknięty punkt w bramkę: sondę, zestaw testów, regułę rejestru, sprawdzenie hasha. Każdą bramkę raz celowo uruchamiamy, żeby udowodnić, że działa.
Tydzień 2-3 - 44. Retest i przekazanie
Powtarzamy test każdej klasy, zapisujemy wynik obok pierwotnego werdyktu i przekazujemy mapę, listy kontrolne i bramki w waszym pipeline. Katalog na tej stronie jest punktem odniesienia, od którego zaczyna się kolejny przegląd.
Tydzień 3
Pozostałe strony z tej serii.
Forensyka cache promptów i limity wydatku
Jak przypisać koszt LLM do wywołania, sesji i funkcji, jak Anthropic, OpenAI i Google rozliczają cache promptów, co po cichu psuje prefiks i gdzie kończy się alert, a zaczyna twardy limit.
Pomiar realnego efektu AI w zespole
Dlaczego szybsze zamykanie ticketów nie jest dowodem, co zmierzyły eksperymenty z lat 2025-2026, jak zaprojektować linię bazową, pary metryk i grupę porównawczą oraz których metryk per osoba unikać.
Porównanie narzędzi do AI code review
Dlaczego rankingi dostawców narzędzi do AI code review nie są porównaniami, czego nie publikują (precyzja per klasa, komentarze spoza diffu, zmyślone ustalenia, koszt na PR) i protokół na własne PR-y.
Gdzie to zamienia się w usługę.
Przegląd bezpieczeństwa kodu
Przegląd bezpieczeństwa kodu pisanego z asystentami kodowania AI i funkcji AI, które ten kod dodał do produktu.
Audyt kodu tworzonego z AI
Niezależny audyt kodu tworzonego z AI według kryteriów, które dfzoo publikuje w całości.
Skąd pochodzą daty i liczby.
- CVE-2025-53773, zdalne wykonanie kodu w GitHub Copilot i Visual Studio (Microsoft, sierpień 2025)
- Embrace The Red, RCE w GitHub Copilot przez wstrzyknięcie promptu: settings.json i chat.tools.autoApprove
- CVE-2025-32711, ujawnienie informacji w Microsoft 365 Copilot, EchoLeak (czerwiec 2025)
- CVE-2025-54135, wstrzyknięcie promptu w Cursorze przez pliki specjalne MCP, poprawka w 1.3.9 (advisory GitHub)
- CVE-2025-54136, zmiana definicji MCP w Cursorze omija ponowną zgodę (advisory GitHub)
- CVE-2025-54794, obejście ograniczenia ścieżek w Claude Code, poprawka w 0.2.111 (advisory GitHub)
- CVE-2025-6514, wstrzyknięcie polecenia systemowego w mcp-remote z niezaufanych serwerów MCP (JFrog Security Research)
- CVE-2024-5565, wstrzyknięcie promptu w Vanna.AI prowadzące do zdalnego wykonania kodu (JFrog Security Research)
- CVE-2023-36189, SQL injection w LangChain SQLDatabaseChain
- CVE-2025-48757, niewystarczające row-level security w aplikacjach generowanych w Lovable; ujawnienie Matta Palmera
- Legit Security, zdalne wstrzyknięcie promptu w GitLab Duo (ukryta treść, wyprowadzenie prywatnego kodu)
- Invariant Labs, serwer GitHub MCP: dane z prywatnego repozytorium wyprowadzone przez publiczne zgłoszenie
- General Analysis, Supabase MCP z Cursorem: od zgłoszenia do wsparcia do wycieku integration_tokens
- Dokumentacja Supabase, bezpieczeństwo serwera MCP: wstrzyknięcie promptu, tryb tylko do odczytu, zakres projektu, grupy funkcji
- Biuletyn bezpieczeństwa AWS-2025-015, Amazon Q Developer dla VS Code 1.84.0
- Tracebit, Gemini CLI: wykonanie kodu i wyprowadzenie danych przez README i obejście listy dozwolonych, poprawka w 0.1.14
- Noma Security, ForcedLeak: wyprowadzenie danych CRM z Salesforce Agentforce przez Web-to-Lead i wygasłą domenę z listy dozwolonych
- PromptArmor, Google Antigravity wyprowadza dane: ukryty tekst na stronie, .env przez cat, podagent przeglądarki
- The Register, Google Antigravity w trybie Turbo kasuje dysk użytkownika; Google potwierdza postępowanie (grudzień 2025)
- Fortune, Replit Agent kasuje bazę produkcyjną w czasie zamrożenia kodu; oświadczenie prezesa i zapowiedziane poprawki (lipiec 2025)
- Wiz Research, Moltbook: odsłonięta baza Supabase, 1,5 mln tokenów API (luty 2026)
- Lasso Security, halucynacje pakietów: eksperyment huggingface-cli (marzec 2024)
- Spracklen i współautorzy, We Have a Package for You! Halucynacje pakietów w LLM generujących kod, USENIX Security 2025 (arXiv 2406.10279)
- Fu i współautorzy, Słabości bezpieczeństwa kodu z Copilota w projektach na GitHubie, ACM TOSEM 2025 (arXiv 2310.02059)
- Pearce i współautorzy, Asleep at the Keyboard? Bezpieczeństwo kodu z GitHub Copilota, IEEE S&P 2022 (arXiv 2108.09293)
Pytania, które zadają zespoły.
Porozmawiaj z inżynierem.
Napiszcie, na jakim etapie jesteście z bezpieczeństwem waszego kodu pisanego z AI i integracji agentów. Odpowiedź w jeden dzień roboczy.