Teknologi

Claude Code gemte adgangskoder i klartekst, og 1.122 filer ligger åbent på GitHub

Susan Hill
Tilføj os på Google

Anthropics Claude Code beder om tilladelse, før programmet kører de fleste shell-kommandoer. En af svarmulighederne er »Yes, and don’t ask again«. Vælger man den for en kommando, der indeholder en adgangskode, for eksempel til et database-login, kan Claude Code skrive hele kommandoen – inklusive adgangskoden – i en almindelig tekstfil med indstillinger i projektet. Sikkerhedsforskere har nu fundet tusindvis af den slags adgangskoder og nøgler i offentlige kodelagre på GitHub, hvor alle kan læse dem.

Hvis du bruger Claude Code, skal du lede efter filen settings.local.json. Den ligger i en skjult .claude-mappe i roden af kodelageret og følger med projektet, medmindre du forhindrer det. Adfærden er den samme i alle lande, hvor værktøjet er tilgængeligt. Det tager et minut at ændre sine vaner, mens det tager langt længere tid at rydde op efter en lækket adgangskode, fordi filen ikke forsvinder fra gits historik eller fra andres forks, selvom du sletter den.

Softwarevirksomheden Apiiro, der arbejder med sikkerhed, søgte i offentlige GitHub-lagre og fandt 104.185 kopier af filen fordelt på 103.617 kodelagre, ifølge virksomhedens undersøgelse, som The Hacker News har omtalt. Omkring 1,1 procent – eller 1.122 kopier – indeholder mindst én hemmelig oplysning, i alt 1.379 forskellige loginoplysninger. Mere end en tredjedel giver direkte adgang til en database, heriblandt 379 databaseadgangskoder. Fundene omfatter også 43 SSH-login til offentlige servere, 42 tokens til GitHub, GitLab og npm samt 23 nøgler til Amazon Web Services.

Det er ikke kun hobbyudviklere, der er berørt. Apiiro sporede filerne til 63 organisationer, fortrinsvis softwarevirksomheder af alle størrelser. Blandt de mest alvorlige eksempler var en databaseleverandørs egen cloud-nøgle med administratoradgang og ejeradgangskoden til en database med patientjournaler. Ældre versioner af filen i gits historik indeholder yderligere 734 hemmeligheder fordelt på 509 kodelagre, og 211 forks af 74 kodelagre rummer de samme hemmeligheder som originalerne. Tæller man den fælles indstillingsfil, som teams bevidst lægger ind i kodelageret, og gemte chatlogs fra agenter med, stiger tallet til 2.539 hemmeligheder i 1.994 kodelagre.

Claude Code forsøger faktisk at holde filen ude af versionsstyring. I Anthropics dokumentation for indstillinger står der, at værktøjet første gang, det skriver filen, tilføjer en regel til brugerens globale git-excludes, så git ignorerer den på den pågældende computer. Reglen følger ikke med projektet til en kollegas bærbare computer, en byggeserver eller en ny maskine, og den hjælper ikke, hvis filen allerede er blevet lagt ind i kodelageret. I 539 af de 1.105 kodelagre, forskerne sporede, ændrede en commit, hvor Claude stod som medforfatter, filen. Det tyder på, at agenten ofte selv lægger den ind. Af de 16 kodeagenter, hvis dokumentation Apiiro sammenlignede, er Claude Code den eneste, hvor det er bekræftet, at hele den godkendte kommando som standard gemmes i en fil i projektet.

De sædvanlige sikkerhedsforanstaltninger overser en stor del af problemet. Apiiro kørte to populære open source-værktøjer til scanning efter hemmeligheder, gitleaks og TruffleHog, på hver eneste kopi. gitleaks markerede 564 af de 1.122 filer, TruffleHog markerede 643, og 215 slap forbi begge. De fleste oversete adgangskoder var skrevet efter PGPASSWORD=, sshpass -p eller mysql -p. For et værktøj, der leder efter kendte nøgleformater, ligner de almindelige ord.

Resultaterne skal ses med nogle forbehold. Apiiro sælger sikkerhedsværktøjer til AI-assisteret udvikling, så undersøgelsen fungerer også som en salgstale. Virksomheden testede ikke, om loginoplysningerne stadig virker, selvom en af de virksomheder, den underrettede, bekræftede, at dens nøgle stadig var aktiv. En værdi blev regnet som en hemmelighed, hvis den passede til et kendt nøgleformat, eller hvis den stod ved siden af en offentlig serveradresse og en AI-kontrollant vurderede den som en hemmelighed. Det giver plads til nogle falske positiver. Apiiro understreger også, at tallet for medforfatter-commits ikke beviser, at Claude har indført alle de eksponerede loginoplysninger. Og GitHub er kun den synlige del: Filen er almindelig JSON i projektmappen og kan derfor også følge med i en npm-pakke, et Docker-image, et zip-arkiv eller en synkroniseret mappe.

Forskernes første råd er at udskifte alt: Skift alle adgangskoder, tokens og nøgler, som filen nogensinde har indeholdt, før du rydder op, for en hemmelighed, der har været offentlig, er kompromitteret, uanset om du omskriver historikken. Stop derefter med at spore filen med git rm –cached, føj den til kodelagerets egen .gitignore, og åbn /permissions i Claude Code for at slette eventuelle gemte regler, der indeholder en hemmelighed. Hvis du henviser til loginoplysninger via miljøvariabler, gemmer en regel navnet, for eksempel $DB_URL, i stedet for adgangskoden. Og ved at godkende mønstre frem for enkeltstående kommandoer undgår man helt, at konkrete argumenter bliver skrevet i filen.

Brugere har tidligere gjort opmærksom på problemet. En fejlrapport indsendt den 11. august 2025 beskrev, hvordan godkendte kommandoer med API-nøgler og tokens blev gemt ord for ord i settings.local.json. En automatisk bot lukkede rapporten som »not planned« den 3. januar efter 60 dage uden aktivitet. Apiiro, der offentliggjorde sine resultater den 6. november, skriver, at de fire relaterede rapporter, virksomheden henviser til, alle blev lukket af den samme bot. Den seneste blev lukket den 6. november uden svar fra Anthropic. Den 2. november lå alle de eksponerede filer, Apiiro fandt, stadig på deres kodelageres hovedgren; i halvdelen af tilfældene havde de ligget der i mindst 217 dage.

Hverken The Hacker News eller Apiiro melder om et svar fra Anthropic, og den dokumenterede adfærd er uændret: Næste gang du vælger »don’t ask again« for en kommando, hvor du har skrevet en adgangskode, bliver adgangskoden også gemt.

Tags: , , , , ,

Tilføj os på Google

Debat

Der er 0 kommentarer.