FreeBSD unterstützt reproduzierbare Builds und Builds ohne Root-Rechte.

Die FreeBSD Foundation hat die Implementierung der Unterstützung für reproduzierbare Builds angekündigt, die sicherstellen, dass verbreitete Binärdateien aus dem bereitgestellten Quellcode erstellt wurden und keine verborgenen Änderungen enthalten. Gleichzeitig wurde die Möglichkeit angekündigt, FreeBSD in nicht privilegierten Umgebungen zu bauen, die keine Root-Rechte erfordern. Die Beseitigung von Komponenten, die während des Builds mit Root-Rechten ausgeführt werden, wird die Sicherheit der Infrastruktur für die Erstellung von FreeBSD-Releases erhöhen, die Angriffsfläche auf die Build-Umgebung verringern und die Organisation automatisierter Builds vereinfachen.

Während des Build-Vorgangs waren Root-Rechte erforderlich, um Geräte-Dateien zu erstellen, Zugriffsrechte festzulegen und zusätzliche Dateisysteme (z. B. bei der Erstellung von Disk-Images) zu mounten. Änderungen zur Ersetzung solcher Vorgänge durch Aktionen, die keine Root-Rechte erfordern, wurden in den experimentellen Branch von FreeBSD eingefügt, werden jedoch später auch in den Branch übertragen, aus dem das Release von FreeBSD 15.0 erstellt wird. Neben dem Erstellen des Releases aus dem Quellcode können jetzt auch solche Artefakte ohne Root-Rechte erstellt werden, wie ISO-Images zur Erstellung von Installations- und Boot-USB-Sticks, System-Images für virtuelle Maschinen und Cloud-Plattformen.

Was die reproduzierbaren Builds betrifft, so ermöglichen sie die Identität der aus dem Quellcode in verschiedenen Build-Umgebungen generierten Binärdateien. Jeder Interessierte kann nun persönlich überprüfen, dass die verbreiteten Binärdateien aus den bereitgestellten Quelltexten erstellt wurden, und muss sich nicht nur auf das Vertrauen in die Build-Infrastruktur des Projekts verlassen, da eine Kompromittierung des Compilers oder des Build-Toolkits zur Einführung verborgener Hintertüren führen kann.

Bei der Erstellung reproduzierbarer Builds werden solche Feinheiten berücksichtigt wie die genaue Übereinstimmung der Abhängigkeiten; die Verwendung unveränderter Komponenten und Versionen von Build-Tools; identischer Satz von Optionen und Standardeinstellungen; die Beibehaltung der Reihenfolge der Dateizusammenstellung (Anwendung derselben Sortiermethoden); die Deaktivierung des Hinzufügens von nicht konstanten Betriebsinformationen durch den Compiler, wie z.B. zufällige Werte, Verweise auf Dateipfade und Daten zu Datum und Uhrzeit des Builds. Die Reproduzierbarkeit von Builds wird auch durch Fehler und Race Conditions in den Tools beeinflusst.

Quelle: opennet.ru

60GB SSD 8Gb DDR4