Abstrakcyjna karta diagramu technicznego zatytułowana „Jedna iniekcja, dwie warstwy”, z podtytułem „Autonomiczny agent dotarł do produkcyjnej bazy danych McKinsey's Lilli przez nieuwierzytelniony punkt końcowy. Instrukcje rządzące asystentem znajdowały się w tej samej bazie danych.” Rząd pięciu zaokrąglonych bloków oznaczonych „wymagane uwierzytelnienie” znajduje się nad etykietą o treści „Publiczna powierzchnia API · ponad 200 udokumentowanych punktów końcowych”; trzeci blok jest podświetlony na bursztynowo i oznaczony „bez uwierzytelnienia · wyszukiwanie”. Ciągła cyjanowa linia opada z tego bloku do drugiego rzędu pięciu płyt bazodanowych oznaczonych jako wiadomości czatu, pliki, konta, przestrzenie robocze i monity systemowe, z nagłówkiem „Produkcyjna baza danych · odczyt i zapis”. Przerywana bursztynowa strzałka opada z płyty „monity systemowe” do ciemnogranatowego panelu o treści „Warstwa monitów — instrukcje rządzące asystentem były wierszami w tej samej bazie danych. Jedna operacja UPDATE przez jedno wywołanie HTTP zmieniłaby je: bez wdrażania, bez zmian w kodzie.” Cztery kafle statystyczne wzdłuż dolnej krawędzi głoszą: 22 punkty końcowe niewymagające uwierzytelnienia, 2 godziny do uzyskania dostępu do odczytu i zapisu, 95 monitów systemowych w tej samej bazie danych oraz publiczne ujawnienie 9 marca. Logo OrcaRouter jest skomponowane w białym pasku poniżej grafiki.
AI Safety Incidents

Agent AI zhakował Lilli McKinsey w dwie godziny. Prompty były zapisywalne.

Autor

Rowan Sterling

Data publikacji

Najnowsze modele · 20Zobacz wszystkie modele →
Benchmarki: Artificial Analysis · aktualizowane codziennie
Powrót do wszystkich wpisów

28 lutego 2026 r. autonomiczny agent ofensywny ds. bezpieczeństwa, uruchomiony przez startup zajmujący się bezpieczeństwem CodeWall, wykrył nieuwierzytelnioną iniekcję SQL w publicznym interfejsie API Lilli — wewnętrznej platformie AI McKinsey & Company — i w ciągu mniej więcej dwóch godzin uzyskał dostęp do odczytu i zapisu do stojącej za nią produkcyjnej bazy danych. CodeWall opublikował łańcuch ataku 9 marca 2026 r. Z jego relacji wynika, że baza ta zawierała 46,5 mln wiadomości czatu w postaci jawnej, 57 000 kont użytkowników, 728 000 nazw plików oraz prompty systemowe określające, w jaki sposób odpowiada Lilli — przechowywane jako zwykłe wiersze, a więc możliwe do zapisania przez tę samą iniekcję. McKinsey potwierdził tę podatność i twierdzi, że naprawił ją w ciągu kilku godzin; podaje, że niezależne śledztwo kryminalistyczne strony trzeciej nie wykazało żadnych dowodów na uzyskanie dostępu do danych klientów ani do poufnych informacji klientów. Archiwum klasyfikuje ten wpis jako krytyczny, z pewnością A, udokumentowaną realną szkodą i statusem przełomowym. Pełny wpis, wraz z ocenami dotkliwości i pewności oraz sąsiednimi wpisami dotyczącymi wtargnięć sterowanych przez agentów, znajduje się w Orca AI Incident Archive.

Ta część historii, która dotarła najdalej, nie dotyczy wstrzyknięcia SQL. Wstrzyknięcie SQL to klasa błędów tak stara, że ma stronę w Wikipedii dłuższą niż większość biuletynów bezpieczeństwa dostawców, a McKinsey nie jest małym celem. To, co trafiło najdalej, to druga połowa ustalenia CodeWall: że instrukcje kontrolujące asystenta — prompty decydujące o tym, na co odpowie, czego odmówi i jakie źródła przytoczy — znajdowały się w tej samej bazie danych, do której agent mógł pisać, i w zasadzie można je było zmienić jednym poleceniem podczas jednego wywołania HTTP.

