Builds reproductibles
Qu'est-ce que Builds reproductibles ?
Builds reproductiblesPratiques de build garantissant que compiler le même code source avec les mêmes instructions produit un artefact identique bit à bit, peu importe le moment et l'endroit.
Les builds reproductibles éliminent le non-déterminisme afin que quiconque dispose du code source et de la recette puisse recréer indépendamment le même binaire et le comparer octet pour octet à une release. Cela suppose de maîtriser horodatages, chemins de build, variables d'environnement, aléa, locale, ordre des fichiers et options du compilateur. Le projet Reproducible Builds, Debian, NixOS, Arch Linux, Tor, F-Droid et Bazel investissent fortement dans ce domaine. Couplés à une provenance signée, ils permettent à des rebuilders indépendants de vérifier qu'un binaire provient bien de la source publiée, aidant à détecter la compromission d'un builder unique (cas SolarWinds). Ils sont requis pour atteindre les plus hauts niveaux SLSA et soutiennent la confiance dans les logiciels open source critiques.
● Exemples
- 01
Reconstruction indépendante d'une release Tor Browser correspondant octet pour octet au binaire officiel.
- 02
Service Bazel produisant le même digest SHA-256 à partir du même commit sur n'importe quel worker.
● Questions fréquentes
Qu'est-ce que Builds reproductibles ?
Pratiques de build garantissant que compiler le même code source avec les mêmes instructions produit un artefact identique bit à bit, peu importe le moment et l'endroit. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie Builds reproductibles ?
Pratiques de build garantissant que compiler le même code source avec les mêmes instructions produit un artefact identique bit à bit, peu importe le moment et l'endroit.
Comment fonctionne Builds reproductibles ?
Les builds reproductibles éliminent le non-déterminisme afin que quiconque dispose du code source et de la recette puisse recréer indépendamment le même binaire et le comparer octet pour octet à une release. Cela suppose de maîtriser horodatages, chemins de build, variables d'environnement, aléa, locale, ordre des fichiers et options du compilateur. Le projet Reproducible Builds, Debian, NixOS, Arch Linux, Tor, F-Droid et Bazel investissent fortement dans ce domaine. Couplés à une provenance signée, ils permettent à des rebuilders indépendants de vérifier qu'un binaire provient bien de la source publiée, aidant à détecter la compromission d'un builder unique (cas SolarWinds). Ils sont requis pour atteindre les plus hauts niveaux SLSA et soutiennent la confiance dans les logiciels open source critiques.
Comment se défendre contre Builds reproductibles ?
Les défenses contre Builds reproductibles combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Builds reproductibles ?
Noms alternatifs courants : Builds déterministes, Builds bit à bit.
● Termes liés
- appsec№ 1053
SLSA Framework
Supply-chain Levels for Software Artifacts : ensemble d'exigences à paliers publié par l'OpenSSF qui durcit progressivement la façon de construire, signer et vérifier les logiciels face aux manipulations de la chaîne d'approvisionnement.
- appsec№ 1069
Sécurité de la chaîne d'approvisionnement logicielle
Discipline qui protège chaque maillon de la chaîne de production logicielle - source, dépendances, build, signature, distribution et déploiement - contre les manipulations, le code malveillant et la perte d'intégrité.
- appsec№ 870
Attestation de provenance
Déclaration signée et vérifiable par machine décrivant comment un artefact logiciel a été produit - source, système de build, paramètres, dépendances - pour que les consommateurs aient confiance en son origine.
- appsec№ 305
Verrouillage de dépendances (pinning)
Pratique consistant à déclarer les dépendances logicielles à des versions exactes, souvent associées à des empreintes cryptographiques, afin que les builds consomment toujours les mêmes artefacts et résistent aux manipulations de la chaîne d'approvisionnement.
- appsec№ 166
Sécurité CI/CD
Ensemble de contrôles qui protègent les pipelines d'intégration et de livraison continues contre la compromission, l'injection de code, la fuite de secrets et les déploiements non autorisés.
- appsec№ 784
Signature de paquets
Application d'une signature cryptographique à un paquet logiciel pour que les consommateurs vérifient l'identité de l'éditeur et que l'artefact n'a pas été altéré après publication.