Die FreeBSD Foundation hat die Umsetzung einer Unterstützung für reproduzierbare Builds angekündigt, die sicherstellen, dass die verbreiteten Binärdateien aus dem bereitgestellten Quellcode erstellt werden und keine versteckten Änderungen enthalten. Gleichzeitig wurde die Möglichkeit angekündigt, FreeBSD in nicht privilegierten Umgebungen zu kompilieren, die keine Root-Rechte erfordern. Das Eliminieren von Komponenten, die während des Builds mit Root-Rechten ausgeführt werden, wird die Sicherheit der Infrastruktur zur Erstellung von FreeBSD-Versionen erhöhen, die Angriffsfläche im Build-Umfeld verringern und die Organisation automatisierter Builds erleichtern.
Im Aufbauprozess waren Root-Rechte erforderlich, um Geräte-Dateien zu erstellen, Zugriffsbeschränkungen festzulegen und zusätzliche Dateisysteme zu mounten (zum Beispiel bei der Erstellung von Festplatten-Images). Änderungen, um solche Aktionen durch nicht-root-rechtliche Operationen zu ersetzen, wurden in den experimentellen Branch von FreeBSD eingefügt, werden jedoch später auch in den Branch übernommen, auf dessen Grundlage das Release von FreeBSD 15.0 erstellt wird. Neben dem Erstellen des Releases aus dem Quellcode können jetzt auch ohne Root-Rechte Artefakte wie ISO-Images zur Erstellung von Installations- und Boot-Flash-Laufwerken sowie System-Images erstellt werden. virtuellen Maschinen und Cloud-Plattformen.
Was reproduzierbare Builds angeht, so ermöglichen sie die Identität von Binärdateien, die aus Quellcode in verschiedenen Build-Umgebungen erzeugt werden. Jeder kann jetzt persönlich überprüfen, dass die verbreiteten Binärdateien aus den bereitgestellten Quelltexten erstellt wurden, ohne sich allein auf das Vertrauen in die Build-Infrastruktur des Projekts zu verlassen, da eine Kompromittierung des Compilers oder der Build-Tools zur Einführung von versteckten Hintertüren führen kann.
Bei der Erstellung reproduzierbarer Builds werden solche Aspekte wie die genaue Übereinstimmung der Abhängigkeiten berücksichtigt; die Verwendung unveränderter Zusammenstellungen und Versionen der Build-Tools; identische Standardoptionen und -einstellungen; die Beibehaltung der Reihenfolge der Dateikonstruktion (Anwendung derselben Sortiermethoden); das Deaktivieren der Hinzufügung von nicht deterministischen Metadaten durch den Compiler, wie zufällige Werte, Dateipfade und Zeitstempel. Auch Fehler und Race Conditions in den Tools haben Einfluss auf die Reproduzierbarkeit der Builds.
Quelle: opennet.ru
