logo debian

Debian continúa con las compilaciones reproducibles

Un desarrollador de Debian explica por qué las compilaciones reproducibles son importantes y cómo la CIA (la agencia de inteligencia estadounidense) ha intentado en el pasado realizar ataques que sobrepasarían todas las barreras de protección conocidas hasta ahora.

El pasado mes de agosto se produjo una charla en el Chaos Communication Camp donde Lunar, un desarrollador de Debian y Tor, hizo una presentación acerca del trabajo que está haciendo sobre las compilaciones reproducibles.

compilaciones reproducibles 1
Modelo actual. Fuente: presentación de Lunar en la CCC

Básicamente, el software tiene dos caras: una es el código fuente que pueden leer las personas pero que no se puede ejecutar en un ordenador. La otra es el binario, que pueden leer las máquinas pero no las personas. La conversión se realiza mediante un proceso llamado compilación (build en inglés).

compilaciones reproducibles 2
El problema. Fuente: presentación de Lunar en la CCC

Y aquí es donde está el problema en el modelo tradicional. El software libre nos permite analizar el código fuente para verificar que hace lo que esperamos que haga, sin comportamientos extraños ni acciones maliciosas. Una vez seguros de ellos, se compila y el mismo modelo nos da la libertad de ejecutar ese software como queramos. Pero ¿cómo podemos probar que, efectivamente, esa compilación proviene de ese código y no se trata de una modificación con fines maliciosos?

De momento todo se sostiene por la confianza en los canales de distribución de software y las firmas de los paquetes. El problema viene cuando existen formas de realizar modificaciones en el programa compilado. Lunar expuso que los desarrolladores podrían ser víctimas y no darse cuenta de ello, de que sus entornos de compilado se puedan ver comprometidos.

Durante una charla que hicieron Mike Perry y Seth Schoen en diciembre pasado en el 31C3, mostraron cómo un fallo en el kernel podría modificar (sin necesidad de tocar nada en el disco) el código fuente mientras estaba siendo compilado. De esa forma, los canales seguros y de confianza podrían estar distribuyendo software manipulado sin ni siquiera saberlo.

Probablemente más de uno se diga que el hecho de que todo esto ocurra es improbable y que un ataque de estas características es sólo una hipótesis. Para demostrar que no es así, Lunar presentó este documento:

compilaciones reproducibles 3
Documento de la filtración de Snowden. Fuente: presentación de Lunar en la CCC

Según este documento proveniente de la filtración de Snowden, la CIA, en el pasado ya ha marcado binarios y ha introducido troyanos en binarios compilados a partir del uso de un compilador modificado. En este documento se habla de XCode, el entorno de desarrollo empleado en MacOS X e iOS donde se desvela que tenían una versión modificada lista para ser implantada en los sistemas de los desarrolladores. De esa forma, aunque el código fuente esté limpio y confiemos en el desarrollador o la fuente de distribución, a la hora de compilarlo, el resultado será un binario manipulado.

Así que para protegerse de este tipo de ataques han nacido las compilaciones reproducibles que permiten comprobar si el binario que estamos ejecutando se corresponde con el código fuente que podemos analizar.

La presentación completa (con detalles técnicos incluidos) está disponible aquí.