¿Cómo puedo confirmar que los binarios en mi Ubuntu son del código fuente del que deberían ser?


25

Como el 99% de los usuarios, instalo Ubuntu desde binarios ya preparados.

¿Cómo puedo verificar que esos binarios son en realidad del código fuente original de Ubuntu?

Sería bueno verificar que NSA / alguien no ha colaborado con Ubuntu o Linode (mi proveedor de VPS) para meterse con los binarios. Si pudiéramos verificar los archivos binarios, tampoco sería probable que lo intentaran en primer lugar, ya que sería fácil llamarlos.


Puede echar un vistazo al código fuente, usarlo apt-get sourceo usarlo para compilar el suyo. Vea esta pregunta: askubuntu.com/questions/28372/…
Wilf

44
Posiblemente útil: ¿Cómo verificar que los archivos instalados en el paquete coincidan con los originales? (Debian, pero debe estar lo suficientemente cerca como para ser aplicable a Ubuntu)
un CVn

@ MichaelKjörling Estaba buscando nuestra versión de esa pregunta ...
Braiam

1
@Braiam Creo que en este caso particular, Debian / Ubuntu no hace mucha diferencia. Lo que marca la diferencia es el objetivo de las preguntas; el enlace anterior tiene como objetivo principal detectar archivos corruptos en algún momento después de la instalación, mientras que este parece detectar archivos reemplazados o alterados de manera maliciosa, o archivos binarios que no coinciden con el supuesto código fuente. Diferentes problemas, por lo que etiqueté el enlace como "posiblemente útil".
un CVn

3
Curiosamente, creo que incluso Gentoo evita por completo este problema: allí, debe confiar en los archivos de código fuente descargados. Use firmas criptográficas todo lo que quiera; Si no puede confiar en que lo que está firmado es genuino y que es lo que se supone que es, realmente hay poco o nada que hacer.
un CVn

Respuestas:


36

Puede descargar el código fuente y compilarlo usted mismo. Pero espere, primero debe verificar ese código fuente, porque si Canonical colaboró ​​con la NSA, probablemente hayan ingresado algún código en algún lugar para permitir un keylogger o algo que se pueda activar de forma remota.

Asi que...

  1. después de descargar el código fuente,
  2. tienes que verificar todo el código,
  3. y luego compilarlo!

Pero espera, ¿puedes confiar en el compilador ?


15
"¿Puedes confiar en el compilador?" Ahí es cuando se sale por la tangente y lee la pregunta Cómo compilar el compilador C desde cero, luego compila Unix / Linux desde cero (y las respuestas asociadas).
un CVn

17
¿Pero puedes confiar en tu hardware? Quizás también debería construir su computadora desde cero, y ahí es donde se encuentra con algunos problemas ...
Thomas

¿Y puede confiar en el hipervisor que ejecuta su VM?
Fernando Correia

1
No creo que pueda ser útil compilar la fuente en algunos compiladores similares de diferentes autores y verificar la salida en busca de diferencias. Pero, ¿cómo sabes que los autores no son realmente la misma entidad bajo alias? O, más probablemente, ¿qué pasa si todos esos compiladores tienen un ancestro corrupto común? Y nada de eso ayudaría a los problemas de confianza del hardware de todos modos.
Keen

66
Pero espere: ¿puede confiar en que askubuntu no está siendo filtrado o controlado completamente por la NSA para evitar decirle todas las áreas potencialmente comprometidas?
TheZ

9

Si no estás dispuesto a aceptar "porque Ubuntu lo dice", entonces no puedes.


2
Añadiría que puede [intentar] verificar si los binarios en su sistema particular coinciden con los binarios originales de Ubuntu comparando sumas de verificación. Por supuesto, un rootkit adecuado no sería fácilmente detectable desde el sistema en ningún caso.
Peteris

2
Eso solo funciona si confía en que los "binarios originales de Ubuntu" no fueron alterados. En otras palabras, si acepta que son buenas porque Ubuntu lo dice. ;)
fkraiem

5

