Meteora Web

Claude Code, pliki ustawień ujawniają tysiące sekretów na GitHubie

Apiiro znalazło ponad 100 000 plików settings.local.json Claude Code na GitHub, około 1100 z sekretami. Sprawdź, czego pilnować w swoich repozytoriach.

Ing. Calogero Bono 5 min czytania
Claude Code, pliki ustawień ujawniają tysiące sekretów na GitHubie

Według badaczy bezpieczeństwa z Apiiro, Claude Code zostawia sekrety w publicznych repozytoriach GitHub. Problem wynika z lokalnego pliku ustawień, który trafia online bez wiedzy dewelopera. Wśród znalezionych danych są hasła do baz danych, tokeny API i dostępy root. Ma to znaczenie dla każdego, kto korzysta z asystenta programistycznego opartego na AI, bo jeden nieuważny commit może udostępnić publicznie wciąż aktywne dane logowania.

Kilka pojęć, zanim przejdziemy do faktów. .gitignore to plik, który mówi Gitowi, jakich plików nie zapisywać w commitach. Repozytorium to folder projektu śledzony przez Git. Sekret oznacza dane uwierzytelniające, takie jak hasło, token API lub klucz prywatny. Fork to kopia projektu wykonana przez innego użytkownika na GitHubie. Commit to zapisanie grupy zmian w historii projektu.

Zenithby Meteora Web System operacyjny twojej firmy. Social media, klienci, rezerwacje i faktury na jednej platformie. Siłownie, barberzy, specjaliści. Poznaj Zenith → Darmowe demo · bez karty

Co odkryto w Claude Code i na GitHubie?

Pisze o tym Ars Technica, relacjonując pracę Apiiro. Badacze znaleźli ponad 100 000 przypadków, w których lokalny plik ustawień Claude Code został wgrany do publicznego repozytorium GitHub.

Nie wszystkie zawierają dane wrażliwe. Tylko około 1100 plików, pochodzących z 63 różnych organizacji, zawierało sekrety, takie jak publiczne tokeny API, hasła do baz danych lub klucze prywatne. Liczba jest mała w porównaniu z całością, ale to prawdziwe dane logowania, a nie przykłady.

Dlaczego plik trafia do sieci?

Gdy użytkownik wybiera opcję «Tak, i nie pytaj więcej», by zatwierdzić polecenie powłoki, wybór staje się regułą w lokalnym pliku .claude/settings.local.json. Czasem reguła zapisana jest jako ogólny wzorzec. Często jednak polecenie zostaje zapisane dokładnie tak, jak było, razem z całą zawartością, w tym ewentualnymi danymi logowania.

Dopóki plik zostaje na komputerze, ryzyko jest ograniczone, o ile maszyna nie zostanie przejęta. Problem zaczyna się, gdy plik trafia do commita.

Czy .gitignore nie powinien wystarczyć?

Teoretycznie tak. Według Ars Technica dokumentacja Anthropic wskazuje, że ten plik jest dodawany do globalnego .gitignore dewelopera, co zwykle zapobiega jego publikacji.

Słabym punktem jest to, że reguła nie działa na poziomie repozytorium. Jeśli projekt zostanie sklonowany na inną maszynę albo folder stanie się repozytorium później, plik może zostać wgrany przez pomyłkę. Apiiro dodaje, że w wielu przypadkach to sam Claude Code robi commit zmian w ustawieniach, bez udziału użytkownika.

Oficjalna dokumentacja GitHuba wyjaśnia różnicę. Plik .gitignore w katalogu głównym repozytorium, po zacommitowaniu, obowiązuje każdego, kto sklonuje projekt. Globalny w ~/.config/git/ignore działa tylko na twoim komputerze.

Czy wystarczy usunąć plik?

Nie. Według Apiiro, nawet po wykryciu i usunięciu plików z repozytorium sekrety mogą pozostać w forkach oryginalnego projektu, jeśli użytkownik nie zachowa ostrożności.

Dokumentacja GitHuba przypomina też, że plik już śledzony trzeba najpierw wyłączyć ze śledzenia poleceniem git rm --cached NAZWA_PLIKU, a dopiero potem reguła wykluczenia zaczyna działać. Dopisanie linijki do .gitignore nie usuwa tego, co już jest w historii. Dlatego jeśli dane logowania trafiły do sieci, traktuj je jako przejęte i wymień.

Ograniczenia, o których warto wiedzieć