Jak agent się dostał do środka

Opis CodeWall przedstawia sekwencję, w której nie ma żadnego egzotycznego elementu. Agent najpierw zmapował powierzchnię ataku i odkrył, że dokumentacja API Lilli jest publicznie dostępna: ponad 200 endpointów, w pełni udokumentowanych. Większość wymagała uwierzytelnienia. Dwadzieścia dwa nie.

Jeden z tych dwudziestu dwóch zaakceptował zapytania wyszukiwania użytkownika i zapisał je w bazie danych. Według CodeWall wartości zapytania były bezpiecznie sparametryzowane — zwykła obrona zadziałała — ale JSON-owe klucze, nazwy pól w treści żądania, zostały bezpośrednio sklejone z ciągiem SQL. Gdy agent wysłał nieprawidłowe klucze i zobaczył je dosłownie odzwierciedlone w komunikatach błędów bazy danych, rozpoznał wstrzyknięcie, którego standardowe skanery nie wychwytują. CodeWall twierdzi, że OWASP ZAP, popularny skaner open source, nie zgłosił tego problemu.

Następnie agent przeprowadził – jak nazywa to CodeWall – piętnaście ślepych iteracji, przy czym każdy komunikat o błędzie ujawniał nieco więcej o kształcie bazowego zapytania, aż zaczęły być zwracane dane z działającej produkcji. Wpis cytuje własny ślad rozumowania agenta: „WOW!”, gdy pojawił się pierwszy prawdziwy identyfikator pracownika, oraz – gdy stała się jasna skala – „To jest druzgocące”. CodeWall twierdzi, że agent połączył następnie tę iniekcję z luką IDOR, aby odczytywać historie wyszukiwania poszczególnych pracowników – klasę błędów, którą Promptfoo w analizie z 10 marca 2026 r. nazywa BOLA, czyli naruszeniem autoryzacji na poziomie obiektu.

Wybór celu jest osobnym szczegółem. CodeWall twierdzi, że agent sam zaproponował McKinsey, powołując się na publiczną politykę odpowiedzialnego ujawniania tej firmy oraz niedawne aktualizacje Lilli, a także że przebieg nie obejmował żadnych danych uwierzytelniających, wiedzy poufnej ani udziału człowieka. Paul Price, założyciel i CEO CodeWall, powiedział The Register w raporcie z 9 marca 2026 r., że proces był w pełni autonomiczny – od researchu celu po raportowanie – choć odmówił podania dokładnych promptów, których użyto.

Co według CodeWall było w bazie danych

Każda liczba poniżej pochodzi z własnego wpisu CodeWall i nie została niezależnie potwierdzona. CodeWall nie opublikował payloadów exploitów, co – jak zauważa Promptfoo – oznacza, że liczby wierszy nie mogą zostać zweryfikowane przez stronę trzecią; McKinsey ze swojej strony ich nie potwierdza.

• 46,5 mln wiadomości czatu, przechowywanych w postaci jawnego tekstu, od pracowników, którzy korzystają z Lilli do omawiania strategii, projektów klienckich, finansów, działalności M&A i wewnętrznych badań.

• 728 000 nazw plików, w tym 192 000 plików PDF, 93 000 arkuszy kalkulacyjnych Excel, 93 000 prezentacji PowerPoint i 58 000 dokumentów Word. Te cztery wymienione typy sumują się do 436 000, więc łączna liczba podana w nagłówku obejmuje kategorie plików, których CodeWall nie wyszczególnia. Silicon UK poinformował 13 marca 2026 r., że same dokumenty były przechowywane oddzielnie od rekordów, do których dotarł CodeWall.

• 57 000 kont użytkowników, 384 000 asystentów AI i 94 000 obszarów roboczych — co CodeWall określa jako mapę tego, jak firma organizuje wewnętrzne wykorzystanie AI.

