Una firma digitale avrebbe impedito il compromesso di CCleaner?

60

Ho letto oggi su CCleaner hack e come il codice è stato iniettato nel loro binario. Le persone sono state in grado di scaricare e installare il software compromesso prima che l'azienda lo notasse.

Non è questo il significato delle firme digitali? Firmare il file binario o fornire un checksum ha fatto qualcosa per impedirlo?

Per aggiungere confusione, in questo articolo di notizie Reuters un ricercatore afferma di avere una firma digitale:

“There is nothing a user could have noticed,” Williams said, noting that the optimization software had a proper digital certificate, which means that other computers automatically trust the program.

In che modo il sistema operativo può accettare di installare un software con una firma non valida? Oppure un utente malintenzionato può modificare la firma e binari?

    
posta Steven M. Vascellaro 18.09.2017 - 15:25
fonte

2 risposte

95

Sulla base dei dettagli incompleti che sono stati rilasciati finora, il codice dannoso è stato inserito prima della compilazione e della firma (ad esempio sul computer di uno sviluppatore o su un server di build). Di conseguenza, la versione compromessa è stata firmata esattamente dagli stessi processi che verrebbero utilizzati dalla versione senza compromessi. Il difetto è stato introdotto prima la firma del binario ha avuto luogo.

Allo stesso modo, un checksum sarebbe stato calcolato in base ai risultati della compilazione, a quel punto il codice dannoso era già presente.

Questo è un punto debole in tutte le architetture di firma - se il processo prima della firma è compromesso, non esiste un modo reale per rilevarlo. Ciò non significa che non siano utili - se gli autori degli attacchi non hanno avuto accesso ai sistemi fino a quando non è stata applicata la firma, la manomissione sarebbe stata rilevata facilmente, poiché la firma non sarebbe stata abbinata.

    
risposta data 18.09.2017 - 15:58
fonte
4

Essere firmati da un certificato di fiducia e avere un hash pubblico / checksum del codice sono cose diverse.

Il certificato ti dirà (dovrebbe) che il software proviene da una fonte attendibile, ma è così.

Un hash o checksum ti permetterà di verificare che il binario corrisponda all'hash calcolato in origine. In questo caso, tuttavia, l'hash è stato calcolato mentre il codice dannoso era presente nel codice sorgente, rendendo questa particolare protezione a meno che, semmai, aggiunga un falso senso di sicurezza.

Quando offri un hash pubblico o un checksum (supponendo che il codice sorgente non sia stato compromesso), dovresti prendere delle misure per fare in modo che l'hash sia servito da un dominio di terze parti. Immagina una situazione in cui un utente malintenzionato compromette il tuo sito, scambia un file binario originale per un utente malintenzionato, quindi modifica l'hash pubblico che stai visualizzando sul tuo sito. Almeno se è servito da una terza parte, l'attaccante dovrebbe anche compromettere quella terza parte per modificare l'hash.

Ricorda che questo particolare attacco era apparentemente la conseguenza di una macchina per lo sviluppo hacker, quindi nessuno di questi controlli hash / checksum o di firma del codice sarebbe stato comunque utile.

    
risposta data 18.09.2017 - 15:58
fonte

Leggi altre domande sui tag