Como posso confirmar que os binários no meu Ubuntu são do código-fonte em que deveriam ser?

25

Como 99% dos usuários, eu instalo o Ubuntu a partir de binários prontos.

Como posso verificar se esses binários são de fato do código fonte original do Ubuntu?

Seria bom verificar se a NSA / alguém não colaborou com o Ubuntu ou o Linode (meu provedor de VPS) para mexer nos binários. Se pudéssemos verificar os binários, seria improvável que eles tentassem isso em primeiro lugar, pois seria fácil chamá-los.

mark1111
fonte
Você pode dar uma olhada no código fonte, usando apt-get sourceou usá-lo para compilar seu próprio código. Veja esta pergunta: askubuntu.com/questions/28372/…
Wilf
4
Possivelmente útil: como verificar se os arquivos instalados no pacote correspondem aos originais? (Debian, mas deve ser perto o suficiente para ser aplicável a Ubuntu)
um CVn
@ MichaelKjörling eu estava procurando nossa versão dessa pergunta ...
Braiam
1
@Braiam Eu acho que, neste caso específico, o Debian / Ubuntu não faz muita diferença. O que faz a diferença é o objetivo das perguntas; o link acima visa principalmente detectar arquivos corrompidos em algum momento após a instalação, enquanto este parece ter o objetivo de detectar arquivos substituídos ou alterados com códigos maliciosos ou arquivos binários que não correspondem ao código-fonte pretendido. Problemas diferentes, motivo pelo qual eu marquei o link apenas como "possivelmente útil".
um CVn
3
Curiosamente, acho que até o Gentoo evita completamente esse problema: é preciso confiar nos arquivos de código-fonte baixados. Use assinaturas criptográficas tudo o que desejar; se você não pode confiar que o que é assinado é genuíno e o que é suposto ser, há pouco ou nada a ser realmente feito.
um CVn

Respostas:

36

Você pode baixar o código fonte e compilá-lo você mesmo. Mas espere - primeiro você deve verificar esse código fonte, porque se a Canonical colaborou com a NSA, provavelmente eles inseriram algum código em algum lugar para permitir um keylogger ou algo que possa ser ativado remotamente.

Tão...

  1. depois de baixar o código fonte,
  2. você tem que verificar todo o código,
  3. e depois compile-o!

Mas espere - você pode confiar no compilador ?

SPRBRN
fonte
15
"Você pode confiar no compilador?" É quando você sai pela tangente e lê a pergunta Como compilar o compilador C do zero, depois compila o Unix / Linux do zero (e respostas associadas).
um CVn
17
Mas você pode confiar no seu hardware? Talvez você também deva construir o seu computador a partir do zero, e é aí que você se depara com alguns problemas ... #
Thomas
E você pode confiar no hipervisor que está executando sua VM?
Fernando Correia
1
Suponho que não possa ser útil compilar a fonte em alguns compiladores semelhantes de autores diferentes e verificar a saída quanto a diferenças. Mas como você sabe que os autores não são realmente a mesma entidade sob aliases? Ou, mais provavelmente, e se todos esses compiladores tiverem um ancestral corrupto comum? E nada disso ajudaria o hardware a confiar em problemas de qualquer maneira.
Keen
6
Mas espere - você pode confiar que o askubuntu não está sendo filtrado ou completamente controlado pela NSA para evitar contar todas as áreas potencialmente comprometidas?
thez
9

Se você não está disposto a aceitar "porque o Ubuntu diz isso", não pode.

Fkraiem
fonte
2
Eu acrescentaria que você pode [tentar] verificar se os binários em seu sistema específico correspondem aos binários originais do Ubuntu comparando as somas de verificação. Obviamente, um rootkit adequado não seria facilmente detectável de dentro do sistema em nenhum caso.
Peteris
2
Isso só funciona se você confiar que os "binários originais do Ubuntu" não foram violados. Em outras palavras, se você aceitar que eles são bons porque o Ubuntu diz isso. ;)
fkraiem
5

