Aufbau einer sicheren Softwarelieferkette mit GNU Guix

Nächster Abgabetermin: 1. Oktober 2022

Ludovic Courtes

The Art, Science, and Engineering of Programming, 2023, Bd. 7, Nummer 1, Artikel 1

ae_reusable

Datum der Einreichung: 2022-04-28Datum der Veröffentlichung: 2022-06-15DOI: https://doi.org/10.22152/programming-journal.org/2023/7/1Volltext: PDFRelated Artifact: https:/ /doi.org/10.5281/zenodo.6581453

Zusammenfassung

Die Softwarelieferkette wird zu einer beliebten Analogie für die Reihe von Schritten, die unternommen werden, um vom Quellcode, der von Entwicklern veröffentlicht wird, zu ausführbaren Dateien zu gelangen, die auf den Computern der Benutzer ausgeführt werden. Eine Sicherheitsverletzung in einem dieser Schritte setzt Benutzer einem Risiko aus, und es gibt Hinweise darauf, dass Angriffe auf die Lieferkette immer häufiger werden. Die Folgen eines Angriffs auf die Softwarelieferkette können in einer Gesellschaft tragisch sein, die auf viele miteinander verbundene Softwaresysteme angewiesen ist, die sowohl das Forschungsinteresse als auch staatliche Anreize für die Softwaresicherheit erhöht hat.

GNU Guix ist ein Softwarebereitstellungs- und -verteilungstool, das die Herkunftsverfolgung, reproduzierbare Versionen und reproduzierbare Softwareumgebungen unterstützt. Anders als viele Software-Distributionen besteht es ausschließlich aus Quellcode: Es stellt eine Reihe von Paketdefinitionen bereit, die beschreiben, wie Code aus dem Quellcode erstellt wird. Zusammen unterscheiden diese Eigenschaften es von vielen Bereitstellungstools, die sich auf die binäre Verteilung konzentrieren.

Dieser Artikel konzentriert sich auf eine Forschungsfrage: Wie können Guix und ähnliche Systeme es Benutzern ermöglichen, ihre Software sicher zu aktualisieren? Der Quellcode von Guix wird über das Versionskontrollsystem Git verteilt; Das Aktualisieren der von Guix installierten Softwarepakete bedeutet zunächst, die lokale Kopie des Guix-Quellcodes zu aktualisieren. Frühere Arbeiten zu sicheren Softwareaktualisierungen konzentrierten sich auf Systeme, die sich stark von Guix unterscheiden – Systeme wie Debian, Fedora oder PyPI, bei denen die Aktualisierung das Abrufen von Metadaten über die neuesten verfügbaren binären Artefakte beinhaltet – und sind im Kontext von Guix weitgehend nicht anwendbar. Im Gegensatz dazu sind die Hauptbedrohungen für Guix Angriffe auf sein Quellcode-Repository, die Benutzer dazu bringen könnten, nicht authentischen Code auszuführen oder ihr System herunterzustufen. Bereitstellungstools, die eher Guix ähneln, von Nix bis Portage, haben entweder keine sicheren Update-Mechanismen oder leiden unter Schlupflöchern.

Unser Hauptbeitrag ist ein Modell und ein Tool zur Authentifizierung neuer Git-Revisionen. Wir zeigen außerdem, wie wir aufbauend auf der Git-Semantik Schutzmaßnahmen gegen Downgrade-Angriffe und damit verbundene Bedrohungen aufbauen. Wir erläutern die Umsetzungsmöglichkeiten. Diese Arbeit wurde vor zwei Jahren in der Produktion eingesetzt und gibt uns einen Einblick in die tägliche Verwendung in der Praxis. Die Git-Checkout-Authentifizierung für die Basis ist über den spezifischen Anwendungsfall von Guix hinaus anwendbar, und wir glauben, dass Entwicklerteams, die Git verwenden, davon profitieren könnten.

Mit zunehmenden Angriffen auf die Softwarelieferkette untersucht die Sicherheitsforschung nun jedes Glied in der Lieferkette. Sichere Updates sind ein wichtiger Aspekt der Lieferkette, aber dieser Artikel untersucht auch den größeren Kontext: wie Guix die Lieferkette modelliert und implementiert, vom Upstream-Quellcode bis zu Binärdateien, die auf Computern laufen. Während sich ein Großteil der jüngsten Arbeiten auf die Beglaubigung konzentriert hat - die Zertifizierung jedes Glieds in der Lieferkette -, verfolgt Guix einen radikaleren Ansatz: Es ermöglicht eine unabhängige Verifizierung jedes Schritts und stützt sich auf reproduzierbare Versionen, "bootfähige" Versionen und Herkunftsverfolgung . . Die Übersicht zeigt, wie Guix als Basis für sichere Softwarelieferketten eingesetzt werden kann.

