File di approvazione di Claude Code espongono segreti, secondo Apiiro

File di approvazione di Claude Code espongono segreti, secondo Apiiro

Aggiungi CyberWorldOpsalle tue fonti preferite su Google
File di approvazione di Claude Code espongono segreti, secondo Apiiro
AI

Immagine illustrativa generata con AI

Password e chiavi API di sviluppatori sono comparse in repository GitHub pubblici dopo che Claude Code ha salvato comandi approvati che le contenevano, riferisce The Hacker News, citando i risultati resi noti da Apiiro. La società di sicurezza ha trovato segreti in 1.122 copie pubbliche di .claude/settings.local.json. Consiglia di ruotare le credenziali esposte prima di rimuovere i file, perché le copie possono sopravvivere nella cronologia dei repository e nei fork.

I risultati riguardano sviluppatori e organizzazioni che usano l'assistente di programmazione di Anthropic, in particolare quelli che approvano comandi contenenti password di database, token di accesso o chiavi cloud. Apiiro non ha verificato se le credenziali fossero ancora valide, anche se un'azienda, avvisata all'inizio di quella settimana, ha confermato che la propria chiave era attiva. Non si sa se qualcuno abbia già usato i segreti esposti.

Come un'approvazione diventa un segreto salvato

Di norma Claude Code chiede il permesso prima di eseguire la maggior parte dei comandi shell. Secondo la descrizione che The Hacker News fa della documentazione sui permessi, selezionare «Sì, e non chiedere più» salva una regola di autorizzazione nel file .claude/settings.local.json del progetto. I comandi corrispondenti possono poi essere eseguiti senza un'altra richiesta nelle sessioni successive.

Il permesso salvato può riguardare un modello di comando, come npm test *, oppure un singolo comando esatto. Quando salva il comando esatto, password e token scritti al suo interno restano in chiaro. Apiiro ha trovato regole di questo tipo nei repository pubblici e ha riprodotto il comportamento con i modelli Opus 5.5 e Fable 5.1.

Claude Code prevede una protezione contro il commit del file. Secondo la sua documentazione sulle impostazioni, quando scrive per la prima volta il file all'interno di un repository Git, aggiunge il percorso alle esclusioni globali di Git dell'utente. In questo modo Git, su quel computer, ignora il file in tutti i repository.

Ma l'esclusione appartiene alla configurazione di un singolo utente su un singolo computer. Non viene trasferita con il progetto e, secondo i ricercatori, non protegge un file già sottoposto a commit. Claude Code non aggiunge il percorso al .gitignore del progetto, il file che contiene le regole condivise per escludere i file.

In 539 dei 1.105 repository analizzati da Apiiro, un commit che indicava Claude come coautore aveva modificato il file delle impostazioni. I ricercatori lo hanno interpretato come una prova che Claude spesso esegue il commit del file autonomamente.

Cosa è stato esposto

