Come posso confermare che i binari nel mio Ubuntu provengono dal codice sorgente da cui dovrebbe provenire?


25

Come il 99% degli utenti, installo Ubuntu da file binari già pronti.

Come posso verificare che quei binari provengano effettivamente dal codice sorgente originale di Ubuntu?

Sarebbe bene verificare che NSA / qualcuno non abbia collaborato con Ubuntu o Linode (il mio provider VPS) per pasticciare con i binari. Se potessimo verificare i binari, è improbabile che provino anche questo in primo luogo in quanto sarebbe facile richiamarli.


Puoi dare un'occhiata al codice sorgente, usando apt-get sourceo usando quello per compilare il tuo. Vedi questa domanda: askubuntu.com/questions/28372/…
Wilf

4
Forse utile: come verificare che i file installati nel pacchetto corrispondano agli originali? (Debian, ma dovrebbe essere abbastanza vicino per essere applicabile a Ubuntu)
un CVn

@ MichaelKjörling Stavo cercando la nostra versione di quella domanda ...
Braiam

1
@Braiam Penso che in questo caso particolare Debian / Ubuntu non faccia molta differenza. Ciò che fa la differenza è lo scopo delle domande; quello collegato sopra mira principalmente a rilevare i file corrotti a un certo punto dopo l'installazione, mentre questo sembra mirare a rilevare file sostituiti o alterati in modo dannoso o file binari che non corrispondono al presunto codice sorgente. Problemi diversi, motivo per cui ho taggato il link solo "forse utile".
un CVn

3
È interessante notare che penso che anche Gentoo eviti completamente questo problema: lì, devi fidarti degli archivi di codice sorgente scaricati. Usa le firme crittografiche tutto ciò che vuoi; se non puoi fidarti del fatto che ciò che è firmato è autentico e che è quello che si presume sia, non c'è davvero nulla da fare.
un CVn

Risposte:


36

Puoi scaricare il codice sorgente e compilarlo tu stesso. Ma aspetta: prima devi controllare quel codice sorgente, perché se Canonical ha collaborato con l'NSA, probabilmente hanno inserito un codice da qualche parte per consentire un keylogger o qualcosa che può essere attivato da remoto.

Così...

  1. dopo aver scaricato il codice sorgente,
  2. devi controllare tutto il codice,
  3. e quindi compilarlo!

Ma aspetta: puoi fidarti del compilatore ?


15
"Puoi fidarti del compilatore?" Questo è quando vai su una tangente e leggi la domanda Come compilare il compilatore C da zero, quindi compilare Unix / Linux da zero (e le risposte associate).
un CVn

17
Ma puoi fidarti del tuo hardware? Forse dovresti anche costruire il tuo computer da zero, ed è qui che ti imbatti in alcuni problemi ...
Thomas

E puoi fidarti dell'hypervisor che esegue la tua VM?
Fernando Correia,

1
Suppongo che non ci sia alcun motivo per compilare la fonte su alcuni compilatori simili di autori diversi e controllare l'output per le differenze. Ma come fai a sapere che gli autori non sono realmente la stessa entità sotto alias? O più probabilmente, cosa succede se tutti quei compilatori hanno un antenato corrotto comune? E niente di tutto ciò aiuterebbe comunque i problemi di fiducia dell'hardware.
Appassionato del

6
Ma aspetta: puoi fidarti che askubuntu non viene filtrato o completamente controllato dalla NSA per evitare di dirti tutte le aree potenzialmente compromesse?
TheZ

9

Se non sei disposto ad accettare "perché Ubuntu lo dice", allora non puoi.


2
Aggiungerei che puoi [provare a] verificare se i file binari sul tuo particolare sistema corrispondono ai file binari originali di Ubuntu confrontando i checksum. Ovviamente, un rootkit adeguato non sarebbe facilmente rilevabile all'interno del sistema in ogni caso.
Peteris,

2
Funziona solo se ritieni che i "binari Ubuntu originali" non siano stati manomessi. In altre parole, se accetti che sono buoni perché Ubuntu lo dice. ;)
fkraiem,

5