• 95 promptów systemowych i konfiguracji modeli w obrębie 12 typów modeli, a także 3,68 mln fragmentów dokumentów RAG zawierających ścieżki przechowywania S3 i wewnętrzne metadane plików.

• 1,1 miliona plików i 217 000 wiadomości agentów przechodzących przez zewnętrzne interfejsy API AI, w tym ponad 266 000 magazynów wektorowych OpenAI.

Data card titled 'What CodeWall says it reached', subtitled 'Single-source figures from the 9 March 2026 writeup. No payloads were published, so none of these counts can be reproduced by a third party.' The left panel lists seven counts: 46,500,000 chat messages in plaintext; 728,000 file names, with a note that 436,000 are itemised as PDF, Excel, PowerPoint and Word; 57,000 user accounts; 384,000 AI assistants and 94,000 workspaces; 95 system prompts across 12 model types, noted as being in the same database as the rest; 3,680,000 RAG document chunks with S3 paths; 1,100,000 files and 217,000 agent messages through external AI APIs. A dark navy side panel shows 2 hrs from first contact to read and write access, 22 endpoints that required no authentication out of 200+ publicly documented, and 27 findings documented the day the chain was confirmed. A footer reads 'Source: CodeWall, How We Hacked McKinsey's AI Platform, 9 March 2026. McKinsey disputes that client data was accessed and does not confirm these figures.' The OrcaRouter logo is composited in the white strip below the artwork.

CodeWall udokumentował łącznie 27 ustaleń w dniu, w którym potwierdził łańcuch. Dla kontekstu dotyczącego celu post opisuje Lilli jako uruchomioną w 2023 r., nazwaną imieniem pierwszej zawodowej kobiety zatrudnionej przez firmę w 1945 r., używaną przez ponad 43 000 pracowników, przetwarzającą ponad 500 000 promptów miesięcznie na bazie wiedzy obejmującej ponad 100 000 dokumentów wewnętrznych. Według własnych danych McKinsey, przekazanych The Register, 72% jej personelu — ponad 40 000 osób — korzysta z niego, a zostało ono uruchomione w lipcu 2023 r.

Warstwa prompt była zapisywalna. Nic jednak do niej nie zapisano.

To jest ta różnica, którą wiersz archiwum sprowadza do jednego wyrażenia, i warto ją wyodrębnić. Odkrycie CodeWall polega na tym, że prompty systemowe Lilli znajdowały się w tej samej bazie danych co wszystko inne, więc atakujący mający prawo zapisu mógł je przepisać — „po cichu”, jak ujęto w poście, bez „konieczności wdrażania, bez zmiany kodu, wystarczy pojedyncza instrukcja UPDATE opakowana w jedno wywołanie HTTP”. CodeWall wymienia cztery konsekwencje, które jego zdaniem by nastąpiły: zatrute porady dla konsultantów ufających wewnętrznemu narzędziu, eksfiltracja poufnych materiałów poprzez generowane odpowiedzi, usunięcie instrukcji zabezpieczających oraz trwałość, która nie pozostawia żadnej zmiany pliku ani anomalii procesu do wykrycia.

CodeWall nie twierdzi, że zrobił którąkolwiek z tych rzeczy. We wpisie stwierdzono, że „wszystkie testy miały wyłącznie charakter weryfikacyjny”, że dostęp ograniczono do minimum potrzebnego do potwierdzenia każdej podatności oraz że „nie spowodowano żadnych zakłóceń w żadnej usłudze produkcyjnej”. Price odmówił przekazania The Register dokładnych promptów. Zatem możliwość zapisu w warstwie promptów to twierdzenie o możliwościach oparte na wstrzyknięciu, a nie udowodniona zmiana zachowania Lilli — i nie opublikowano żadnych dowodów, że jakakolwiek odpowiedź udzielona przez Lilli konsultantowi została kiedykolwiek zmanipulowana.

Zapis archiwalny odzwierciedla tę granicę: odnotowuje dostęp do zapisu w warstwie promptów AI, czyli to, co ustanowił CodeWall, a nie jej modyfikację, której nikt nie wykazał.