Apiiro ha cercato tra 104.185 copie pubbliche di .claude/settings.local.json in 103.617 repository GitHub. Di questi file, 1.122 (circa l'1,1%) contenevano almeno un segreto, per un totale di 1.379 segreti diversi.

I ricercatori hanno conteggiato un valore quando corrispondeva a un formato di chiave noto o compariva come password o token accanto a un indirizzo di server pubblico. Doveva inoltre essere d'accordo con la classificazione anche un revisore basato sull'IA.

Più di un terzo dei segreti consentiva l'accesso diretto a database, incluse 379 password di database. Tra gli altri risultati figuravano 43 credenziali di accesso SSH per l'accesso remoto a server pubblici, 42 token per GitHub, GitLab e npm e 23 chiavi AWS.

Tra i proprietari dei file figuravano 63 organizzazioni, per lo più aziende di software di dimensioni diverse. Tra i risultati più gravi, Apiiro ha evidenziato la chiave cloud con privilegi di amministratore di un fornitore di database e la password del proprietario di un database di cartelle cliniche.

Fino a lunedì, ogni file contenente un segreto era ancora presente nel branch predefinito del repository, ovvero il ramo principale di sviluppo mostrato per impostazione predefinita. In metà di quei repository, il file era presente da almeno 217 giorni.

Rimuovere il file attuale lascia comunque altre vie di esposizione. Le versioni precedenti contenevano altri 734 segreti in 509 repository, assenti da tutte le copie attuali, di solito perché il file era stato cancellato. Altri 211 fork (copie separate del repository) di 74 repository riportavano gli stessi segreti degli originali.

Apiiro ha trovato segreti anche in 298 delle 76.011 copie di .claude/settings.json, un file di impostazioni condiviso che i team committano di proposito, soprattutto all'interno delle regole di autorizzazione. Includendo le impostazioni condivise, le versioni storiche e i log salvati delle chat degli agenti, i ricercatori hanno contato 2.539 segreti in 1.994 repository.

Tra i 16 agenti di programmazione la cui documentazione è stata confrontata da Apiiro, Claude Code è stato l'unico confermato a salvare per impostazione predefinita l'intero comando approvato in un file di progetto.

Gli scanner non hanno individuato le password nei comandi

Apiiro ha eseguito gli scanner di segreti Gitleaks e TruffleHog su ogni copia, senza la fase di verifica degli strumenti. Tra i 1.122 file di impostazioni locali che contenevano segreti, Gitleaks ne ha segnalati 564 e TruffleHog 643. Nessuno dei due strumenti ha segnalato 215 file.

La maggior parte dei valori non individuati erano password incorporate nei comandi. Uno scanner che cerca un formato di chiave riconoscibile può non notare una parola dall'aspetto comune dopo PGPASSWORD=, sshpass -p o mysql -p.

L'esposizione può avvenire anche senza un commit su GitHub. Il file JSON in chiaro si trova nella cartella del progetto e può finire in un pacchetto npm, un'immagine Docker, un archivio ZIP o una cartella sincronizzata. Il rapporto cita come esempio il worm Shai-Hulud del settembre 2025, un malware che cerca nei computer degli sviluppatori con TruffleHog, strumento che nella scansione di Apiiro ha segnalato più della metà di questi file.

Gli utenti avevano già segnalato questo comportamento di salvataggio. Una segnalazione di bug dell'11 agosto 2025 descriveva comandi approvati contenenti chiavi API e token salvati parola per parola; un bot automatico l'ha chiusa come «non pianificata» il 3 gennaio, dopo 60 giorni senza attività. Apiiro ha affermato che tutte e quattro le segnalazioni correlate che ha citato sono state chiuse da quel bot senza una risposta di Anthropic; l'ultima chiusura risaliva al giorno precedente alla pubblicazione del rapporto.

Ruotare le credenziali prima della pulizia

Apiiro consiglia agli sviluppatori di cercare nelle proprie organizzazioni GitHub entrambi i nomi dei file di impostazioni e di esaminare la cronologia Git, anche nei repository in cui i file non esistono più. Tutte le password, i token e le chiavi contenuti in quei file vanno ruotati prima della pulizia.

Gli sviluppatori dovrebbero poi smettere di tracciare il file di impostazioni locale con git rm --cached .claude/settings.local.json e aggiungerne il percorso al .gitignore del repository. Dovrebbero inoltre controllare le copie locali, anche quelle mai sottoposte a commit, ed eliminare le regole che contengono segreti.

Per evitare di salvare credenziali nelle future approvazioni, Apiiro consiglia di fare riferimento ai segreti tramite variabili fornite da un gestore di segreti, come $DB_URL, in modo che la regola memorizzi solo il nome della variabile. Consiglia inoltre di approvare modelli di comando come Bash(npm run:*) invece dei singoli comandi che contengono valori sensibili.

I team di sicurezza dovrebbero trattare le cartelle degli agenti (tra cui .claude/, .cursor/, .gemini/ e .specstory/) e i file di memoria degli agenti come potenziali archivi di segreti, come i file di configurazione .env, sia sui portatili sia nei repository. Apiiro consiglia di includere queste cartelle e la loro cronologia Git nella scansione pre-commit e di integrazione continua (CI), di verificare che gli scanner rilevino le password all'interno dei comandi e di inserire .claude/settings.local.json nei template di .gitignore aziendali. I ricercatori suggeriscono di dare la priorità alle credenziali abbinate a indirizzi di server pubblici, perché offrono un accesso immediato.

Dossier sicurezza

Leggi anche

Fonti

Torna alla home

Ultime notizie di cybersecurity

Tutte le notizie di cybersecurity →