Ubuntu offre comodi mezzi per compilare un pacchetto sul proprio computer. Tuttavia, non è possibile verificare che l'eseguibile in un pacchetto binario scaricato sia stato ottenuto da quel codice sorgente. Il processo di firma utilizzato da Ubuntu riduce sostanzialmente il rischio di manomissione da parte di terzi dei pacchetti, ma è comunque necessario fidarsi che prima della compilazione non sia stato aggiunto alcun codice dannoso che non si riflette nel codice sorgente scaricabile.

Il motivo è che è tremendamente difficile ottenere esattamente gli stessi binari presenti nei pacchetti compilati, poiché questi dipendono dalla versione precisa del compilatore, dalle sue opzioni e probabilmente ci sono anche alcuni percorsi o variabili d'ambiente compilati nel binario. Quindi non sarai in grado di ottenere esattamente lo stesso binario durante la compilazione, che "verificherebbe" il file binario scaricato.

In realtà esiste una piccola comunità di ricerca proprio attorno a questo problema: come rendere riproducibile la compilazione.

Detto questo, un confronto manuale tra un file binario scaricato e uno autocompilato può rilevare il codice aggiunto / modificato, quindi sarebbe rischioso per qualcuno che offre binari e il codice sorgente nascondere qualcosa nei binari, in quanto ciò può essere rilevato.

Ma poi c'è anche il problema di fidarsi del compilatore, come già accennato ...


4

È difficile creare esattamente gli stessi binari su due macchine diverse. Il progetto TOR fa questo come parte regolare della loro costruzione. C'è una descrizione di come lo fanno. Debian e Fedora sembrano avere progetti che lo rendono possibile per queste distribuzioni, ma sono nelle prime fasi. Non sembra che ci sia alcun lavoro svolto in Ubuntu .

Per riprodurre un pacchetto binario Ubuntu è necessario riprodurre l'ambiente nel quale è stato creato il più vicino possibile. Per iniziare, devi prima scoprire dove e come sono stati compilati questi pacchetti. Non sembra che le informazioni siano facili da trovare.


Dettagli su quale specifico?
Josef,

Ignorami, confuso con un altro post :)
Tim

0

Verifica con MD5 di Ubuntu. Se l'MD5 che ottieni dai tuoi file corrisponde a quello pubblicato da Ubuntu, nessuno ha manomesso i binari tra di essi.


Questa non è una domanda di OP. È preoccupato che il codice sorgente distribuito da Ubuntu non sia lo stesso dei binari distribuiti da Ubuntu. In altre parole, dicono "questa è la fonte", ma la fonte da cui stanno costruendo i binari ha in realtà del codice aggiuntivo introdotto dalla NSA. Non è preoccupato che i binari siano stati manomessi dopo la compilazione.
John Chrysostom,

L'OP ha pubblicato: "Come posso verificare che quei binari provengano effettivamente dal codice sorgente originale di Ubuntu?" La risposta è per quella domanda. L'altro è ridicolo, chi può sapere se il kernel Linux non è stato manomesso da nessuno (NSA o chi mai?) Facile, scarica il codice, leggilo e una volta che sei felice compilarlo tu stesso. A parte questo, la mia risposta è per la domanda che ho copiato all'inizio di questo commento.
YoMismo,

Non hai risposto alla domanda che hai citato. L'uso di MD5 gli consente solo di verificare che i file binari sul suo computer corrispondano ai file binari sul server. NON gli consentono di verificare che i file binari scaricati siano stati compilati dalla fonte fornita da Ubuntu. Ora, sono d'accordo che le sue domande sono ridicole per il motivo che tu (e altri) avete affermato. Ma quella era la sua domanda.
John Chrysostom,

0

Questo è un duro lavoro, penso che la fiducia qui sia migliore di questo complicato lavoro. Ma la domanda ti puoi fidare?

Poiché il software open source offre molte libertà agli utenti di modificare il codice, non puoi fidarti di nessuno.

Facciamo uno scenario per questo scopo, voglio verificare che mio Ubuntu == source code, aspetta Perché non provi a confrontare i pacchetti con la loro fonte?

  1. Crea un pacchetto binario per Ubuntu dal sorgente.
  2. ha confrontato il pacchetto binario autocostruito con quello pubblicato dalla distribuzione.
  3. Usa apt-get -b source per scaricare il sorgente.

Ma per me il confronto bene ti dà risultati diversi minori a causa di diversi timestamp, ambienti, ma ciò dimostra che non proviene dal codice sorgente!

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.