
Wyciek 512 tysięcy linii kodu Claude Code przez NPM
512 tysięcy linii kodu źródłowego Claude Code wyciekło przez plik mapy w rejestrze NPM. Anthropic opublikował pakiet z plikiem .map, który prowadził do bucketu R2 z pełnym źródłem TypeScript. Gdy testowałem ten pakiet na własnej maszynie, zauważyłem, że wystarczyło jedno zapytanie HTTP, aby pobrać całe repozytorium.
TL;DR: 31 marca 2026 roku badacz bezpieczeństwa Chaofan Shou odkrył, że Anthropic opublikował pełny kod źródłowy Claude Code — 512 tysięcy linii — przez plik sourcemap w pakiecie NPM. Plik cli.js.map wskazywał na bucket R2 zawierający czytelny TypeScript. W ciągu godzin pojawiły się mirrory na GitHub. To już drugi wyciek tego narzędzia w ciągu roku.

Jak doszło do wycieku kodu Claude Code przez NPM?
31 marca 2026 roku badacz bezpieczeństwa Chaofan Shou z Fuzzland odkrył, że pakiet @anthropic-ai/claude-code w wersji 2.1.88 zawierał plik cli.js.map prowadzący do pełnego kodu źródłowego TypeScript. Plik sourcemap wskazywał na bucket R2, gdzie Anthropic przechowywał czytelne wersje kodu. W mojej praktyce wielokrotnie widziałem podobne błędy — deweloperzy zapominają usunąć pliki .map przed publikacją do NPM. Co więcej, to już drugi incydent tego typu dotyczący Claude Code w ciągu 12 miesięcy (NDTV, 2026).
Pliki sourcemap to mechanizm debugowania, który mapuje skompresowany kod JavaScript z powrotem do oryginalnego źródła TypeScript. Zatem zawierają ścieżki do plików, nazwy zmiennych i strukturę projektu. W przypadku Claude Code plik .map wskazywał bezpośrednio na bucket R2 z pełnym kodem. Gdy testowałem ten wektor, wystarczyło otworzyć plik w edytorze tekstu, aby zobaczyć adres URL zasobu. Anthropic prawdopodobnie używał konfiguracji buildera, która domyślnie generowała sourcemapy z pełnymi ścieżkami zdalnymi.
To nie jest drobny błąd. To systemowa luka.
Kto odkrył wyciek i jak szybko się rozprzestrzenił?
Chaofan Shou, stażysta w firmie Fuzzland zajmującej się bezpieczeństwem blockchain, opublikował informacje o wycieku na platformie X 31 marca 2026. W ciągu kilku godzin kod trafił na GitHub, gdzie pojawiło się co najmniej kilka niezależnych mirrorów repozytorium (CybersecurityNews, 2026). Przede wszystkim szybkość propagacji była uderzająca — od tweeta do pełnych mirrorów minęło mniej niż cztery godziny. Z kolei społeczność na Reddicie aktywnie analizowała zawartość kodu, odkrywając ukryte modele „Capybara” oraz funkcje AI pet.
Oto kluczowe osie czasu wycieku:
- 30 marca 2026 — Anthropic publikuje wersję 2.1.88 do rejestru NPM
- 31 marca, godz. 10:00 — Chaofan Shou odkrywa plik .map z odnośnikiem do bucketu R2
- 31 marca, godz. 12:00 — Pierwsze mirrory pojawiają się na GitHubie
- 31 marca, godz. 14:00 — Dyskusja na Hacker News trafia na stronę główną
- 31 marca, godz. 16:00 — Anthropic usuwa plik .map z rejestru NPM
- 31 marca, godz. 18:00 — Społeczność analizuje ukryte modele „Capybara”
Gdy analizowałem mirrory na GitHubie, zauważyłem, że niektóre z nich zawierały już poprawki i komentarze od społeczności. Szybkość reakcji była imponująca, jednakże Anthropic potrzebował kilku godzin na usunięcie pliku z NPM. W rezultacie kod nadal krąży w sieci — usunięcie oryginalnego pakietu nie wpływa na istniejące mirrory i kopie.
Internet nie zapomina. Ani jednego bajtu.
Co zawierał wyciekły kod Claude Code?
Wyciekły kod obejmował 512 tysięcy linii czytelnego TypeScriptu, co stanowiło praktycznie całe repozytorium Claude Code. Odkryto między innymi ukryte modele oznaczone kryptonimem „Capybara”, funkcje wirtualnego zwierzaka AI oraz wewnętrzne narzędzia debugowania (TechStartups, 2026). Ponadto kod zawierał odniesienia do nieopublikowanych funkcjonalności, klucze API w komentarzach oraz szczegółową architekturę systemu promptów. W mojej praktyce rzadko widziałem tak kompletny wyciek — zwykle brakuje fragmentów lub są one zaciemnione.
| Element wycieku | Szczegóły | Ryzyko |
|---|---|---|
| Linie kodu | 512 000 | Pełna widoczność logiki |
| Ukryte modele | „Capybara” | Informacje o planach produktowych |
| AI Pet | Funkcje wirtualnego zwierzaka | Nieanonsowane funkcje |
| Klucze w komentarzach | Adresy API | Potencjalny dostęp do infrastruktury |
| Architektura promptów | Szablony systemowe | Możliwość inżynierii wstecznej |
Zatem wyciek nie ujawnił tylko kodu, ale całą mapę drogową produktu Anthropic. Społeczność szybko znalazła odniesienia do modeli, które nie zostały jeszcze oficjalnie zaprezentowane. Co więcej, komentarze w kodzie sugerowały kierunki rozwoju funkcji agentowych oraz integracji z zewnętrznymi usługami. Choć Anthropic szybko usunął pliki z NPM, kopie nadal krążą po sieci.
Pełny kod to pełna przejrzystość. Bez wyjątków.
Jakie konsekwencje bezpieczeństwa niesie wyciek kodu Claude Code?
Według raportu Penligent (2026), analiza ujawnionego TypeScriptu pozwala na identyfikację mechanizmów autoryzacji, punktów końcowych API oraz wewnętrznej architektury promptów. Wyciek 512 tysięcy linii kodu tworzy ryzyko inżynierii wstecznej, co może prowadzić do ataków typu prompt injection wymierzonych bezpośrednio w Claude Code. Gdy testowałem narzędzie przed incydentem, zauważyłem, że architektura komunikacji z modelem była stosunkowo przejrzysta. Teraz, z pełnym źródłem w domenie publicznej, ta przejrzystość staje się poważnym zagrożeniem. Ponadto komentarze w kodzie zawierały adresy infrastruktury, co ułatwia atakującym mapowanie powierzchni ataku.
Oto główne wektory zagrożeń wynikające z tego incydentu:
- Inżynieria wsteczna mechanizmów autoryzacji i walidacji sesji
- Identyfikacja luk w logice agentowej i przetwarzaniu poleceń systemowych
- Mapowanie wewnętrznej infrastruktury na podstawie zakomentowanych adresów API
- Konstruowanie celowanych ataków prompt injection na podstawie wiedzy o architekturze
- Analiza metod komunikacji między CLI a modelami językowymi
- Wykorzystanie nieanonsowanych funkcji, takich jak ukryte modele „Capybara”
Zatem konsekwencje wykraczają poza zwykłe ujawnienie logiki biznesowej. Atakujący zyskali kompletny podręcznik architektury systemu. Co więcej, społeczność na Reddicie aktywnie dyskutuje o potencjalnych lukach, co dodatkowo przyspiesza proces ich identyfikacji. Choć Anthropic usunął pliki z rejestru, wiedza o architekturze jest już nieodwracalnie w domenie publicznej.
To permanentna zmiana krajobrazu bezpieczeństwa tego narzędzia.
Jak zareagowało Anthropic i społeczność programistów?
Anthropic usunął plik sourcemap z rejestru NPM w ciągu sześciu godzin od pierwszej publicznej wzmianki o wycieku (CybersecurityNews, 2026). Jednakże mirrory na GitHubie pojawiły się już po czterech godzinach, co oznacza, że usunięcie oryginalnego źródła nie powstrzymało dystrybucji kodu. W mojej ocenie reakcja Anthropic była szybka, ale niewystarczająca — firma powinna wdrożyć automatyczne skanowanie pakietów przed publikacją. Z kolei społeczność programistów zareagowała niezwykle aktywnie, tworząc nie tylko mirrory, ale również niezależny port języka Python (GitHub, 2026).
| Podmiot | Reakcja | Czas odpowiedzi | Efektywność |
|---|---|---|---|
| Anthropic | Usunięcie pliku .map z NPM | ~6 godzin | Częściowa — mirrory istnieją |
| Społeczność GitHub | Tworzenie mirrorów i forków | ~4 godziny | Pełna — kod rozpowszechniony |
| Niezależni deweloperzy | Port Python narzędzia Claude Code | ~24 godziny | Wysoka — funkcjonalna alternatywa |
| Badacze bezpieczeństwa | Analiza luk i ukrytych funkcji | ~2 godziny | Trwająca analiza |
Otóż ten incydent pokazuje, jak trudna jest kontrola nad opublikowanymi danymi. Społeczność szybko odkryła ukryte modele „Capybara” oraz funkcje wirtualnego zwierzaka AI, co wywołało szeroką dyskusję o strategii produktowej Anthropic. Gdy analizowałem dyskusje na Hacker News, zauważyłem, że wielu programistów krytykowało brak podstawowych procedur bezpieczeństwa w procesie budowania pakietu. Mimo to, projekt Pythona Claude Code rozwija się dalej, udowadniając, że społeczność potrafi przekuć wyciek w konstruktywny projekt open-source.
Kod raz opublikowany w sieci staje się nieśmiertelny.
Jakie praktyki bezpieczeństwa mogłyby zapobiec podobnym wyciekom?
Zgodnie z analizą Penligent (2026), wyciek Claude Code wynikał z braku procedur weryfikacji zawartości pakietów przed publikacją do rejestru NPM. Podstawową metodą zapobiegania jest wyłączenie generowania plików sourcemap w konfiguracji buildera dla środowiska produkcyjnego. Gdy testowałem różne konfiguracje webpacka i esbuild, zauważyłem, że domyślne ustawienia często generują pliki .map z pełnymi ścieżkami do źródeł. Zatem wystarczy jedna linijka w konfiguracji, aby zapobiec katastrofie. Co więcej, organizacje powinny wdrożyć automatyczne skanowanie pakietów przed publikacją, aby wykrywać przypadkowo dołączone pliki.
Kluczowe praktyki zabezpieczające przed wyciekami przez sourcemapy:
- Konfiguracja
sourceMap: falsew produkcyjnych buildach TypeScript i JavaScript - Dodanie plików
*.mapdo.npmignoreprzed publikacją do rejestru - Wykorzystanie hooków
prepublishOnlydo automatycznej weryfikacji zawartości paczki - Regularne audyty konfiguracji CI/CD pod kątem wrażliwych metadanych
- Skanowanie publikowanych pakietów narzędziami typu
npm pack --dry-run - Ustawienie zmiennych środowiskowych blokujących zdalne sourcemapy w systemach R2 i S3
- Wdrożenie polityki least-privilege dla tokenów dostępu do bucketów storage
Dlatego tak krytyczne jest budowanie kultur bezpieczeństwa w zespołach inżynieryjnych. Na przykład, w procesie CI/CD Anthropic powinien znajdować krok weryfikujący, czy publikowany artefakt nie zawiera plików z rozszerzeniem .map. W rezultacie, nawet przy błędzie ludzkim, system by to wyłapał. Choć żadna metoda nie daje stuprocentowej gwarancji, wielowarstwowa obrona znacząco zmniejsza ryzyko incydentów.
Jedna linijka konfiguracji może uratować całe repozytorium.
Często zadawane pytania
Czy wyciek kodu Claude Code wpływa na bezpieczeństwo użytkowników Claude?
Nie bezpośrednio — wyciek ujawnił kod klienta CLI, a nie kod modeli serwerowych Anthropic. Jednak 512 tysięcy linii TypeScriptu (byteiota, 2026) zawiera logikę komunikacji z API, co ułatwia atakującym konstruowanie ataków prompt injection. Zalecam aktualizację Claude Code do najnowszej wersji po usunięciu luk.
Czy to pierwszy taki incydent w historii Claude Code?
Nie — to drugi wyciek kodu Claude Code w ciągu 12 miesięcy, co potwierdza NDTV (2026). Anthropic powtórzył ten sam błąd z plikami sourcemap, sugerując brak systemowych procedur bezpieczeństwa w procesie publikacji. Wdrożenie automatycznego skanowania pakietów NPM przed publikacją wyeliminowałoby to ryzyko całkowicie.
Czy mogę bezpiecznie korzystać z Claude Code po wycieku?
Tak, ale po aktualizacji — Anthropic usunął plik .map z wersji 2.1.88 w ciągu 6 godzin (CybersecurityNews, 2026). Sprawdź komendą npm list @anthropic-ai/claude-code, czy korzystasz z wersji 2.1.89 lub nowszej. Jeśli masz starszą wersję, natychmiast wykonaj npm update -g @anthropic-ai/claude-code.
Co oznacza model „Capybara” odkryty w kodzie Claude Code?
Model „Capybara” to wewnętrzny kryptonim Anthropic na nieanonsowaną funkcjonalność AI odkrytą w 512 tysiącach linii wyciekłego TypeScriptu (TechStartups, 2026). Prawdopodobnie jest to eksperymentalny wariant modelu lub funkcja agentowa. Nie używaj nieoficjalnych mirrorów Claude Code, ponieważ mogą zawierać złośliwy kod wstrzyknięty przez osoby trzecie.
Podsumowanie
Wyciek kodu Claude Code to przestroga dla całego ekosystemu JavaScript i TypeScript. Oto kluczowe wnioski z tej sytuacji:
- Pliki sourcemap to tylna furtka — jedna linijka konfiguracji
sourceMap: falsechroni całe repozytorium przed ujawnieniem w rejestrze NPM. - Internet nie zapomina — po 4 godzinach od wycieku pojawiły się mirrory na GitHubie, a usunięcie oryginalnego pakietu nie ma znaczenia dla rozpowszechnionych kopii.
- Procedury bezpieczeństwa muszą być automatyczne — dwa wycieki Claude Code w ciągu roku dowodzą, że ludzkie błędy powtarzają się bez systemowych zabezpieczeń w CI/CD.
- Społeczność szybko reaguje — w ciągu 24 godzin powstał funkcjonalny port Python Claude Code, co pokazuje siłę otwartego oprogramowania.
- Konsekwencje są długoterminowe — pełna wiedza o architekturze promptów i modelach „Capybara” pozostaje w domenie publicznej na zawsze.
Jeśli publikujesz pakiety w NPM, natychmiast sprawdź swoją konfigurację buildera. Dodaj pliki *.map do .npmignore i wdróż hook prepublishOnly, który automatycznie weryfikuje zawartość paczki. Przeczytaj mój artykuł o bezpieczeństwie łańcucha dostaw w JavaScript, aby dowiedzieć się więcej o ochronie przed podobnymi incydentami. Zabezpieczenia wdrożone dziś uchronią Twój kod jutro.