TLDR
- Un commit firmato e utile, ma il badge Verified non deve essere letto come garanzia assoluta sull'identita dell'autore.
- Git distingue author e committer: la UI e le policy possono creare ambiguita se il team non controlla entrambi.
- La supply chain moderna richiede prove multiple: firme, branch protection, review, CI, provenance e key management.
- La domanda giusta non e 'c'e il badge?', ma 'quale identita, quale chiave e quale processo sono stati verificati?'.
Perche conta ora
Il badge verde e seducente.
Lo vedi accanto a un commit e il cervello fa una scorciatoia: verificato, quindi fidato. Fine.
Peccato che nella supply chain del codice la parola "verificato" non sia mai una magia. E una proprieta specifica, in un punto specifico, dentro un processo molto piu grande.
Le discussioni recenti su GitHub Verified, firme e identita del commit ricordano una cosa semplice: una firma valida dimostra che una certa chiave ha firmato un certo oggetto. Non dimostra automaticamente che la persona che stai immaginando abbia scritto quel codice, che la modifica sia sicura, che la chiave sia stata gestita bene o che la release sia affidabile.
La crittografia puo essere corretta e la percezione umana sbagliata nello stesso momento.
Author, committer e ambiguita
Git porta con se una distinzione che molti team dimenticano: author e committer.
L'author e chi ha scritto originariamente la modifica. Il committer e chi ha creato o applicato il commit nella storia. In flussi normali coincidono spesso, ma non e una legge della fisica.
Rebase, patch applicate da altri, bot, merge, import storici e tool di automazione possono separarli.
Il problema nasce quando una UI, un badge o una policy fanno sembrare piu semplice una realta che semplice non e. Se il team legge il badge come "questa persona ha scritto questo codice e noi possiamo fidarci", sta aggiungendo un significato che potrebbe non essere garantito.
La firma e una prova. Non e tutta la storia.
Il rischio supply chain
Un attaccante non deve sempre bucare il compilatore o compromettere il registry. A volte gli basta infilare ambiguita in un processo che tutti scorrono velocemente.
Esempi:
- commit con author famoso ma committer diverso;
- chiave valida ma poco governata;
- account compromesso con chiave aggiunta;
- bot con permessi troppo larghi;
- branch protection configurata male;
- review approvata per stanchezza;
- release generata da workflow non bloccato su policy forti.
Il badge puo essere vero e il rischio comunque reale.
Questa e la parte che fa male: la sicurezza della supply chain non e un indicatore singolo. E una rete di controlli che si rinforzano a vicenda.
Come leggere un commit sospetto
Quando un commit tocca codice sensibile, pipeline, dipendenze, auth, deploy o segreti, controlla piu livelli:
- Chi e l'author?
- Chi e il committer?
- Quale chiave ha firmato?
- La chiave e attesa per quel ruolo?
- Il commit arriva da branch protetto?
- La review e di qualcuno che capisce il modulo?
- La CI ha girato su codice esattamente uguale a quello mergiato?
- La release e collegata a quel commit con provenance verificabile?
Se una di queste risposte e opaca, non basta indicare il badge verde.
Cosa fare in pratica
Per un team piccolo, il punto non e diventare una CA interna con rituali infiniti.
Parti da qui:
- richiedi commit firmati nei repository critici;
- abilita protezioni di branch e review obbligatorie;
- limita chi puo creare release;
- separa bot di CI e account umani;
- ruota e rimuovi chiavi vecchie;
- usa chiavi hardware per maintainer sensibili;
- controlla author e committer nei cambiamenti critici;
- non fare deploy solo perche il badge e verde;
- blocca release se la provenance non torna.
La regola e: Verified e un segnale, non una sentenza.
Il problema UX della sicurezza
Qui c'e anche un tema di interfaccia.
Un badge semplice e utile per ridurre rumore. Ma quando un badge semplice rappresenta una condizione complessa, rischia di diventare un tranquillante.
L'utente non legge tutta la definizione. Vede il colore, vede la parola, decide.
Per questo le policy devono stare vicino al workflow, non solo nella testa dei maintainer. Se vuoi che un commit non conforme non entri in release, non affidarti solo alla memoria. Fai fallire la pipeline. Se vuoi che certe chiavi siano ammesse, controllale in modo automatico. Se vuoi che author e committer non vengano confusi, rendi quella differenza visibile nei punti dove conta.
La fiducia nel codice e troppo importante per stare solo in un tooltip.
La lezione
Firmare e bene.
Capire cosa stai firmando, chi lo sta firmando e quale processo lo accetta e meglio.
Il badge Verified non va demonizzato. Va ridimensionato. E un pezzo di una storia piu grande: identita, chiavi, policy, review, CI, release e audit.
La supply chain moderna non si difende con un adesivo verde.
Si difende facendo domande scomode prima che il codice diventi produzione.
FAQ
Cosa significa GitHub Verified?
Indica che GitHub ha verificato la firma del commit o del tag secondo le chiavi associate a un account. Non significa automaticamente che ogni campo visibile o ogni intenzione del commit sia fidata.
Author e committer sono la stessa cosa?
Non necessariamente. Git conserva informazioni su chi ha scritto il cambiamento e su chi lo ha applicato. Questa distinzione e importante quando si ragiona su fiducia e attribuzione.
Le firme dei commit sono inutili?
No. Sono molto utili, ma vanno integrate con protezioni di branch, review, controllo delle chiavi e verifica della provenance.
Cosa dovrebbe controllare un maintainer?
Controlla author, committer, chiave usata, account associato, branch protection, stato CI, diff e provenienza della modifica.
Come miglioro la fiducia nei commit?
Usa firme obbligatorie, vigilant mode quando adatto, chiavi hardware per ruoli sensibili, review obbligatorie e policy che bloccano release da commit non conformi.
Fonti
- The Hacker News - GitHub Verified Commits Can Be Spoofed Without Breaking Signature
- GitHub Docs - About commit signature verification
- GitHub Docs - Displaying verification statuses for commits
- Hacker News - GitHub commit verification logic flaw and bypass
- Hacker News - Supply chain attacks via compromised developer keys