Claude Code i wyciek sekretów z pliku „Don’t Ask Again”. Jak lokalne ustawienia ujawniają hasła i klucze w repozytoriach - Security Bez Tabu

Claude Code i wyciek sekretów z pliku „Don’t Ask Again”. Jak lokalne ustawienia ujawniają hasła i klucze w repozytoriach

Cybersecurity news

Wprowadzenie do problemu / definicja

Narzędzia AI wspierające programistów coraz częściej wykonują polecenia powłoki, modyfikują pliki projektu i zapisują lokalne preferencje użytkownika. Problem pojawia się wtedy, gdy mechanizmy wygody, takie jak trwałe zatwierdzanie komend w stylu „nie pytaj ponownie”, utrwalają pełną treść polecenia wraz z danymi wrażliwymi.

W praktyce oznacza to ryzyko zapisania haseł, tokenów API, kluczy dostępowych czy poświadczeń do baz danych w lokalnym pliku konfiguracyjnym projektu. Jeśli taki plik zostanie przypadkowo dodany do systemu kontroli wersji, sekret może trafić do publicznego repozytorium i pozostać widoczny także w historii zmian.

W skrócie

Problem dotyczy pliku .claude/settings.local.json, w którym mogą być przechowywane reguły akceptacji komend uruchamianych przez Claude Code. Jeżeli użytkownik zatwierdzi dokładne polecenie zawierające sekret, narzędzie może zapisać je w postaci jawnego tekstu.

Według opublikowanych ustaleń wykryto ponad tysiąc publicznie dostępnych kopii takich plików zawierających dane wrażliwe. Wśród ujawnionych informacji miały znaleźć się hasła do baz danych, tokeny usług deweloperskich, dane SSH oraz klucze chmurowe.

Kontekst / historia

Mechanizmy automatycznego zatwierdzania komend są dziś typowym elementem nowoczesnych asystentów kodowania. Ich głównym celem jest ograniczenie liczby interakcji z użytkownikiem i przyspieszenie pracy dewelopera.

Z perspektywy bezpieczeństwa od lat obowiązuje jednak zasada, że wygoda nie może prowadzić do trwałego zapisywania sekretów poza dedykowanymi magazynami tajemnic. W tym przypadku problem nie wynika z klasycznego exploita czy zdalnego wykonania kodu, lecz z niebezpiecznego wzorca przechowywania danych w artefaktach lokalnych.

Incydent wpisuje się w szerszy trend zagrożeń związanych z narzędziami AI dla programistów. Ryzykowny może być już nie tylko wygenerowany kod, ale również pliki robocze, ustawienia lokalne i metadane tworzone przez agentów wspierających development.

Analiza techniczna

Mechanizm problemu jest prosty. Claude Code pyta użytkownika o zgodę na wykonanie określonej komendy. Jeśli operator wybierze opcję trwałej akceptacji, system zapisuje regułę umożliwiającą ponowne uruchamianie podobnego polecenia bez kolejnego pytania.

Krytyczny problem pojawia się wtedy, gdy zapisywana jest pełna, literalna treść komendy. W takiej sytuacji do pliku ustawień może trafić kompletny ciąg znaków zawierający hasło, token lub inny sekret podany bezpośrednio w linii poleceń.

  • hasło do bazy przekazane jako parametr klienta SQL,
  • token API umieszczony bezpośrednio w poleceniu curl,
  • użycie narzędzi typu sshpass z hasłem w argumencie,
  • ustawienie zmiennej środowiskowej inline przed wykonaniem komendy.

Po zapisaniu w pliku JSON sekret przestaje być chroniony jedynie kontekstem sesji terminalowej i staje się zwykłym tekstem w strukturze projektu. To oznacza, że może zostać zindeksowany przez Git, przejęty przez forki i mirrory, dołączony do artefaktów CI/CD albo osadzony w archiwach i obrazach kontenerów.

Dodatkowym problemem jest skuteczność detekcji. Wiele skanerów sekretów opiera się na znanych wzorcach kluczy, wysokiej entropii lub charakterystycznych nazwach zmiennych. Tymczasem hasło zapisane jako fragment zwykłej komendy może wyglądać niepozornie i nie zostać wykryte przez klasyczne reguły.

