Artefaktvergiftung in GitHub-Aktionen Importiert Malware über Software-Pipelines

Quellknoten: 1769941

Ein Angreifer, der Änderungen an ein Open-Source-Repository auf GitHub übermittelt, könnte nachgelagerte Softwareprojekte veranlassen, die die neueste Version einer Komponente enthalten, um Updates mit bösartigem Code zu kompilieren.

Das sagt das Sicherheitsunternehmen für Softwarelieferketten, Legit Security, das in einem am 1. Dezember veröffentlichten Advisory sagte, dass diese „Artefaktvergiftungsschwäche“ Softwareprojekte betreffen könnte, die GitHub Actions – einen Dienst zur Automatisierung von Entwicklungspipelines – verwenden, indem sie den Build-Prozess auslösen wann eine Änderung in einer Softwareabhängigkeit erkannt wird. 

Die Schwachstelle ist nicht theoretisch: Legit Security simulierte einen Angriff auf das Projekt, das Rust verwaltet, wodurch das Projekt mit einer angepassten – und bösartigen – Version der beliebten GCC-Softwarebibliothek neu kompiliert wurde, so das Unternehmen in der Empfehlung.

Das Problem betrifft wahrscheinlich eine große Anzahl von Open-Source-Projekten, da Betreuer normalerweise Tests mit beigesteuertem Code durchführen, bevor sie den Code tatsächlich selbst analysieren, sagt Liav Caspi, Chief Technology Officer von Legit Security.

„Das ist heute ein gängiges Muster“, sagt er. „Viele Open-Source-Projekte führen heute bei einer Änderungsanforderung eine Reihe von Tests durch, um die Anforderung zu validieren, da der Betreuer den Code nicht zuerst überprüfen möchte. Stattdessen führt es automatisch Tests durch.“

Der Angriff nutzt den automatisierten Build-Prozess durch GitHub-Aktionen. Im Fall der Programmiersprache Rust hätte das anfällige Muster es einem Angreifer ermöglichen können, Code auf privilegierte Weise als Teil der Entwicklungspipeline auszuführen, Repository-Geheimnisse zu stehlen und möglicherweise den Code zu manipulieren, sagte Legit Security.

„Um es einfach auszudrücken: In einem anfälligen Workflow kann jeder GitHub-Benutzer einen Fork erstellen, der ein Artefakt erstellt“, so das Unternehmen in seinem Gutachten angegeben. „Injizieren Sie dieses Artefakt dann in den ursprünglichen Repository-Erstellungsprozess und ändern Sie seine Ausgabe. Dies ist eine weitere Form eines Softwarelieferkettenangriffs, bei dem die Build-Ausgabe von einem Angreifer modifiziert wird.“

Die Schwachstelle ermöglicht einen Angriff ähnlich wie der Malware-Einfügungsangriff, der auf CodeCov abzielte und über die Software dieses Unternehmens seine nachgelagerten Kunden.

„Das Fehlen einer nativen GitHub-Implementierung für die Kommunikation von Workflow-übergreifenden Artefakten veranlasste viele Projekte und die GitHub Actions-Community, unsichere Lösungen für die Kommunikation zwischen Workflows zu entwickeln, und machte diese Bedrohung weit verbreitet“, erklärte Legit Security in dem Advisory.

GitHub bestätigte das Problem und zahlte eine Prämie für die Informationen, während Rust seine anfällige Pipeline reparierte, erklärte Legit Security.

Quelle: Legit Security

Software Supply Chain braucht Sicherheit

Die Schwachstelle ist das neueste Sicherheitsproblem, das Software-Lieferketten betrifft. Industrie und Regierungsbehörden haben zunehmend versucht, die Sicherheit von Open-Source-Software und Software, die als Service bereitgestellt wird, zu erhöhen.

Im Mai 2021 veröffentlichte die Biden-Administration beispielsweise ihre Durchführungsverordnung zur Verbesserung der Cybersicherheit der Nation, eine Bundesvorschrift, die unter anderem vorschreibt, dass die Regierung dies tun wird verlangen grundlegende Sicherheitsstandards für jede Software, die sie kaufen. Auf der Seite der Privatwirtschaft haben Google und Microsoft Milliarden zugesagt um die Sicherheit im Open-Source-Ökosystem zu stärken, das den Code dafür bereitstellt umfasst mehr als drei Viertel der Codebasis einer durchschnittlichen Anwendung.

Logisch, aber verwundbar

Das Sicherheitsproblem gehört zu einer schwer zu findenden Klasse von Problemen, die als Logikprobleme bekannt sind, darunter Probleme mit Berechtigungen, die Möglichkeit, gegabelte Repositorys in eine Pipeline einzufügen, und eine fehlende Unterscheidung zwischen gegabelten und Basis-Repositorys.

Da Softwareprojekte häufig automatisierte Skripte verwenden, um Code-Übermittlungen zu überprüfen, bevor sie an die Betreuer weitergeleitet werden, werden Pull-Anforderungen automatisiert ausgeführt, bevor sie von einem Menschen auf schädlichen Code überprüft werden. Während die Automatisierung Zeit spart, sollte sie auch als Möglichkeit für Angreifer betrachtet werden, bösartigen Code in die Pipeline einzufügen.

„Wenn Sie Open-Source-Entwicklung betreiben, ist das Problem größer, weil Sie Beiträge von jedem auf der Welt akzeptieren“, sagt Caspi. „Du führst Dinge aus, denen du nicht trauen kannst.“

GitHub hat das Problem erkannt und die Möglichkeiten erweitert, Einreichungen von externen Mitarbeitern von der automatischen Einfügung in die Actions-Pipeline auszuschließen. Das Unternehmen hat seine GetArtifact- und ListArtifacts-APIs aktualisiert mit dem Ziel, mehr Informationen bereitzustellen, um festzustellen, ob einem Artefakt vertraut werden kann.

„Jeder, der so etwas wie das Rust-Projekt tut – und auf den Input von Dritten vertraut –, ist immer noch anfällig“, sagt Caspi. „Das ist ein Logikproblem. GitHub hat es einfach einfacher gemacht, ein sichereres Skript zu schreiben.“

Zeitstempel:

Mehr von Dunkle Lektüre