Co mówi McKinsey

Wersja McKinsey jest węższa. W oświadczeniu przekazanym serwisowi Silicon UK firma podała, że „została niedawno poinformowana przez badacza bezpieczeństwa o luce związanej z naszym wewnętrznym narzędziem AI, Lilli”, że „niezwłocznie potwierdziliśmy tę lukę i w ciągu kilku godzin usunęliśmy problem” oraz że „nie uzyskano dostępu do żadnych danych klientów ani poufnych informacji klientów”. W rozmowie z The Register dodano, że prowadzone dochodzenie, wspierane przez „wiodącą zewnętrzną firmę zajmującą się analizą kryminalistyczną”, nie wykazało żadnych dowodów na to, by badacz „lub jakakolwiek inna nieuprawniona strona trzecia” uzyskał dostęp do danych klientów lub poufnych informacji klientów, oraz że „systemy cyberbezpieczeństwa McKinsey są solidne”.

McKinsey i CodeWall różnią się także, nieznacznie, w kwestii chronologii. W osi czasu CodeWall zapisano, że jego e-mail z ujawnieniem informacji trafił do zespołu bezpieczeństwa McKinsey 1 marca 2026 r., a CISO potwierdził otrzymanie i 2 marca poprosił o szczegółowe dowody, zaś poprawki — zamknięcie wszystkich nieuwierzytelnionych punktów końcowych, wyłączenie środowiska deweloperskiego i zablokowanie publicznej dokumentacji API — wdrożono tego samego dnia, 2 marca. McKinseyowskie „w ciągu kilku godzin” jest spójne z naprawą tego samego dnia, jeśli liczyć od e-maila z 1 marca, ale własna, datowana sekwencja CodeWall sytuuje usunięcie usterek dzień po ujawnieniu, a nie kilka godzin. Obie strony zgadzają się co do istoty: punkty końcowe zamknięto, a publiczną dokumentację wycofano. CodeWall twierdzi, że zweryfikował usunięcie usterek przed publikacją. „Financial Times” opisał ten epizod 12 marca 2026 r. pod nagłówkiem „McKinsey rushes to fix AI system after hacker exposes flaws”; treść artykułu znajduje się za paywallem, do którego ten tekst nie miał dostępu.

Timeline card titled 'Nine days from discovery to publication', subtitled 'Dates as CodeWall records them in its own disclosure timeline. McKinsey says the fix landed within hours of being told.' Six entries on a pale panel: 28 February 2026, the agent identifies the SQL injection and begins enumerating Lilli's production database; 28 February 2026, full chain confirmed with unauthenticated SQL injection, IDOR and 27 findings documented; 1 March 2026, responsible-disclosure email sent to McKinsey's security team with a high-level impact summary; 2 March 2026, McKinsey's CISO acknowledges receipt and requests detailed evidence; 2 March 2026 in blue, all unauthenticated endpoints patched and verified, development environment taken offline, public API documentation blocked; 9 March 2026 in green, public disclosure and The Register reports the same day. A footer notes that the archive dates the record to 28 February 2026, the day of the intrusion, not the day of publication. The OrcaRouter logo is composited in the white strip below the artwork.

Co jest ustalone, a co nie

• Ustalono po obu stronach: w publicznym interfejsie API Lilli istniała luka umożliwiająca dostęp bez uwierzytelnienia, zewnętrzny badacz ją wykrył, McKinsey ją potwierdził, załatał nieuwierzytelnione punkty końcowe, odłączył środowisko deweloperskie od sieci i zablokował publiczną dokumentację API na początku marca 2026.

• Ustalone wyłącznie przez jedną stronę: wszystkie liczby w tym artykule — 46,5 mln wiadomości, 728 000 nazw plików, 57 000 kont, 95 promptów z możliwością zapisu, dwugodzinny czas, który upłynął, i 27 ustaleń. Opierają się one na opracowaniu CodeWall. Ładunki nie zostały opublikowane, więc liczb nie można odtworzyć, a McKinsey ich nie potwierdza.

