~/ / Artykuły o AI / 2,117 ważnych sekretów w publicznych plikach konfiguracji MCP: co znalazł GitGuardian i jak sprawdzić swój plik
2,117 ważnych sekretów w publicznych plikach konfiguracji MCP: co znalazł GitGuardian i jak sprawdzić swój plik
Plik konfiguracji, który mówi aplikacji AI, jakie serwery MCP uruchomić, często wymaga klucza. Raport GitGuardian State of Secrets Sprawl 2026 naliczył 24,008 unikalnych sekretów w plikach konfiguracji związanych z MCP w publicznym GitHub, a 2,117 z nich było ważnymi poświadczeniami. Ten artykuł podsumowuje raport, wyjaśnia, co dokumentacja Claude Code mówi o plikach konfiguracji projektu, i pozwala sprawdzić własny plik.
Opublikowano: · Sprawdzono z oficjalnymi źródłami dnia 2026-10-24. Artykuł je podsumowuje i ich nie zastępuje.
Co wykazał raport
- GitGuardian opublikował raport State of Secrets Sprawl 2026 dnia 17 marca 2026. Jego dane obejmują rok 2025.
- Naliczył 24,008 unikalnych sekretów ujawnionych w plikach konfiguracji związanych z MCP w publicznym GitHub, w tym 2,117 unikalnych ważnych poświadczeń.
- Tylko w 2025 roku do publicznych commitów w GitHub dodano 28.65 million nowych zahardkodowanych sekretów, co raport nazywa wzrostem o 34% rok do roku.
- Sekrety usług AI osiągnęły 1,275,105, czyli wzrost o 81% rok do roku.
- Raport mówi, że problem jest często napędzany przez samą dokumentację, która zachęca do niebezpiecznych wzorców: wpisywania kluczy API bezpośrednio do plików konfiguracji, argumentów wiersza poleceń lub osadzonych ciągów połączenia.
Dlaczego plik MCP projektu łatwo wycieka
Claude Code przechowuje serwery MCP o zakresie projektu w pliku .mcp.json w katalogu głównym projektu, a jego dokumentacja opisuje ten plik jako współdzielony przez system kontroli wersji. Klucz wpisany do niego jest widoczny dla każdego, kto może czytać repozytorium.
| Zakres | Gdzie jest przechowywany | Kto go widzi |
|---|---|---|
| Lokalny | ~/.claude.json, pod ścieżką projektu | Bieżący projekt, prywatnie tylko dla ciebie |
| Projekt | .mcp.json w katalogu głównym projektu | Bieżący projekt, współdzielony przez system kontroli wersji |
| Użytkownik | ~/.claude.json | Wszystkie twoje projekty |
Trzymaj klucz poza plikiem
- Claude Code rozwija ${VAR} i ${VAR:-default} w command, args, env, url i headers, więc plik może wskazywać zmienną zamiast przechowywać wartość. Własny przykład z dokumentacji zapisuje nagłówek jako Authorization: Bearer ${API_KEY}.
- Jeśli zmienna nie jest ustawiona i nie ma wartości domyślnej, konfiguracja mimo to się wczytuje. Claude Code pokazuje ostrzeżenie i używa tekstu ${VAR} tak, jak został zapisany.
- W url i headers zdalnego serwera niektóre zmienne z poświadczeniami są odczytywane jako puste, nawet jeśli są ustawione. Dokumentacja podaje jako przykłady ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, AWS_BEARER_TOKEN_BEDROCK, HTTPS_PROXY i NPM_TOKEN i mówi, że zmienna o nazwie API_KEY jest rozwijana tak, jak została zapisana.
- Wartość zapisana w args lub url jest również przechowywana w pliku, więc ostrzeżenie raportu dotyczące argumentów wiersza poleceń i osadzonych ciągów połączenia dotyczy także tych miejsc.
Sprawdź swój plik
Poniższe narzędzie wczytuje w twojej przeglądarce plik .mcp.json lub claude_desktop_config.json. Zgłasza wartości wyglądające na sekrety zapisane w args, env i headers, używając tych samych detektorów co Prompt Redactor, oraz odwołania do zmiennych, które Claude Code odczytuje jako puste. Wykrywanie jest heurystyką, więc może pominąć sekret albo zgłosić nieszkodliwą wartość.
Wypróbuj: MCP Config Checker
Reguły sprawdzone z dokumentacją w dniu 2026-10-23.
Dokumentacja: Claude Code / Model Context Protocol / VS Code
Nie sprawdzono: czy polecenie istnieje, czy pakiet się instaluje, czy zdalny serwer odpowiada oraz ustawień, które inne aplikacje odczytują inaczej.
Wszystko działa w twojej przeglądarce. Konfiguracja nie jest wysyłana.
Zanim wkleisz konfigurację do czatu z AI
Ludzie często wklejają plik konfiguracji do czatu z AI, aby zapytać, dlaczego serwer się nie uruchamia. Prompt Redactor maskuje w tekście klucze API, tokeny, hasła i dane osobowe i potrafi przywrócić je w odpowiedzi, a wszystko dzieje się w twojej przeglądarce.
Wypróbuj: Prompt Redactor
Zamaskowany tekst
Zamaskowany tekst pojawi się tutaj.
Narzędzie znajduje tekst o rozpoznawalnym kształcie. Nie znajdzie poufnych informacji zapisanych zwykłymi zdaniami, więc brak wyniku nie oznacza, że tekst jest bezpieczny.
Przeczytaj zamaskowany tekst, zanim go wyślesz.
Formaty kluczy sprawdzono z dokumentacją dostawców i dokumentami RFC dnia 2026-10-23.
Wszystko działa w twojej przeglądarce. Ani tekst, ani tabela przywracania nie są wysyłane.
Jeśli sekret został już zatwierdzony w commicie
- Dokumentacja GitHub mówi, że pierwszym krokiem jest unieważnienie lub rotacja sekretu, aby nie można go było już używać do uzyskania dostępu.
- Po rotacji przepisywanie historii repozytorium może nie być uzasadnione, ponieważ unieważnienie sekretu może wystarczyć do rozwiązania problemu.
- Jeśli commit istnieje w forkach, pozostaje tam dostępny. GitHub nie może przekazać ci danych kontaktowych właścicieli forków.
- Commity mogą pozostać osiągalne przez swoje skróty SHA-1 w buforowanych widokach w GitHub. Wsparcie GitHub może usunąć buforowane widoki i odwołania dla danych wrażliwych, których ryzyka nie da się zmniejszyć rotacją poświadczeń.