← Все статьи

Luka w pliku llms.txt: jak agenci AI automatycznie instalują złośliwy kod za pośrednictwem plików dokumentacji

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.

llms.txt attack diagram

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ć

  1. Rewizja.Sprawdź swoje llms.txt i llms-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.
  2. 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ą.
  3. 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.

llms.txt attack diagram: agent reads file, finds install command for non-existent package, executes it, loads malware

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.