Builds reproducibles
¿Qué es Builds reproducibles?
Builds reproduciblesPrácticas de build que garantizan que compilar el mismo código fuente con las mismas instrucciones produzca un artefacto idéntico bit a bit, sin importar cuándo o dónde se construya.
Los builds reproducibles eliminan el no determinismo de modo que cualquiera con el código fuente y la receta pueda recrear el mismo binario y compararlo byte a byte con un release. Esto requiere controlar timestamps, rutas de build, variables de entorno, aleatoriedad, locale, orden de ficheros y opciones del compilador. El proyecto Reproducible Builds, Debian, NixOS, Arch Linux, Tor, F-Droid y Bazel han invertido fuertemente en este enfoque. Combinados con procedencia firmada, permiten a rebuilders independientes verificar que un binario procede realmente de la fuente publicada, ayudando a detectar el compromiso de un solo builder (como en SolarWinds). Son requisito para alcanzar los niveles SLSA más altos y sustentan la confianza en software open source crítico.
● Ejemplos
- 01
Rebuild independiente de una release de Tor Browser que coincide byte a byte con el binario oficial.
- 02
Servicio basado en Bazel que produce el mismo digest SHA-256 desde el mismo commit en cualquier worker.
● Preguntas frecuentes
¿Qué es Builds reproducibles?
Prácticas de build que garantizan que compilar el mismo código fuente con las mismas instrucciones produzca un artefacto idéntico bit a bit, sin importar cuándo o dónde se construya. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa Builds reproducibles?
Prácticas de build que garantizan que compilar el mismo código fuente con las mismas instrucciones produzca un artefacto idéntico bit a bit, sin importar cuándo o dónde se construya.
¿Cómo funciona Builds reproducibles?
Los builds reproducibles eliminan el no determinismo de modo que cualquiera con el código fuente y la receta pueda recrear el mismo binario y compararlo byte a byte con un release. Esto requiere controlar timestamps, rutas de build, variables de entorno, aleatoriedad, locale, orden de ficheros y opciones del compilador. El proyecto Reproducible Builds, Debian, NixOS, Arch Linux, Tor, F-Droid y Bazel han invertido fuertemente en este enfoque. Combinados con procedencia firmada, permiten a rebuilders independientes verificar que un binario procede realmente de la fuente publicada, ayudando a detectar el compromiso de un solo builder (como en SolarWinds). Son requisito para alcanzar los niveles SLSA más altos y sustentan la confianza en software open source crítico.
¿Cómo defenderse de Builds reproducibles?
Las defensas contra Builds reproducibles combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Builds reproducibles?
Nombres alternativos comunes: Builds deterministas, Builds bit a bit.
● Términos relacionados
- appsec№ 1053
SLSA Framework
Supply-chain Levels for Software Artifacts: conjunto escalonado de requisitos publicado por OpenSSF que endurece progresivamente la forma de construir, firmar y verificar software frente a manipulaciones de la cadena de suministro.
- appsec№ 1069
Seguridad de la cadena de suministro de software
Disciplina que protege cada eslabón de la producción de software —fuente, dependencias, build, firma, distribución y despliegue— frente a manipulación, código malicioso y pérdida de integridad.
- appsec№ 870
Atestación de procedencia
Declaración firmada y verificable por máquina que describe cómo se produjo un artefacto de software —fuente, sistema de build, parámetros y dependencias— para que los consumidores confíen en su origen.
- appsec№ 305
Anclaje de dependencias
Práctica de declarar las dependencias de software en versiones exactas, a menudo junto con hashes criptográficos, para que las builds consuman siempre los mismos artefactos y resistan manipulación de la cadena de suministro.
- appsec№ 166
Seguridad de CI/CD
Conjunto de controles que protegen los pipelines de integración y entrega continua frente a compromisos, inyección de código, fuga de secretos y despliegues no autorizados.
- appsec№ 784
Firma de paquetes
Aplicación de una firma criptográfica a un paquete de software para que los consumidores verifiquen la identidad del publicador y que el artefacto no se ha alterado tras su publicación.