Come puoi sapere cosa è distribuito con il tuo Linux

4

Sono curioso, in teoria, come si può sapere se per esempio il kernel distribuito con Ubuntu Linux è davvero quello che è su link e non qualche kernel modificato che contiene codice di tracciamento ecc ...

Ho citato Kernel solo come esempio. La vera domanda è, puoi essere sicuro che il software open source distribuito è davvero quello che ti aspetti che sia?

    
posta umpirsky 22.10.2013 - 20:38
fonte

3 risposte

6

I'm curious, in theory, how can one know if for example kernel that is distributed with Ubuntu Linux is really what is on https://github.com/torvalds/linux and not some modified kernel which contains tracking code etc...

In realtà, ciò che è distribuito con la distribuzione di solito non è ciò che è distribuito tramite l'albero git di torvald. La tua distribuzione Linux non è probabilmente un kernel vaniglia.

La ragione di ciò è che i distributori di solito risolvono il backport che può avere un impatto sui loro clienti da varie fonti. In Fedora, ad esempio (questi esempi sono stati scelti esclusivamente perché ho esperienza recente nella compilazione personalizzata di questi pacchetti):

  • Il kernel (attualmente 3.11.4-201.fc19.x86_64 al momento della scrittura 'contiene un numero di patch per le correzioni v4l, iommu, drm-intel-nex, iwl (intel wireless) e così via.
  • Grub2 contiene un numero di patch per risolvere vari problemi (di rottura) con la sua build e patch per far funzionare le build EFI.

Su Fedora (e altri sistemi basati su yum) yumdownloader --source kernel tirerà verso il basso l'RPM del kernel sorgente - aprilo e troverai tutto ciò che è stato usato per compilare i pacchetti del kernel.

Quindi, no, il tuo Linux (e anche i tuoi pacchetti) potrebbero non essere pacchetti di vanilla vendor. Ora, il prossimo:

The real question is, can you be sure that distributed open source software is really what you expect it to be?

Bene, il punto di cui sopra è che il contenuto del database del pacchetto potrebbe non essere quello che ci si aspetta che siano, ma la domanda è e potrebbe contenere contenuti dannosi? .

La risposta è che c'è poco da dire come utente finale a meno che non si ispezioni l'origine e si ricostruisca il pacchetto da quello.

Tuttavia , la maggior parte dei processi di invio dei pacchetti comporta un piccolo rigore. Di solito, non puoi semplicemente presentarti e diventare un manutentore di un pacchetto popolare. Dovresti essere conosciuto per i contributi, approvato da un membro dello staff / membro del comitato / qualunque sia ciò che ti dà i diritti di spingere i pacchetti.

Riesco a vedere che questo è un possibile vettore di attacco in un software oscuro, ma i pacchetti principali penso che sia sufficientemente probabile che un attacco possa essere rilevato alla fine. La maggior parte dei pacchetti sono costruiti dalla sorgente e ricevono controlli accurati a causa di bug, problemi degli utenti e così via. Lo sviluppo continua e i pacchetti vengono ricostruiti. Le patch potrebbero fallire. Qualcuno, da qualche parte, probabilmente noterà una stranezza, in pratica.

Su questa base, penso che tu debba prendere una decisione basata sul rischio. È ciò che intendi proteggere così prezioso che credi che avversari altamente capaci e persistenti provino a fare backdoor di un pacchetto in una distribuzione Linux per arrivare a te? Se è così, vai avanti e costruisci la tua distribuzione (non c'è ragione per cui non puoi rubare i pacchetti di un distributore esistente e semplicemente controlla attentamente / compila il tuo, a proposito: questa è la bellezza dell'open source).

Altrimenti, vorrei (personalmente) accettare il rischio esterno.

    
risposta data 22.10.2013 - 21:38
fonte
2

Nella mia esperienza l'unico modo per essere certi che un particolare modulo non sia incorporato nel kernel o un modulo rootato non caricato in fase di runtime sarebbe costruire il kernel da solo. Un lancio a Gentoo, dove sei responsabile del download delle tue fonti e della creazione di ogni pacchetto sul sistema. Se scarichi Ubuntu, Kali, Backtrack o qualche altro sistema pre-costruito in cui non eri quello che ha scaricato i sorgenti del kernel, il make, make config, etc ... ha deciso quali elementi sarebbero stati compilati e caricati come moduli vs .integrato nel kernel, quindi sostanzialmente non credo che ci si possa fidare del sistema.

    
risposta data 22.10.2013 - 20:53
fonte
2

No, non puoi in realtà. Confidate che i repository siano sicuri e che le persone che stanno commettendo lo facciano correttamente. Tuttavia qualsiasi cosa scaricata dai repository può essere verificata in una certa misura. Esiste un processo di revisione tra pari per quasi tutte le parti del repository.

Se vuoi essere sicuro, l'unica cosa che puoi fare è compilare tutto da zero, come fatto in Linux da zero . Ma anche in questo caso per assicurarti che non ci siano backdoor dovrai rivedere tutto il codice da solo.

Alla fine è (come sempre) un compromesso tra usabilità, facilità d'uso e sicurezza che in realtà le persone non stanno raggruppando le back door.

    
risposta data 22.10.2013 - 20:55
fonte

Leggi altre domande sui tag