Nächster Abgabetermin: 1. Oktober 2022

Ludovic Courtes

The Art, Science, and Engineering of Programming, 2023, Bd. 7, Nummer 1, Artikel 1

ae_reusable

Datum der Einreichung: 2022-04-28Datum der Veröffentlichung: 2022-06-15DOI: https://doi.org/10.22152/programming-journal.org/2023/7/1Volltext: PDFRelated Artifact: https:/ /doi.org/10.5281/zenodo.6581453

Zusammenfassung

Die Softwarelieferkette wird zu einer beliebten Analogie für die Reihe von Schritten, die unternommen werden, um vom Quellcode, der von Entwicklern veröffentlicht wird, zu ausführbaren Dateien zu gelangen, die auf den Computern der Benutzer ausgeführt werden. Eine Sicherheitsverletzung in einem dieser Schritte setzt Benutzer einem Risiko aus, und es gibt Hinweise darauf, dass Angriffe auf die Lieferkette immer häufiger werden. Die Folgen eines Angriffs auf die Softwarelieferkette können in einer Gesellschaft tragisch sein, die auf viele miteinander verbundene Softwaresysteme angewiesen ist, die sowohl das Forschungsinteresse als auch staatliche Anreize für die Softwaresicherheit erhöht hat.

GNU Guix ist ein Softwarebereitstellungs- und -verteilungstool, das die Herkunftsverfolgung, reproduzierbare Versionen und reproduzierbare Softwareumgebungen unterstützt. Anders als viele Software-Distributionen besteht es ausschließlich aus Quellcode: Es stellt eine Reihe von Paketdefinitionen bereit, die beschreiben, wie Code aus dem Quellcode erstellt wird. Zusammen unterscheiden diese Eigenschaften es von vielen Bereitstellungstools, die sich auf die binäre Verteilung konzentrieren.

Dieser Artikel konzentriert sich auf eine Forschungsfrage: Wie können Guix und ähnliche Systeme es Benutzern ermöglichen, ihre Software sicher zu aktualisieren? Der Quellcode von Guix wird über das Versionskontrollsystem Git verteilt; Das Aktualisieren der von Guix installierten Softwarepakete bedeutet zunächst, die lokale Kopie des Guix-Quellcodes zu aktualisieren. Frühere Arbeiten zu sicheren Softwareaktualisierungen konzentrierten sich auf Systeme, die sich stark von Guix unterscheiden – Systeme wie Debian, Fedora oder PyPI, bei denen die Aktualisierung das Abrufen von Metadaten über die neuesten verfügbaren binären Artefakte beinhaltet – und sind im Kontext von Guix weitgehend nicht anwendbar. Im Gegensatz dazu sind die Hauptbedrohungen für Guix Angriffe auf sein Quellcode-Repository, die Benutzer dazu bringen könnten, nicht authentischen Code auszuführen oder ihr System herunterzustufen. Bereitstellungstools, die eher Guix ähneln, von Nix bis Portage, haben entweder keine sicheren Update-Mechanismen oder leiden unter Schlupflöchern.

Unser Hauptbeitrag ist ein Modell und ein Tool zur Authentifizierung neuer Git-Revisionen. Wir zeigen außerdem, wie wir aufbauend auf der Git-Semantik Schutzmaßnahmen gegen Downgrade-Angriffe und damit verbundene Bedrohungen aufbauen. Wir erläutern die Umsetzungsmöglichkeiten. Diese Arbeit wurde vor zwei Jahren in der Produktion eingesetzt und gibt uns einen Einblick in die tägliche Verwendung in der Praxis. Die Git-Checkout-Authentifizierung für die Basis ist über den spezifischen Anwendungsfall von Guix hinaus anwendbar, und wir glauben, dass Entwicklerteams, die Git verwenden, davon profitieren könnten.

Mit zunehmenden Angriffen auf die Softwarelieferkette untersucht die Sicherheitsforschung nun jedes Glied in der Lieferkette. Sichere Updates sind ein wichtiger Aspekt der Lieferkette, aber dieser Artikel untersucht auch den größeren Kontext: wie Guix die Lieferkette modelliert und implementiert, vom Upstream-Quellcode bis zu Binärdateien, die auf Computern laufen. Während sich ein Großteil der jüngsten Arbeiten auf die Beglaubigung konzentriert hat - die Zertifizierung jedes Glieds in der Lieferkette -, verfolgt Guix einen radikaleren Ansatz: Es ermöglicht eine unabhängige Verifizierung jedes Schritts und stützt sich auf reproduzierbare Versionen, "bootfähige" Versionen und Herkunftsverfolgung . . Die Übersicht zeigt, wie Guix als Basis für sichere Softwarelieferketten eingesetzt werden kann.

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow