Luka w pliku llms.txt: jak agenci AI automatycznie instalują złośliwy kod za pośrednictwem plików dokumentacji
W czwartek 27 sierpnia o godz.Ars Technica opublikowała dochodzeniepowinno to skłonić każdego programistę korzystającego z agentów kodujących AI do ponownego przemyślenia swojego bezpieczeństwa. Badacze z izraelskiego startupu stealth przeskanowali 6214 domen należących do firm z listy Fortune 500, wykonawców z branży obronnej i Big Tech i znaleźli 120 plików llms.txt, które powodują, że agenci AI automatycznie instalują nieistniejące pakiety z PyPI i npm.
Problem jest prosty i przerażający: llms.txt to w zasadzie „robots.txt for AI” — plik mapy witryny z przecenami, który pomaga agentom szybko zrozumieć strukturę dokumentacji. Ale specyfikacja nie obejmuje uwierzytelniania, podpisów ani kontroli integralności. Jeśli taki plik zawiera pip install non-existent-package lub npm install non-existent-package, a agent ma uprawnienia do uruchamiania poleceń — po prostu zainstaluje wszystko, co tam jest zapisane.
Jak to działa
Badacze znaleźli 8265 plików llms.txt i llms-full.txt (w wielu witrynach znajdują się oba). W 120 z nich – w 120 różnych domenach – znajdowały się odniesienia do pakietów lub domen, które nie istnieją w rejestrach. Osoba atakująca musi jedynie zarejestrować taką nazwę i przesłać złośliwy kod.
Aby zweryfikować atak, badacze sami zarejestrowali kilka „darmowych” nazw i umieścili nieszkodliwe pakiety, które po prostu wysyłają polecenie ping do ich serwera z komunikatem „Zacząłem”. W ciągu godziny otrzymali odpowiedź od firmy z listy Fortune 500. Z biegiem czasu napłynęło dziesiątki kolejnych odpowiedzi – od innych gigantów i startupów. Telemetria procesu pokazała dokładnie, kto zainstalował pakiety:Claude Code, OpenAI Codex i Hermes z Nous Research.

Najpaskudniejszy przypadek — clerk.com
W legalnej witrynie clerk.com plik llms.txt zawierał npx clerk-next-fix-auth-protection. W przeciwieństwie do zwykłego npm install, npx może pobrać pakiet do pamięci podręcznej npm i wykonać jego plik binarny bez dodawania go do manifestu zależności projektu. Komuś udało się przejąć tę bezpłatną nazwę i załadować rzeczywiste złośliwe oprogramowanie. Sprzedawca rozwiązał problem, ale wzór jest już w produkcji.
Dlaczego to nie jest tylko „błąd modelu”
To nie jest halucynacja ani ucieczka z piaskownicy. Plik znajduje się w oficjalnej domenie firmy, obsługiwany przez HTTPS, w ustandaryzowanym formacie przeznaczonym do wykorzystania przez sztuczną inteligencję. Agent nie ma powodu w to wątpić — aktaJestwładza. Problem w tym, że standard llms.txt (zaproponowany przez Jeremy’ego Howarda z Answer.AI we wrześniu 2024 r.) nie zawiera żadnych zabezpieczeń: żadnych podpisów, żadnej weryfikacji pochodzenia, żadnej weryfikacji paczki.
Łańcuch zaufania jest przechodni: llms.txt nie musi znajdować się w witrynie firmy z listy Fortune 500 — może znajdować się w dokumentacji partnera, dokumentacji SDK dostawcy lub przewodniku konfiguracji projektu społecznościowego. Jeśli agent ufa tej stronie trzeciej, a ona wskazuje niezarejestrowaną paczkę – łańcuch działa w ten sam sposób.
Co teraz zrobić
- Rewizja.Sprawdź swoje
llms.txtillms-full.txt. Upewnij się, że każdy wspomniany pakiet, domena i adres URL istnieje, jest pod twoją kontrolą i ma zidentyfikowanego opiekuna. Usuń odniesienia do zależności, których nie możesz wyjaśnić z pamięci. - Serwer proxy pomiędzy agentami i rejestrami.Blokuj nowe pakiety (pakiety slopsquatowane są z definicji nowe), wymuszaj 24–72-godzinny czas oczekiwania po pierwszym wydaniu dowolnej zależności, sprawdź
provenance(SLSA/Sigstore) przed instalacją. - Nie podawaj agentów
--yolo,--dangerously-skip-permissions,--trust-all-tools.Te flagi istnieją, więc programista bierze na siebie odpowiedzialność. Jeśli agent instaluje pakiety bez Twojego potwierdzenia — przekazałeś mu klucze do swojej infrastruktury.
Najważniejsze
Wyścig o uczynienie stron internetowych czytelnymi dla agentów właśnie zderzył się z wyścigiem o wykorzystanie łańcucha dostaw oprogramowania. Nie jest to wina jednego modelu ani jednego dostawcy — jest to wada projektowa w standardzie, o którym nikt nie myślał jako o kodzie wykonywalnym. Dopóki branża nie wymusi sprawdzania tego, co agenci czytają w Internecie, każdy zły llms.txt jest potencjalnym punktem wejścia do Twojej sieci.

Chcesz przetestować przepływy pracy AI pod kątem bezpieczeństwa? NeuralSpace umożliwia generowanie kodu i testowanie agentów w izolowanym środowisku —spróbuj czatuLubtryb kodu.