Sari la conținut

AcasăBlog › Scurgerea de cod sursă Claude Code: ce s-a întâmplat și ce riscuri există

Scurgerea de cod sursă Claude Code: ce s-a întâmplat și ce riscuri există

16 mai 2026 · , specialist în servicii SEO din 2007 · Securitate

Scurgerea de cod sursă Claude Code: ce s-a întâmplat și ce riscuri există

Scurgerea de cod sursă Claude Code: ce s-a întâmplat și ce riscuri există, pe scurt: pe 31 martie 2026, Anthropic a publicat din greșeală, în pachetul npm al interfeței Claude Code, un fișier de tip source map care ducea la codul sursă complet al aplicației, aproximativ 512.000 de linii de TypeScript. Nu a fost un atac, ci o eroare de împachetare; nu au fost expuse date ale utilizatorilor, credențiale sau ponderile modelelor. A fost însă al doilea incident de acest fel în 13 luni și s-a suprapus, în aceeași noapte, cu un atac real asupra lanțului de aprovizionare npm (pachetul axios), ceea ce a creat confuzie și a adus riscuri concrete pentru cine a instalat sau actualizat pachete în acel interval.

Articolul reconstituie cronologia din surse publice, separă ce a fost expus de ce nu, explică riscurile pentru utilizatorii Claude Code și pentru orice echipă care publică pachete, și încheie cu ce am verificat noi, ca utilizatori zilnici ai uneltei.

Scurgerea de cod sursă Claude Code: ce s-a întâmplat și ce riscuri există

Cronologia

  1. Versiunea 2.1.88 a pachetului @anthropic-ai/claude-code a fost publicată pe npm cu un fișier source map de 59,8 MB. Source map-urile sunt fișiere de depanare care leagă codul minimizat de sursa originală; nu trebuie să ajungă în pachetele publice.
  2. Fișierul indica spre o arhivă zip accesibilă public, în spațiul de stocare Cloudflare R2 al Anthropic. Nu a fost nevoie de nicio exploatare: adresa era publică.
  3. Un cercetător în securitate, Chaofan Shou (stagiar la Fuzzland), a observat fișierul și a publicat adresa pe platforma X.
  4. În câteva ore, Anthropic a retras fișierul, a publicat o versiune corectată și a confirmat incidentul într-un interviu pentru VentureBeat, atribuindu-l unei erori umane în procesul de lansare.
  5. În aceeași noapte, între 00:21 și 03:29 UTC, un atac separat a compromis pachetul axios pe npm; cele două evenimente nu au legătură, dar au apărut simultan în fluxurile de știri.

Ce a fost expus

  • Codul interfeței CLI: arhitectura agentului, structura internă, uneltele și fluxurile de lucru.
  • Telemetrie și metrici de utilizare: ce măsoară aplicația și cum le raportează.
  • Indicatori de funcționalități (feature flags), inclusiv pentru funcții ascunse sau în dezvoltare.
  • Referințe la modele viitoare, conform rapoartelor ulterioare din presă.

Ce nu a fost expus

Datele utilizatorilor, cheile API, credențialele de autentificare, conversațiile și ponderile modelelor Claude. Anthropic a confirmat că datele clienților nu au fost afectate, iar natura incidentului (un fișier de depanare publicat din greșeală) este consecventă cu această afirmație: source map-ul conține cod, nu date de producție.

Riscurile reale

Pentru utilizatorii Claude Code

Riscul direct al scurgerii de cod este mic: codul unei interfețe CLI nu dă acces la conturi. Riscul indirect vine din suprapunerea cu atacul asupra axios: cine a instalat sau actualizat pachete npm în fereastra de câteva ore din 31 martie ar putea avea o dependență compromisă. Recomandările, pe care le-am aplicat și noi: verificarea dependențelor din proiectele atinse (npm audit, compararea versiunilor instalate cu cele publicate după corectare), rotirea cheilor API și a tokenurilor de autentificare folosite pe mașinile respective, și trecerea la instalatorul nativ Claude Code în locul npm, cum recomandă Anthropic. Pașii de instalare sunt în ghidul despre instalarea Claude Code și primele comenzi.

Pentru Anthropic

Codul dezvăluie cum funcționează agentul, ce funcții urmează și ce măsoară; este informație pentru concurenți și pentru cei care caută vulnerabilități în client. Repetarea aceluiași tip de eroare (februarie 2025, martie 2026) arată că procesul de lansare nu avea o verificare automată a conținutului pachetului, o verificare pe care orice echipă o poate adăuga într-o oră, cum arătăm mai jos.

Pentru oricine publică pachete

Incidentul este un caz-școală pentru lanțul de aprovizionare: un pachet public este citit de mașini care instalează tot ce conține; un fișier în plus, o adresă în plus, un token uitat într-un fișier de configurare ajung instantaneu la oricine. Erorile de acest tip (source map-uri, fișiere .env, chei în istoricul git) sunt printre cele mai frecvente cauze de expunere de secrete raportate de scanerele publice de depozite.

Ce verificați, dacă folosiți Claude Code

  1. Versiunea instalată: claude --version; orice versiune de după 31 martie 2026 nu conține fișierul.
  2. Metoda de instalare: instalatorul nativ (recomandat de Anthropic) sau npm cu versiune fixată.
  3. Dependențele proiectelor în care ați rulat npm install în 31 martie: npm audit și compararea cu avizele de securitate publicate pentru axios.
  4. Cheile API și tokenurile de pe acele mașini: rotite, cu cele vechi revocate din consola Anthropic.
  5. Jurnalele de acces ale conturilor: activitate neobișnuită în intervalul respectiv.

