I pacchetti ubuntu (deb-files) sono protetti solo da md5sum?


13

Contesto introduttivo alla domanda di seguito ###

(quindi la domanda è più utilizzabile da più persone)
All'interno di un pacchetto stile Ubuntu / debian (file * .deb) c'è un file chiamato /DEBIAN/md5sumsche ha un contenuto di questo modulo:

212ee8d0856605eb4546c3cff6aa6d35 usr / bin / file1
4131b66dc3913fcbf795159df912809f percorso / to / file2
8c21de23b7c25c9d1a093607fc27656a percorso / to / file3
c6d010a475366e0644f3bf77d7f922fd path / to / place / of / file4

Suppongo che questo file verrà utilizzato per verificare che i file forniti con il pacchetto non siano stati danneggiati in qualche modo. Dato che il file si chiama "/ DEBIAN / md5sums", presumo il numero esadecimale prima che il percorso + nomefile sia l' Hash algoritmo digest-messaggio MD5 dei file del pacchetto.

Ora tutti gli interessati sanno che l'Hash MD5 è stato rotto già molto tempo fa. Pertanto è totalmente possibile modificare il contenuto di un file nel pacchetto (ad es. Maliziosamente) e avere ancora il file con lo stesso MD5-Hash (vedere ad esempio Prove del concetto "Prevedere il vincitore ...." ).

Domanda

Tenendo presente le informazioni sopra, voglio sapere quanto segue:

** Supponendo che installi un pacchetto nel mio sistema Ubuntu. È l' DEBIAN/md5sumsunico mezzo per assicurarsi che i dati non siano stati manomessi? **

Rispondendo alla domanda, penso che potrebbe aiutare a capire quanto segue:

  • I pacchetti deb nel loro insieme sono anch'essi sottoposti a hash (Hashvalues ​​creato per) in modo che ci sia un altro modo per rendere sicuri i file ricevuti siano "sicuri" / "non manomessi"
  • Se ci sono altri modi quindi il DEBIAN/md5sumsfile per garantire l'integrità, qual è comunque il file incluso nei pacchetti * .deb?
  • Ubuntu usa hash per repository / pacchetto-sistema "meno rotti" rispetto a SHA-1 e MD5?

che purtroppo non lo so neanche io.

Qualsiasi risposta che possa far luce sulla domanda (o anche solo una domanda) è molto gradita

aggiornare

(1) https://help.ubuntu.com/community/Repositories/Ubuntu#Authentication_Tab sembra indicare che c'è (come speravo) una chiave gpg pubblica / privata in corso (per mantenere sicuri i repository e i sistemi di pacchetto) dagli attacchi. Le informazioni nella posizione collegata non sono molto però. Non dice quasi nulla sull'aspetto della sicurezza del sistema di pacchetti. In ogni caso presumo che il link indichi già che la risposta alla domanda sarà "NO - almeno i pacchetti deb dal repository - sono anche protetti da ....". Spero che qualcuno abbia alcune intuizioni da utilizzare per una risposta qui.

(2) Questa domanda sembra riguardare anche l'argomento della "sicurezza" nel sistema di pacchetti Ubuntu. Quindi lo aggiungo qui in modo che la sua mano pubblicitaria se qualcuno si sforza di capire la domanda: perché le correzioni BADSIG proposte (su apt-get update) sono sicure?


1
debian.org/doc/debian-policy/… indica il supporto per i checksum per file SHA-1 e SHA256, tuttavia non so quale aptsia la politica di checksum.
cronite,

1
@chronitis grazie per il link lì. In effetti, gli hash SHA- * sono menzionati lì, devo ancora capire come appaiono nei pacchetti (che non ho ancora visto) o nel sistema dei pacchetti. Ne sai di più? Bene, l'indicazione è già un buon passo
umanità e la

Risposte:


21

Ubuntu pubblica un manifest firmato con una chiave RSA. Il manifest elenca i singoli Packagesfile di indice, ciascuno con hash MD5, SHA-1 e SHA-256. Ogni Packagesfile elenca i singoli .debfile con hash MD5, SHA-1 e SHA-256.

Per la verifica, apt usa il miglior hash che supporta e viene pubblicato dall'archivio da cui sta scaricando. Nel caso dell'archivio Ubuntu, questo è SHA-256.

Quindi l'intera catena di installazione di pacchetti sul tuo sistema Ubuntu è protetta da RSA e SHA-256.

La protezione MD5 che esiste in dpkg è davvero utile solo per corruzione accidentale e non è necessaria per proteggere il percorso di installazione.

Potresti essere interessato al debsumspacchetto, ma poiché utilizza MD5s, è anche utile solo per verificare la corruzione accidentale.

Se desideri verificare la presenza di modifiche al sistema dannoso, questi non sono gli strumenti appropriati per te. Sarà necessario portare il sistema offline e verificare se è presente un record precedente, i file del pacchetto originale o hash sicuri generati da questi.

Si noti che poiché una modifica dannosa eseguita correttamente potrebbe essere semplicemente il downgrade di un pacchetto a quello precedente a un aggiornamento di sicurezza, la verifica che tutti i file del pacchetto installati corrispondano ai loro originali potrebbe non essere sufficiente.


1
Ho acquisito una visione più chiara. Dove hai preso tutte queste informazioni, che ho una tale difficoltà a trovare? Hai dei documenti / link che hai usato? Inoltre apprezzo la menzione del "pericolo di declassamento" che lei ha citato, quindi non capisco ancora quanto questo possa essere sfruttato in modo estremo. Grande! grazie
umanità e

