Wie man Angriffe auf die Lieferkette mit Preflight abschwächt

0
162
Peshkova/Shutterstock.com

Die Risiken von Angriffen auf die Lieferkette haben in letzter Zeit im Zuge der SolarWinds- und Codecov-Hacks an Sichtbarkeit gewonnen. Angreifer kompromittieren Upstream-Codeanbieter, um schädliche Quellen in Softwareprodukte einzuschleusen.

Viele Anwendungen laden während ihrer Build-Routinen externe Abhängigkeiten herunter. Die Verwendung dieser Downloads kann gefährlich sein. Woher wissen Sie, dass die Datei auf dem Server nicht durch eine schädliche Version ersetzt wurde?

curl https://example.com/install-script.sh | sh

Dieser Befehl veranschaulicht die einfachsten Angriffe auf die Lieferkette. Ein Installationsskript in Ihre Shell zu überführen ist bequem, aber riskant. Wenn example.com kompromittiert wurde, haben Sie gerade einem Angreifer uneingeschränkten Zugriff auf Ihr System gewährt.

Dateiprüfsummen

Sie können die Gefahren dieses Ansatzes mindern, indem Sie prüfen, ob die heruntergeladene Datei mit einer bekannten Prüfsumme übereinstimmt. Viele seriöse Open-Source-Projekte veröffentlichen eine Prüfsumme, mit der Sie vergleichen können. Führen Sie die Datei nur aus, wenn die berechnete Prüfsumme mit Ihrem bekannten Wert übereinstimmt.

Die Implementierung dieser Prüfung in Ihre Build-Skripts kann sich schnell wiederholen. Preflight ist ein Tool, mit dem Sie Prüfsummenvergleiche durchführen können, um häufige Angriffe auf die Lieferkette zu vermeiden.

Werbung

Preflight akzeptiert einen Binärpfad und eine Prüfsumme zum Vergleich. Wenn die Prüfsumme der Datei übereinstimmt, wird sie normal ausgeführt. Andernfalls wird der Befehl abgebrochen, wodurch Ihr Build-Skript oder Ihre CI-Pipeline vor unbeabsichtigtem Einschluss von bösartigem Code geschützt wird.

Verwenden von Preflight

Sie können Preflight von seinem GitHub herunterladen veröffentlicht Seite. Das Tool wird auch als Preflight im Homebrew-Paketmanager verteilt.

Im einfachsten Fall kann Preflight überall dort verwendet werden, wo Sie normalerweise nach | . greifen würden Sch. Leiten Sie einen weiteren Befehl an Preflight und geben Sie eine Prüfsumme an, die übereinstimmen muss, bevor etwas ausgeführt wird.

curl https://example.com/install-script.sh | preflight run sha256=abc…123

Jetzt wird das Installationsskript nur ausgeführt, wenn es mit der bekannten Prüfsumme übereinstimmt. Dies gibt Ihnen die Gewissheit, dass der Inhalt der Datei nicht manipuliert wurde. Preflight unterstützt die Hash-Typen sha256, sha1 und md5.

Sie sollten bekannte Prüfsummen in Ihren Build-Skripten fest codieren. Laden Sie keine Prüfsummendatei herunter, die von demselben Server wie die Zieldatei bereitgestellt wird. Angenommen, ein Angreifer mit der Fähigkeit, das Skript zu ändern, hat auch eine gefälschte Prüfsummendatei hochgeladen.

Programmatische Prüfungen

Manchmal möchten Sie möglicherweise eine Aktion durchführen, je nachdem ob eine Datei erfolgreich mit ihrer Prüfsumme übereinstimmt. In diesem Fall können Sie die Preflight-Prüfung verwenden, um den Vergleich durchzuführen, ohne die Datei tatsächlich auszuführen.

curl https://example.com/install-script.sh | Preflight-Check sha256=abc…123 Werbung

Der Befehl wird mit Statuscode 0 beendet, wenn die Prüfsumme der Datei übereinstimmt. Bei einer Abweichung wird der Statuscode 1 ausgegeben. Preflight gibt auch eine Fehlermeldung an den Standardausgabestream aus.

Erstellen von Hashes mit Preflight

Nicht alle Softwareprojekte veröffentlichen Hashes für ihre gibt frei. Preflight bietet integrierte Unterstützung zum Generieren eines neuen Hashs, wenn Sie einen für eine Abhängigkeit benötigen.

Laden Sie die Datei von der Website des Anbieters herunter. Übergeben Sie es dann an preflight create, um den Hash des Inhalts der Datei zu erhalten.

wget https://example.com/install-script.sh preflight create install-script.sh


Standardmäßig wird ein SHA256-Hash generiert. Sie können zu SHA1 oder MD5 wechseln, indem Sie dem Befehl das Flag –digest hinzufügen.

Hinzufügen von Malware-Scans

Neben grundlegenden Prüfsummenvergleichen unterstützt Preflight optionale Malware-Scans. Diese Funktion überprüft Ihre Datei auf bekannte Malware-Signaturen.

Malware-Listen werden von Drittanbieterdiensten bereitgestellt. Preflight funktioniert mit jeder Textdatei, die eine Liste bekannter Malware-Prüfsummen enthält. Malshare ist ein Anbieter dieser Listen.

Werbung

Legen Sie die Umgebungsvariable PF_FILE_LOOKUP so fest, dass sie auf den Speicherort Ihrer Datei verweist. Preflight erkennt diese Variable und aktiviert Malware-Lookups. Wenn Sie eine Preflight-Prüfung oder einen Preflight-Lauf ausführen, wird die Prüfsumme der Zieldatei mit den Einträgen in der Malware-Liste verglichen. Die Prüfung schlägt fehl, wenn es eine Übereinstimmung gibt.

Was ist mit anderen Arten von Abhängigkeiten?

Preflight-Schwerpunkte bei Überprüfungen statischer Dateien. Es eignet sich am besten für vorgefertigte binäre Downloads, die Sie direkt vom Anbieter erwerben.

Es ist weniger realistisch, Preflight mit Abhängigkeiten zu verwenden, die über Paketmanager erworben wurden. Risiken, die sich aus über npm, Composer, NuGet oder Maven installierter Software ergeben, müssen anders gehandhabt werden. Sie können Paket-Manager-Funktionen wie Vendor Scoping verwenden, um sicherzustellen, dass Abhängigkeiten von vertrauenswürdigen Repositorys installiert werden.

Preflight sollte eine Komponente in Ihrer Verteidigung gegen Supply-Chain-Injections sein. Analysieren Sie Ihre Build-Skripte, um Angriffsvektoren zu identifizieren, die von anderen Formen von Drittanbietersoftware bereitgestellt werden.

Zusammenfassung

Angriffe auf die Lieferkette sind ein wachsendes Problem, das die Sicherheit von Softwarebereitstellungen. Viele Entwickler integrieren direkte Software-Downloads in ihre Build-Skripte. Dies könnte Angreifern die Möglichkeit geben, Code in ein Zielprojekt einzubinden, indem sie einen Upstream-Anbieter kompromittieren.

Preflight vereinfacht die Sicherheitsüberprüfung von Skripten und Binärdateien von Drittanbietern. Es gibt jedoch eine gewisse Ironie: Durch die Verwendung von Preflight sind Sie auf ein Drittanbieterpaket angewiesen, das Sie herunterladen müssen. Sie können dies abmildern, indem Sie Preflight selbst aus der Quelle erstellen und die Binärdatei auf einem internen Server hosten, dem Sie vertrauen.