Noi am rotit cheile API ale firmei și am verificat proiectele cu dependențe npm în aceeași săptămână; nu am găsit versiuni compromise, dar verificarea a durat o oră și a fost mai ieftină decât îndoiala.

Lecțiile pentru echipele care publică cod

  • Verificați conținutul pachetului înainte de publicare: npm pack urmat de listarea arhivei; un pas în procesul automat de lansare, cu eșec dacă apar fișiere neașteptate (.map, .env, .pem, dosare de test).
  • Fișierul .npmignore sau câmpul files din package.json, cu lista explicită a ce intră în pachet, nu a ce nu intră.
  • Source map-urile pentru producție, dacă sunt necesare pentru depanare, se păstrează privat și se încarcă în serviciul de monitorizare a erorilor, nu în pachet.
  • Spațiile de stocare (R2, S3) cu politici implicite de acces privat; verificare automată a obiectelor publice.
  • Secretele în manager de secrete, niciodată în fișiere din depozit; scanare automată a depozitului la fiecare commit.
  • Versiuni fixate și verificarea integrității pentru dependențe (lockfile, npm ci în producție), ca un atac asupra unei dependențe să nu intre automat.
  • Un plan de răspuns: cine retrage pachetul, cine comunică, în cât timp; Anthropic a reacționat în ore, ceea ce a limitat efectul.

Aceleași principii se aplică la site-uri: fișierele de configurare și copiile de siguranță în afara dosarului public, dependențele actualizate, secretele rotite după orice incident; lista completă este în ghidul despre răspunsul la incidente de securitate. Contextul atacurilor asupra lanțului de aprovizionare din 2026, inclusiv cele asupra modulelor WordPress, este în articolul despre atacul asupra modulelor mu-plugins.

Cum arată un source map și de ce e periculos

Codul JavaScript livrat utilizatorilor este minimizat: nume scurte de variabile, fără spații, fără comentarii, greu de citit. Source map-ul este fișierul care leagă fiecare poziție din codul minimizat de fișierul și rândul original din sursa TypeScript; uneltele de dezvoltare din browser sau din editor îl folosesc ca să afișeze codul original la depanare. Un source map complet conține deseori și sursa în sine (câmpul sourcesContent) sau, ca în acest caz, adresa de unde poate fi descărcată. Publicat alături de codul minimizat, anulează minimizarea: oricine îl deschide citește proiectul ca și cum ar avea depozitul. Este o greșeală obișnuită în proiectele web (site-uri care livrează .map-urile temelor și ale aplicațiilor), pe care o găsim și la audituri de securitate ale site-urilor clienților, cu chei API în codul sursă expus astfel.

Verificarea pe propriul site

curl -sI https://www.exemplu.ro/js/app.js.map | head -n 1        # 200 înseamnă că e public
grep -r "sourceMappingURL" /var/www/site/public/js/ | head          # ce fișiere trimit spre map-uri
grep -rE "sk-[A-Za-z0-9]{20,}|AKIA[0-9A-Z]{16}" /var/www/site/public/ # chei uitate în cod

Dacă map-urile sunt publice, fie le scoateți din docroot, fie le blocați din configurația serverului (regulă pe extensia .map), fie le generați doar pentru mediul de dezvoltare. Cheile găsite în cod se rotesc imediat, indiferent dacă „nu le folosea nimeni”. Această verificare face parte din auditul de securitate pe care îl facem site-urilor, alături de antete și de configurația TLS, cu scanerul de securitate GOAI.

Lanțul de aprovizionare, pe scurt

Un proiect obișnuit de JavaScript are sute de dependențe, fiecare cu propriile dependențe; un pachet compromis undeva în lanț ajunge în producție la următorul npm install. Incidentul axios din aceeași noapte este exemplul: un pachet folosit de milioane de proiecte, cu o versiune otrăvită publicată pentru trei ore. Apărarea, pentru orice echipă: lockfile păstrat în depozit, instalare cu npm ci în producție (nu npm install), verificarea semnăturilor și a provenienței unde sunt disponibile, întârzierea adoptării versiunilor noi cu câteva zile pentru dependențele critice, și un scaner de dependențe (npm audit, Dependabot sau echivalent) cu alerte. Pentru site-urile WordPress, lanțul de aprovizionare sunt modulele, cu aceleași riscuri și aceleași reguli.

Ce înseamnă pentru încrederea în unealtă

Am continuat să folosim Claude Code zilnic după incident, fiindcă natura lui (eroare de împachetare, fără date expuse, reacție rapidă) nu schimbă evaluarea riscului de utilizare: codul rulează local, cu permisiuni pe care le controlăm, iar cheile sunt ale noastre. Ce am schimbat este disciplina: versiuni fixate, instalator nativ, rotirea cheilor la orice aviz. Noutățile uneltei din aceeași lună, inclusiv modul automat și continuitatea proiectelor, sunt în articolul despre Claude Code în martie 2026, iar ghidul general de utilizare, în ghidul complet Claude.

Surse

Cum a fost realizat acest articol

Autor
Publicat
16 mai 2026
Ultima actualizare
9 septembrie 2026
Surse

Lucrăm după principiile noastre de publicare, politica pentru corectare, politica pentru etică.

Articole similare