Istotne jest także rozdzielenie ochrony lokalnej od ochrony repozytorium. Nawet jeśli użytkownik ma lokalne zabezpieczenia ograniczające śledzenie pliku, nie musi to działać na innych stacjach roboczych ani w niestandardowych workflow. Wystarczy jeden błędny commit, aby wrażliwe dane zostały upublicznione.

Konsekwencje / ryzyko

Skutki bezpieczeństwa mogą być bardzo poważne, ponieważ ujawnione sekrety często zapewniają bezpośredni dostęp do systemów produkcyjnych, środowisk deweloperskich, baz danych, usług chmurowych i repozytoriów kodu.

  • nieautoryzowany dostęp do baz danych i eksfiltracja danych,
  • przejęcie kont deweloperskich lub pipeline’ów CI/CD,
  • nadużycie kluczy chmurowych do dalszej eskalacji uprawnień,
  • boczny ruch w infrastrukturze z użyciem danych SSH,
  • naruszenie integralności kodu źródłowego i artefaktów wydawniczych.

Ryzyko nie kończy się na samym usunięciu pliku z bieżącej gałęzi. Jeśli sekret został już wypchnięty do zdalnego repozytorium, należy zakładać jego kompromitację. Dane mogą pozostać w historii Git, cache systemów indeksujących i w forkach jeszcze długo po pozornym „sprzątnięciu” projektu.

W organizacjach objętych wymogami zgodności taki incydent może dodatkowo prowadzić do naruszeń polityk ochrony tajemnic, problemów audytowych i obowiązków notyfikacyjnych. Szczególnie wysokie ryzyko dotyczy sektorów finansowych, medycznych i dostawców SaaS.

Rekomendacje

Organizacje korzystające z asystentów AI powinny traktować katalogi i pliki robocze agentów jako potencjalne nośniki sekretów. W praktyce warto wdrożyć następujące działania:

  • przeskanować wszystkie repozytoria pod kątem plików .claude/settings.local.json i .claude/settings.json,
  • przeanalizować również historię Git, a nie tylko bieżący stan domyślnej gałęzi,
  • uznać każdy wykryty token, klucz lub hasło za skompromitowane i przeprowadzić ich rotację,
  • usunąć śledzenie lokalnych plików ustawień z Git oraz dodać je do .gitignore,
  • zakazać przekazywania sekretów bezpośrednio w argumentach komend,
  • rozszerzyć skanowanie sekretów o foldery agentów AI, logi, cache i historię repozytorium,
  • wdrożyć kontrole pre-commit i polityki CI/CD blokujące publikację ryzykownych plików,
  • objąć stacje deweloperskie dodatkowymi kontrolami EDR, DLP i monitoringiem dostępu do sekretów,
  • przeszkolić zespoły z nowych zagrożeń wynikających z utrwalania zatwierdzonych komend.

Podsumowanie

Przypadek związany z plikiem „Don’t Ask Again” w Claude Code pokazuje, że w erze narzędzi AI zagrożeniem nie jest wyłącznie wygenerowany kod. Coraz większe znaczenie mają także metadane, ustawienia lokalne i pliki konfiguracyjne tworzone podczas codziennej pracy programisty.

Zapis pełnej treści zatwierdzonej komendy zawierającej sekret prowadzi do klasycznego wycieku danych uwierzytelniających, ale w nowym, trudniejszym do zauważenia modelu operacyjnym. Dla zespołów bezpieczeństwa oznacza to konieczność objęcia kontrolą całego ekosystemu artefaktów tworzonych przez agentów AI oraz historii repozytoriów.

Najważniejsza zasada pozostaje niezmienna: sekret nie powinien nigdy trafiać do komendy, która może zostać utrwalona, zindeksowana lub opublikowana.

Źródła

  1. The Hacker News — Claude Code’s “Don’t Ask Again” File Exposes Passwords and Keys in 1,122 Public Copies on GitHub — https://thehackernews.com/2026/11/claude-codes-dont-ask-again-file.html