O Ubuntu oferece meios convenientes para compilar um pacote em sua própria máquina. No entanto, não há como verificar se o executável em um pacote binário que você baixou foi obtido a partir desse código-fonte. O processo de assinatura usado pelo Ubuntu reduz substancialmente o risco de adulteração dos pacotes por terceiros, mas você ainda precisa confiar que nenhum código nocivo foi adicionado antes da compilação que não se reflete no código fonte para download.

A razão é que é tremendamente difícil obter exatamente os mesmos binários que existem nos pacotes compilados, pois eles dependem da versão precisa do compilador, de suas opções e provavelmente também existem alguns caminhos ou variáveis ​​de ambiente compiladas no binário. Portanto, você não será capaz de obter exatamente o mesmo binário ao se compilar, o que "verificaria" o binário baixado.

Na verdade, existe uma pequena comunidade de pesquisa em torno precisamente desse problema - como tornar a compilação reproduzível.

Dito isto, uma comparação manual de um binário baixado e um auto-compilado pode detectar código adicionado / modificado, portanto, seria arriscado para alguém que oferece binários e o código-fonte ocultar algo nos binários, pois isso pode ser detectado.

Mas também há o problema de confiar no compilador, como já mencionado ...

DCTLib
fonte
4

É um problema difícil criar exatamente os mesmos binários em duas máquinas diferentes. O projeto TOR faz isso como parte regular de sua construção. Há uma descrição de como eles fazem isso. O Debian e o Fedora parecem ter projetos que tornam isso possível para essas distribuições, mas eles estão nos estágios iniciais. Parece que não há nenhum trabalho feito no Ubuntu .

Para reproduzir um pacote binário do Ubuntu, você precisaria reproduzir o ambiente em que foi criado o mais próximo possível. Para começar, primeiro você precisa descobrir onde e como esses pacotes foram compilados. Não parece que essa informação seja fácil de encontrar.

Josef
fonte
Detalhes sobre o que específico?
1911 Josef
Ignore-me, confundido com um post diferente :)
Tim
0

Verificando com o MD5 do Ubuntu. Se o MD5 que você obtiver dos seus arquivos corresponder ao publicado pelo Ubuntu, ninguém alterou os binários entre eles.

YoMismo
fonte
Esta não é a pergunta do OP. Ele está preocupado com o código-fonte sendo distribuído pelo Ubuntu não sendo o mesmo que os binários sendo distribuídos pelo Ubuntu. Em outras palavras, eles dizem "esta é a fonte", mas a fonte da qual eles estão construindo os binários realmente possui algum código adicional introduzido pela NSA. Ele não está preocupado com o fato de os binários terem sido adulterados após a compilação.
John Chrysostom
O OP postou: "Como posso verificar se esses binários são de fato do código-fonte original do Ubuntu?" A resposta é para essa pergunta. O outro é ridículo, quem sabe se o kernel do Linux não foi adulterado por ninguém (NSA ou quem nunca?) Com facilidade, faça o download do código, leia-o e, quando estiver satisfeito, compile-o você mesmo. Fora isso, minha resposta é para a pergunta que copiei no início deste comentário.
YoMismo 14/07
Você não respondeu à pergunta que citou. O uso do MD5 apenas permite que ele verifique se os binários em seu computador correspondem aos binários no servidor. Eles NÃO permitem que ele verifique se os binários que ele baixou foram compilados a partir da fonte que o Ubuntu fornece. Agora, concordo que as perguntas dele são ridículas pela razão que você (e outras pessoas) declararam. Mas essa era a pergunta dele.
John Chrysostom
0

Esse é um trabalho difícil, acho que a confiança aqui é melhor do que esse trabalho complicado. Mas a pergunta você pode confiar?

Como o software de código aberto oferece muitas liberdades para os usuários alterarem o código, você não pode confiar em ninguém.

Vamos criar um cenário para esse fim, quero verificar se o meu Ubuntu == source code, espera Por que você não tenta comparar pacotes com a fonte deles?

  1. Crie um pacote binário para o Ubuntu a partir da fonte.
  2. comparou o pacote binário auto-construído com o publicado pela distribuição.
  3. Use o apt-get -b source para baixar o código-fonte.

Mas para mim, comparando bem, dou pequenos resultados diferentes devido a diferentes timestamps, ambientes, mas isso prova que não é do código-fonte!

nux
fonte