La chiave che è ancora nella cronologia del codice

Hai tolto la password dal file e hai pensato di averla rimossa. Ma la cronologia del codice la conserva: finché non ruoti quella chiave, è come non averla mai tolta.

7 minSviluppatori, CTO, chi gestisce codice sorgente

Cosa portare a casa

Risposta breve

I sistemi di controllo di versione come Git conservano la storia completa di ogni modifica. Se una chiave, una password o un token è stato scritto nel codice anche solo una volta, resta nella cronologia anche dopo che il file è stato ripulito: chi ha accesso al repository può recuperarlo. È il difetto delle credenziali scritte nel codice, censito come CWE-798, e la regola che ne consegue è netta: un segreto finito in un repository va considerato compromesso.

Git conserva la cronologia: un segreto scritto una volta resta recuperabile anche dopo aver ripulito il file.

La regola: un segreto finito in un repository è compromesso, e va cambiato, non solo rimosso.

Il rischio esplode se il repository è, anche solo per errore, pubblico: i segreti esposti vengono trovati in fretta da programmi automatici.

Si controlla con strumenti che scandagliano la cronologia; la prevenzione è tenere i segreti fuori dal codice fin dall'inizio.

Data Hub

CONSOO

Torna alle guide

Perché rimuovere il file non basta

L'errore di ragionamento è naturale: ho scritto la password nel file di configurazione, me ne sono accorto, l'ho tolta. Sembra risolto. Ma Git non dimentica: ogni versione precedente del file è conservata nella cronologia, e chiunque abbia accesso al repository può tornare indietro e leggerla. Ripulire la versione attuale è come strappare l'ultima pagina di un diario di cui esistono tutte le fotocopie. Finché quella chiave è valida, il fatto che sia «tolta» dal presente non cambia nulla.

Cosa finisce nel codice senza accorgersene

I segreti più comuni da trovare nella cronologia
CosaPerché è grave
Chiavi di servizi a pagamento (AI, invio email, mappe)Chi le ottiene le usa a vostre spese
Credenziali del databaseAccesso diretto ai dati, saltando l'applicazione
Token di accesso a servizi cloudPossono aprire l'intera infrastruttura
Password di account amministrativiAccesso ai sistemi collegati
Chiavi di firma o di cifraturaCompromettono la fiducia dell'intero sistema

La chiave di un servizio AI a consumo merita una menzione: se il repository è pubblico, viene trovata e sfruttata in poche ore, e il primo segnale è la fattura.

Trovarli e prevenirli

  1. 01

    Scandagliate la cronologia

    Esistono strumenti gratuiti che analizzano tutta la storia di un repository cercando ciò che assomiglia a chiavi e password. Lanciateli sul vostro: dicono cosa è stato esposto e quando.

  2. 02

    Ruotate ciò che trovate

    Per ogni segreto trovato, cambiatelo alla fonte. È il passo che conta: senza, aver trovato il segreto non riduce il rischio.

  3. 03

    Tenete i segreti fuori dal codice

    La prevenzione: i segreti stanno in variabili d'ambiente o in un gestore di segreti, mai nel codice. Nel codice ci va, al massimo, un file di esempio con valori finti.

  4. 04

    Mettete una rete automatica

    Uno strumento che, a ogni modifica, blocca l'invio se contiene qualcosa che sembra un segreto. È ciò che impedisce all'errore di ripetersi quando l'attenzione cala.

Risorse collegate utili

Domande frequenti

Il mio repository è privato: sono comunque a rischio?

Il rischio è più basso, ma non zero, e la regola resta: chi ha accesso al repository ha accesso alla cronologia, quindi ai segreti. Collaboratori, ex collaboratori, un account compromesso, o un repository reso pubblico per errore anche solo per un'ora. «Privato» riduce la platea, non elimina il problema: la rotazione resta la risposta corretta.

Ripulire la cronologia non è la soluzione migliore?

Riscrivere la cronologia per rimuovere un segreto si può fare, ma è complesso, invasivo e non garantito: copie del repository possono esistere altrove, e il segreto potrebbe essere già stato letto. È un'operazione da fare in aggiunta, non al posto, della rotazione. La sequenza corretta è: prima cambia la chiave, poi eventualmente pulisci la storia.

Come evito che ricapiti?

Con due cose: una regola chiara — i segreti non si scrivono mai nel codice, stanno in variabili d'ambiente o in un gestore dedicato — e uno strumento automatico che controlla ogni modifica e blocca quelle che contengono qualcosa di sospetto. La regola da sola dipende dall'attenzione; lo strumento la rende indipendente dalla giornata storta.

Sospettate che una chiave sia finita nel codice e non sapete la portata? Vale la pena scandagliare e capire cosa è stato esposto. Lo guardiamo insieme. Consulenza gratuita.

CONSOO trasforma idee su software, AI e integrazioni in un percorso tecnico chiaro per PMI.

  • 30 minuti, online
  • Nessun impegno
  • Analisi del tuo caso reale
  • Risposta entro 24 ore