Dane pochodzą z analizy Apiiro, przytoczonej przez Ars Technica, i nie zweryfikowaliśmy ich samodzielnie. Nie wiemy, ile ze znalezionych danych logowania było wciąż ważnych ani czy korzystały z nich osoby trzecie. W źródłach brakuje odpowiedzi Anthropic na pytanie o ewentualne zmiany w działaniu Claude Code. Obraz może się zmienić, jeśli firma zdecyduje się ingerować w sposób zapisywania zatwierdzonych poleceń.

Co się zmienia dla osób pracujących z technologią

Jeśli korzystasz z Claude Code, sprawdź od razu, czy .claude/settings.local.json jest śledzony w jakimkolwiek repozytorium, nawet prywatnym. Prywatny projekt może stać się publiczny albo zostać sklonowany gdzie indziej. Dodaj plik do .gitignore projektu i zrób commit, dzięki czemu reguła obowiązuje wszystkich. Aby wykluczyć plik tylko na swoim klonie, GitHub wskazuje plik .git/info/exclude.

Warto też odzwyczaić się od wpisywania haseł bezpośrednio w poleceniach. Lepsze są zmienne środowiskowe lub menedżer sekretów. W firmie warto dodać automatyczne skanowanie sekretów przed każdym pushem.

Nasza opinia

Ten przypadek pokazuje ograniczenie narzędzia, a nie tylko roztargnienie użytkowników. Plik, który może zawierać dane uwierzytelniające, powinien być wykluczony tam, gdzie to ma znaczenie, czyli w repozytorium, a nie tylko w osobistej konfiguracji. Przerzucanie wszystkiego na użytkownika działa słabo, zwłaszcza gdy narzędzie samo robi commity. Mimo to jest to także nasza odpowiedzialność. Polecenie z hasłem wpisanym jawnym tekstem to nawyk do poprawy, z asystentem AI czy bez. Szybkość, jaką obiecują te narzędzia, sprawia, że dyscyplina w obsłudze sekretów jest pilniejsza, a nie mniej potrzebna.

Najczęstsze pytania

Który plik Claude Code zawiera sekrety?

Plik to .claude/settings.local.json. Zapisuje reguły tworzone, gdy zatwierdzasz polecenie opcją «Tak, i nie pytaj więcej». Czasem polecenie zapisywane jest w całości, razem z danymi logowania.

Ile wystawionych plików znalazło Apiiro?

Ponad 100 000 plików wgranych do publicznych repozytoriów GitHub. Około 1100, pochodzących z 63 organizacji, zawierało sekrety, takie jak tokeny API, hasła do baz danych lub klucze prywatne.

Czy globalny .gitignore chroni przed problemem?

Tylko częściowo. Działa na twoim komputerze, ale nie w repozytorium. Jeśli projekt zostanie sklonowany gdzie indziej albo folder stanie się później repozytorium, plik może trafić do commita.

Czy usunięcie pliku z repozytorium usuwa sekrety?

Nie. Według Apiiro sekrety mogą pozostać w forkach projektu. Jeśli dane logowania zostały opublikowane, uznaj je za przejęte i wymień.

Jak wykluczyć plik, który Git już śledzi?

Najpierw usuń go ze śledzenia poleceniem git rm --cached NAZWA_PLIKU. Potem dodaj regułę do .gitignore. Bez pierwszego kroku reguła nie zadziała na plik, który już jest śledzony.

Na co zwrócić uwagę w kolejnych miesiącach w kwestii bezpieczeństwa Claude Code

Pytanie brzmi, czy Anthropic zmieni sposób zapisywania zatwierdzonych poleceń. Na razie warto śledzić aktualizacje narzędzia.

  • Czytaj informacje o wydaniach Claude Code, aby sprawdzić, czy zmienia się obsługa settings.local.json, zaczynając od naszego artykułu o wersji 2.1.319.
  • Przeszukaj historię swoich repozytoriów pod kątem już zacommitowanych plików .claude i wymień dane logowania, które się tam pojawią.
  • Przejrzyj reguły ochrony gałęzi, korzystając z naszego przewodnika po pull requestach na GitHubie.

Źródła

Zenithby Meteora Web System operacyjny twojej firmy. Social media, klienci, rezerwacje i faktury na jednej platformie. Siłownie, barberzy, specjaliści. Poznaj Zenith → Darmowe demo · bez karty

Przeczytaj też

Z bloga

Najnowsze artykuły