Non credo che il formato del repository apt sia correttamente specificato o documentato ovunque. Questo è male, ma è così. La migliore (e per quanto ne so) la vera documentazione è la fonte. Conosco i dettagli perché ho lavorato alla fonte. D'altra parte, il formato dpkg è molto ben specificato nella politica Debian. Descrive cosa succede dopo che i pacchetti finiscono sul tuo sistema, ma non come ci arrivano. L'ultima parte è fatta da apt.
Robie Basak l'

Rischio di downgrade: questo è un accantonamento e non è in realtà direttamente collegato alla domanda originale. Se l'exploit X viene scoperto nella versione A, si ottiene un aggiornamento di sicurezza alla versione B, in cui la vulnerabilità è stata risolta. Se un attaccante può sfruttare X nella versione A, allora sei al sicuro, dato che hai eseguito l'upgrade a B. Ma se l'attaccante può anche eseguire il downgrade a A, allora sei di nuovo vulnerabile. Non lo noterai anche se tutti gli hash sicuri corrispondono ai pacchetti che hai installato, poiché il database dei pacchetti dirà che dovresti avere A installato e non B.
Robie Basak,

2
@RobieBasak "Non credo che il formato del repository apt sia correttamente specificato o documentato ovunque." Ovviamente questo non è vero. Devi solo cercarlo. Debian Wiki: RepositoryFormat
gertvdijk l'

6

Volevo che fosse un commento, ma non potevo inserirlo nella scatola, quindi lo inserisco qui.

Sì, md5 è stato rotto in modo crittografico, ma ciò non significa che sia un cattivo algoritmo di hashing per scopi generici. Modificare un file in modo che abbia lo stesso hash è incredibilmente difficile e farlo con un particolare cambiamento dannoso è quasi impossibile. Guardando l'esempio a cui hai fatto riferimento, ( Predicting The Winner ) vedi questo:

"I documenti sono stati prima preparati con cura come documenti PDF validi, con un oggetto immagine nascosto incorporato, contenente una quantità sufficiente di bit casuali. Quindi, secondo la struttura a diamante mostrata sopra, sono state calcolate undici collisioni con prefisso scelto e collocate all'interno del nascosto oggetti immagine esattamente nei punti giusti. In questo modo i dodici documenti sono stati trasformati in una multi-collisione MD5 ".

Ciò che è stato fatto è stato riempire i file con dati casuali per far combaciare gli hash. La tecnologia non è quasi in grado di aggiungere un particolare codice dannoso a un file e di allineare gli hash senza romperlo o rendere evidente che il file è stato modificato (non so se apt lo faccia, ma molti hash di file sono accompagnato dalle dimensioni dei file per aumentare la difficoltà di una collisione hash non rilevabile).


3
grazie per la risposta. Penso che sia una buona risposta, nel senso che dà più luce a tutto lo sfondo :) Sfortunatamente "Stack ... Ask Ubuntu" a volte è difficile con "rispondi rigorosamente solo alla domanda" e quindi è grandioso che tu abbia preso coraggio per approfondire l'argomento.
umanità e

I file PDf preparati hanno dati casuali e sono solo 104kb con tutto questo sforzo. Perché diresti che è impossibile allora? Devono esserci tonnellate di file nei pacchetti deb> 200kb dove deve essere possibile fare una cosa del genere. Non mi sento così sicuro dopo aver visto la prova del concetto, che mi ha stupito e scioccato
umanità e

Ci sono molti posti nei file legittimi in cui un cambiamento sottile non sembrerebbe strano, ad esempio piccole differenze di spazio bianco in un file di testo. Hai solo bisogno di trovare circa 128 di questi posti per avere un ambito sufficiente per creare un file dannoso che sia legittimo e corrisponda al tuo MD5 di destinazione desiderato. Non sono sicuro però che questo particolare attacco possa essere applicato a questa situazione.
Robie Basak,

@RobieBasak, hai frainteso l'attacco. Non puoi semplicemente cambiare 128 byte in un file e conservare md5sum. Devi inserire una parte di quelli che altrimenti sembrano due insiemi di dati casuali in due copie di un file e avranno lo stesso md5sum l'uno dell'altro, nonostante il fatto che i due blocchi di dati "casuali" siano diversi.
psusi,

1

md5 non è stato "rotto". Ciò che hanno scoperto è stato un modo per creare con cura un messaggio originale e un messaggio modificato con lo stesso hash. Non è possibile prendere un messaggio originale non appositamente creato allo scopo di manomettere (il file corretto) e modificarlo in modo da preservare il suo md5sum.


ok. Ma quale sarebbe il buon modo per fare riferimento allo stato attuale della sicurezza MD5 ora, se non "rotto"? Posso capire cosa dici e ti ringrazio per averlo sottolineato. Mi chiedo ancora come valutare l'attuale sicurezza di MD5 ecc.
umanità e

@humanityANDpeace, "semplicemente bene".
psusi,

Mi piace l'atteggiamento ottimista. Dopotutto ero ancora stupito dalla prova del concetto. Grazie!
umanità e

1
"Gli esperti di Crypto considerano MD5 rotto. Pertanto, dovrebbe essere considerato rotto." non è così che funziona il mondo @RobieBasak Come cripto entusiasta (non posso definirmi un "esperto" ma ho dovuto scavare qualche anno fa) da solo non direi che MD5 è rotto. Solo che esiste un caso interessante che merita di essere verificato, ma sembra atm teorico. Ma non romperà la confezione di Ubuntu;) Torna a 0 psusi;)
Rinzwind

1
@jackweirdy, in realtà, c'è, ed è per questo che non l'hanno fatto. Il loro metodo si basa su entrambi i set di dati con proprietà molto specifiche. È molto simile a una coppia di chiavi pubblica. Puoi generare una coppia di chiavi che si abbinano tra loro, ma dato solo uno, non puoi capire l'altro.
psusi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.