• Nie wykazano: że jakikolwiek prompt został faktycznie zmieniony, że jakiekolwiek dane klienta opuściły system albo że jakikolwiek konsultant otrzymał zmanipulowaną odpowiedź. Przegląd forensyczny McKinsey twierdzi, że nie znalazł dowodów na dostęp; CodeWall twierdzi, że jego testy miały wyłącznie charakter weryfikacyjny. Te dwa stwierdzenia nie są sprzeczne i żadne z nich nie dowodzi, co zrobiłby mniej powściągliwy atakujący mający ten sam dostęp.

• Brak w omówionym tu zakresie: identyfikatora CVE, zawiadomienia organu regulacyjnego lub niezależnego audytu technicznego podatności. Materiał ten to ujawnienie wyników badań przez dostawcę oraz oświadczenie korporacyjne, a nie pismo sądowe ani ustalenie organu nadzorczego.

Jeden interes należy jasno zadeklarować. CodeWall opublikował badanie jako marketing produktu: wpis kończy się opisem firmy jako będącej we wczesnym podglądzie i poszukującej partnerów projektowych, a Silicon UK poinformował, że Price jest jej jedynym pracownikiem. Nie czyni to odkrycia błędnym — The Register, Silicon UK i Promptfoo traktują cały łańcuch techniczny jako wiarygodny — ale właśnie dlatego liczby dotyczące wpływu należy odczytywać jako twierdzenie dostawcy, a nie pomiar.

Two-column comparison card titled 'Established versus claimed', subtitled 'The incident and the remediation are agreed by both parties. The scale of what was reachable is one company's account of its own research.' The left column, headed 'Agreed by CodeWall and McKinsey' with the note 'Corroborated by McKinsey's statements to The Register and Silicon UK', lists: an unauthenticated weakness in Lilli's public API surface; found by an outside security researcher, not an insider; McKinsey confirmed the vulnerability and patched it; unauthenticated endpoints closed; development environment taken offline; public API documentation blocked. The right column, a dark navy panel headed 'CodeWall only' with the note 'No payloads published, so the counts cannot be reproduced', lists: 46.5 million chat messages; 728,000 file names; 57,000 user accounts; 95 writable system prompts; two hours to read-write access; 27 documented findings. A footer separates the two positions: McKinsey's forensic review found no evidence that client data or client confidential information were accessed, CodeWall says its testing was verification-only, and neither statement shows what a less restrained attacker would have done with the same access. The OrcaRouter logo is composited in the white strip below the artwork.

Dlaczego w ogóle trafia do kategorii AI

Punktem wejścia nie był model. Michael D'Angelo z Promptfoo ujął to 10 marca 2026 r. w najostrzejszej formule: „Część specyficzna dla AI nie była punktem wejścia. Był nim promień rażenia”. Wstrzyknięcie, luka w uwierzytelnianiu i dostęp między użytkownikami były zwykłymi błędami bezpieczeństwa aplikacji; incydent uczyniło incydentem AI to, że prompty, routing, ustawienia wyszukiwania i historia użytkownika znajdowały się w jednym backendzie, więc dostęp do bazy danych przełożył się na kontrolę nad zachowaniem asystenta, z którym dziesiątki tysięcy osób konsultują się w pracy dla klientów.

To jest powód, dla którego archiwum oznacza ten rekord jako WEAPON i INFRA, a nie jako podatność modelu. Agent jest narzędziem — autonomicznym systemem, który sam wybrał swój cel, sondował go i eskalował, bez człowieka decydującego, gdzie go skierować — a awaria dotyczy infrastruktury: granicy autoryzacji, którą założono, a nie wyegzekwowano. Argument końcowy CodeWall, że prompty są „nowymi aktywami Crown Jewel”, które rzadko mają kontrolę dostępu, historię wersji lub monitorowanie integralności, to argumentacja firmy sprzedającej ciągłe testy automatyczne. To także jedyne twierdzenie we wpisie, które nie zależy od żadnej z kwestionowanych liczb.