Ubuntu ofrece medios convenientes para compilar un paquete en su propia máquina. Sin embargo, no hay forma de verificar que el ejecutable en un paquete binario que descargó se haya obtenido de ese código fuente. El proceso de firma utilizado por Ubuntu reduce el riesgo de que terceros manipulen sustancialmente los paquetes, pero aún debe confiar en que no se ha agregado ningún código dañino antes de la compilación que no se refleja en el código fuente descargable.

La razón es que es tremendamente difícil obtener exactamente los mismos binarios que hay en los paquetes compilados, ya que dependen de la versión precisa del compilador, sus opciones y, probablemente, también hay algunas rutas o variables de entorno compiladas en el binario. Por lo tanto, no podrá obtener exactamente el mismo binario al compilarse, lo que "verificaría" el binario descargado.

En realidad, existe una pequeña comunidad de investigación en torno a este problema: cómo hacer que la compilación sea reproducible.

Dicho esto, una comparación manual de un archivo binario descargado y uno autocompilado puede detectar el código agregado / modificado, por lo que sería riesgoso para alguien que ofrece archivos binarios y el código fuente ocultar algo en los archivos binarios, ya que esto se puede detectar.

Pero también está el problema de confiar en el compilador, como ya se mencionó ...


4

Es un problema difícil crear exactamente los mismos binarios en dos máquinas diferentes. El proyecto TOR hace esto como parte regular de su construcción. Hay una descripción de cómo lo hacen. Debian y Fedora parecen tener proyectos que hacen esto posible para estas distribuciones, pero están en las primeras etapas. No parece que se haya realizado ningún trabajo en Ubuntu .

Para reproducir un paquete binario de Ubuntu, necesitaría reproducir el entorno en el que fue creado lo más cerca posible. Para comenzar con eso, primero debe averiguar dónde y cómo se compilaron estos paquetes. No parece que esa información sea fácil de encontrar.


Detalles sobre qué específico?
Josef

Ignórame, confundido con una publicación diferente :)
Tim

0

Comprobando con el MD5 de Ubuntu. Si el MD5 que obtiene de sus archivos coincide con el publicado por Ubuntu, nadie ha alterado los archivos binarios intermedios.


Esta no es la pregunta de OP. Le preocupa que el código fuente que distribuye Ubuntu no sea el mismo que los binarios que distribuye Ubuntu. En otras palabras, dicen "esta es la fuente", pero la fuente de la que están construyendo los binarios en realidad tiene un código adicional introducido por la NSA. No le preocupa que los binarios hayan sido manipulados después de la construcción.
John Chrysostom

El OP publicó: "¿Cómo puedo verificar que esos binarios son en realidad del código fuente original de Ubuntu?" La respuesta es para esa pregunta. El otro es ridículo, ¿quién puede saber si el kernel de Linux no ha sido manipulado por alguien (NSA o quién?) Fácil, descargue el código, léalo y una vez que esté satisfecho compílelo usted mismo. Aparte de eso, mi respuesta es para la pregunta que he copiado al comienzo de este comentario.
YoMismo

No ha respondido la pregunta que citó. Usar el MD5 solo le permite verificar que los archivos binarios de su computadora coincidan con los archivos binarios del servidor. NO le permiten verificar que los binarios que descargó fueron compilados de la fuente que proporciona Ubuntu. Ahora, estoy de acuerdo en que sus preguntas son ridículas por la razón que usted (y otros) han declarado. Pero esa era su pregunta.
John Chrysostom

0

Ese es un trabajo difícil, creo que confiar aquí es mejor que este trabajo complicado. Pero la pregunta ¿Puedes confiar?

Debido a que el software de código abierto ofrece muchas libertades para que los usuarios cambien el código, no puede confiar en nadie.

Hagamos un escenario para este propósito, quiero comprobar que mi Ubuntu == source code, espera ¿Por qué no intentas comparar paquetes con su fuente?

  1. Construya un paquete binario para Ubuntu desde la fuente.
  2. comparó el paquete binario autoconstruido con el publicado por la distribución.
  3. Use apt-get -b source para descargar la fuente.

Pero para mí, si comparo bien, le daré resultados diferentes menores debido a diferentes marcas de tiempo, entornos, ¡pero eso prueba que no es del código fuente!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.