Verificando la seguridad de tu descarga

Cuando descargas una copia de CoyIM, ¿cómo sabes que nadie la ha modificado en el proceso? Dado que CoyIM es de código abierto, en teoría, puedes leer el código fuente completo y asegurarte de que este no haga nada malicioso. Pero ¿cómo te aseguras de que las descargas que ofrecemos se han creado a partir del mismo código fuente que estás leyendo? ¿Y si alguien ha infectado los servidores de builds? Este tipo de “ataques a la cadena de suministro” se están volviendo más comunes. Vimos algunos de ellos durante 2021 con el ataque Solarwinds, por ejemplo. Entonces, ¿cómo se protege CoyIM contra estos problemas?

Comencemos con lo más fácil. La integridad de los archivos que descargas se puede comparar con una suma de verificación (checksum). Para cada archivo, generaremos un hash utilizando el algoritmo SHA-256, y luego publicaremos esa suma de verificación. Podrás encontrar la suma de verificación en la página de descargas del sitio web, y también podrás encontrarla en la página de lanzamientos de Github. Aquí, cada archivo descargable tendrá otro archivo, cuyo nombre termina en _checksum que contiene este valor hash.

Si tienes conocimientos técnicos, también puedes ver el proceso de compilación que usamos para crear estas versiones. Sus definiciones están incluidas en el mismo código fuente que usamos para el software. Usamos Github Actions para todas las compilaciones, excepto para la versión para macOS, donde usamos Travis. En el repositorio de código fuente, puedes encontrar .travis.yml y archivos / directorios .github, que proporcionan las instrucciones sobre cómo se realizarán las compilaciones. Ahora, esto obviamente no es suficiente. Tal vez modificamos los releases después de que finalizó la compilación. O tal vez Github o Travis hicieron algo perjudicial a los builds. Hay muchos lugares donde las cosas podrían salir mal, y con seguridad queremos reducir estos riesgos tanto como sea posible. No queremos tener que confiar en Github ni en nadie más.

Si has estado rodeado de personas expertas en seguridad durante algún tiempo, es posible que te preguntes si estamos utilizando firmas digitales para proteger nuestras descargas. La respuesta es no, no de la manera tradicional. Porque todavía estaríamos en la misma situación en la que Github podría hacer algo malo y tendrías que confiar en la persona que firma. Entonces, ¿cuál es la solución para este problema? Es algo que se llama construcciones reproducibles.

La idea básica es que cada vez que se compila el mismo código fuente, se obtiene exactamente el mismo binario. Pero, ¿cómo es eso útil? Básicamente, cuando creamos una versión de lanzamiento, Github Actions la compilará usando el modo reproducible. Entonces publicará un archivo que termine en _build_info. Actualmente, la compilación de Linux tendrá el nombre coyim_linux_amd64_build_info. Este archivo contiene información sobre qué versión se creó y el hash del archivo resultante. Hasta ahora, eso realmente no te da nada, ya que en realidad es lo mismo que un hash. Pero si te pregunts si se puede confiar en la compilación, puedes ejecutar la construcción reproducible en tu propia máquina desde el mismo commit para luego comparar el archivo build_info que te brindará la información de compilación que se publicará como parte del lanzamiento. Si difieren, tendrás pruebas de que está sucediendo algo malo. Si son iguales, tendrás una fuerte indicación de que se puede confiar en el release. Y lo que es aún mejor, una vez que haya hecho esto, puedes firmar tu build_info y enviar esta firma al proyecto. El proyecto CoyIM puede publicar esta firma y otras recibidas. Y luego, cuando una nueva persona quiera descargar la versión, podrá descargar estas firmas y verificarlas. contra la descarga también. Al seguir este proceso, distribuyes la confianza. No tienes que confiar en ninguna persona, pero si tienes suficientes firmas, eso puede darte cierta certeza de que realmente se puede confiar en la compilación. Por el momento, CoyIM sólo admite construcciones reproducibles para Linux, pero esto es algo que estamos planeando mejorar en el futuro.

Todos estos problemas sólo son aplicables si descargas CoyIM desde nuestro sitio web o desde Github. Pero mucha gente instalará CoyIM desde su gestor de paquetes. Si este es el caso, simplemente puedes confiar en estos. En general, los gestores de paquetes se encargan de cosas como las sumas de verificación y las firmas. Y sí, todavía existe la posibilidad de que seas atacado desde ahí, pero dado que los gestores de paquetes se utilizan para casi todo lo instalado en tu computadora, no tienes oportunidad de protegerte contra ese tipo de ataque.