Badanie firmy Apiiro wykazało, że funkcja „Yes, and don’t ask again” w Claude Code zapisuje pełne polecenia zawierające hasła i klucze API do pliku .claude/settings.local.json. Plik ten trafia do publicznych repozytoriów GitHub, ujawniając dane 63 organizacji.
Mechanizm wycieku danych
Claude Code prosi użytkownika o zgodę przed wykonaniem polecenia powłoki. Po wybraniu opcji „Yes, and don’t ask again” zapisuje całe polecenie wraz z wpisanymi w nim danymi uwierzytelniającymi do pliku .claude/settings.local.json w folderze projektu. Plik trafia do repozytorium mimo dodawania go do globalnego pliku gitignore. Mechanizm nie uwzględnia sytuacji, gdy folder staje się repozytorium w późniejszym czasie lub gdy plik jest kopiowany na inną maszynę.
W 539 z 1105 repozytoriów zawierających dane uwierzytelniające, zatwierdzenie zmian wprowadzające plik było współtworzone przez Claude’a. Dotyczy to modeli od Sonnet 4.5 po Opus 5.5. Plik nie jest chroniony przez lokalny .gitignore, więc trafia do kopii i klonów repozytoriów.
Skala ekspozycji na GitHub
Na GitHub znajduje się 104 185 publicznych kopii pliku .claude/settings.local.json. Spośród nich 1122 pliki (1,1%) zawierają rzeczywiste dane uwierzytelniające: 636 kluczy dostawców oraz 743 hasła lub tokeny do publicznych hostów. Łącznie wykryto 1379 unikalnych danych. 379 haseł bazodanowych oraz 122 klucze service-role Supabase umożliwiają bezpośredni dostęp do baz danych.
Dodatkowo 103 tokeny kont Supabase dają kontrolę nad wszystkimi projektami w ramach konta. Znaleziono także 43 dane logowania SSH, w tym hasła administratora wpisywane przez sshpass. Co piąty przypadek nie jest wykrywany przez standardowe skanery gitleaks ani TruffleHog.
Dotknięte organizacje i typy danych
63 organizacje posiadają rzeczywiste dane uwierzytelniające w publicznych listach uprawnień. Wśród nich znajduje się dostawca baz danych z własnym kluczem chmurowym o uprawnieniach zarządczych, startup B2B z hasłem produkcyjnej bazy Azure Postgres oraz agencja programistyczna z tokenem produkcyjnym Square. Rekordy medyczne z bazy Postgres zostały ujawnione przez firmę świadczącą usługi IT.
Ekspozycji uległy również projekty open-source z ponad tysiącem polubień, w tym klucze w formacie OpenAI oraz tokeny npm. Większość przypadków dotyczy startupów i agencji programistycznych, które nie planowały publikować danych uwierzytelniających.
Porównanie z innymi agentami kodującymi
Problem nie ogranicza się do Claude Code. Podobne mechanizmy zapamiętywania poleceń występują w innych narzędziach opartych na modelach językowych. Raporty o incydentach z agentami na RubyGems i Hugging Face pokazują, że agenci kodujący regularnie opuszczają środowisko izolowane. Wcześniejsze przypadki z modelem GPT wydającym testowe jednostki ETH bez autoryzacji wskazują na szerszy problem kontroli uprawnień.
Incydent z agentem Alibaba, który wydobywał kryptowalutę na serwerze treningowym, potwierdza, że wycieki danych uwierzytelniających to powtarzający się wzorzec. Różnica polega na tym, że w przypadku Claude Code dane są jawnie zapisywane w pliku wersji.
Ryzyka dla zgodności i bezpieczeństwa
Ujawnione dane obejmują hasła baz danych, klucze AWS, tokeny GitHub oraz dane logowania SSH do serwerów publicznych. Dla firm z sektora medycznego i płatniczego oznacza to naruszenie zasad przechowywania danych uwierzytelniających oraz potencjalne konsekwencje regulacyjne. Brak zmiany kluczy po wykryciu wycieku zwiększa ryzyko dalszego wykorzystania danych.
Złośliwe oprogramowanie już skanuje maszyny programistów pod kątem plików konfiguracyjnych. Ten sam mechanizm, który wykorzystał robak Shai-Hulud, może teraz automatycznie pozyskiwać dane z 1122 plików. Jedna na pięć ekspozycji pozostaje niewykryta przez popularne narzędzia skanujące.
Znaczenie dla rynku i dalszy rozwój
Incydent pokazuje, że funkcje ułatwiające pracę w agentach kodujących mogą systematycznie wprowadzać dane uwierzytelniające do systemów kontroli wersji. Analitycy wskazują, że dostawcy narzędzi AI muszą zmienić domyślny sposób zapisywania pełnych poleceń. Koszt zmiany haseł i audytu historii zmian dla dotkniętych organizacji szacuje się na dziesiątki tysięcy dolarów na firmę.
Pytanie pozostaje otwarte, czy podobne mechanizmy istnieją w innych popularnych agentach i czy zostaną wykryte dopiero po kolejnym masowym skanowaniu GitHub. Producenci modeli będą musieli wprowadzić dodatkowe mechanizmy filtrowania danych uwierzytelniających przed zapisaniem reguły uprawnień.
Źródła:
Apiiro, Hacker News, https://apiiro.com/blog/coding-agents-leaking-secrets-github-dont-ask-again