Sicherheitsforscher von Tenable Research haben eine kritische Schwachstelle (CVSSv4 Score 9,3) in einem Microsoft-GitHub-Repository entdeckt. Die Sicherheitslücke ermöglicht Remote Code Execution (RCE) sowie unautorisierten Zugriff auf Repository-Secrets. Die Entdeckung unterstreicht, dass CI/CD-Infrastrukturen ein zentraler Bestandteil moderner Angriffsflächen sind.
Die Schwachstelle betrifft einen verwundbaren GitHub-Workflow im Repository "Windows-driver-samples". Mit rund 5.000 Forks und 7.700 Stars stellt dieses Repository einen wichtigen Anlaufpunkt für Entwickler dar. Konkret geht es bei der Schwachstelle um Automatisierungsskripte auf Basis von GitHub Actions. Die Tenable-Forscher zeigten, wie Angreifer dessen CI/CD-Infrastruktur gezielt ausnutzen können, um die Software-Lieferkette zu kompromittieren.
Ein „trivialer" Angriffspfad
Die Ursache liegt in einer einfachen Python-String-Injection-Schwachstelle. Ein mögliches Angriffsszenario:
- Erstellen eines Issues: Ein Angreifer eröffnet ein GitHub-Issue – eine Funktion, die jedem registrierten Nutzer offensteht.
- Einschleusen von Schadcode: In der Issue-Beschreibung wird bösartiger Python-Code platziert.
- Automatische Ausführung: Der GitHub-Workflow wird beim Erstellen des Issues automatisch ausgelöst und führt den Schadcode im Kontext des GitHub-Runners aus.
- Auslesen von Secrets: Der Angreifer kann den GITHUB_TOKEN sowie weitere im Repository konfigurierte Secrets auslesen.
Auswirkungen auf die Repository-Integrität
Der ausgelesene GITHUB_TOKEN ermöglicht Aktionen im jeweiligen GitHub-Repository. Da das Repository vor 2023 erstellt wurde und der Token ohne explizite Einschränkung zumindest das Erstellen von Issues erlaubt, gehen die Researcher davon aus, dass weiterhin standardmäßige Lese- und Schreibrechte bestehen. Dies könnte es Unbefugten ermöglichen, privilegierte Aktionen im Namen von Microsoft auszuführen, etwa Issues anzulegen oder Inhalte im Repository zu verändern.
"Die CI/CD-Infrastruktur ist Teil der Angriffsfläche und der Software-Lieferkette eines Unternehmens", erklärt Rémy Marot, Staff Research Engineer bei Tenable. „Ohne geeignete Schutzmaßnahmen können Schwachstellen in Pipelines ausgenutzt werden, um groß angelegte Supply-Chain-Angriffe zu starten – mit potenziell gravierenden Folgen für nachgelagerte Systeme und Nutzer."
Im Zuge der Offenlegung betont Tenable, dass Unternehmen ihre CI/CD-Pipelines als kritische Infrastruktur behandeln sollten, und empfiehlt zur Vermeidung vergleichbarer Risiken folgende Maßnahmen:
- Strenge Sicherheitskontrollen: Robuste Schutzmechanismen zum Schutz von Quellcode und Build-Integrität in automatisierten Workflows implementieren.
- Überprüfung von Berechtigungen: GITHUB_TOKEN-Berechtigungen explizit anpassen und auf das notwendige Minimum beschränken.
- Monitoring der Pipelines: Automatisierte Workflows regelmäßig auf mögliche Injection-Schwachstellen prüfen, insbesondere wenn sie durch externe Nutzereingaben ausgelöst werden.
Tenable hat die Details zur kritischen Schwachstelle im Blog-Beitrag Microsoft GitHub Repository Windows-driver-samples Workflow Remote Code Execution veröffentlicht.



MVP: 2013 – 2016





Ich glaube ich verstehe das nicht ganz…
Wieso wird ein Code in einem Issue ausgeführt?
Ok wenn da KI im Spiel wäre und im Issue geschrieben wird, ich habe da ein Blocking Problem und – auch eine Lösung die super toll ist und unmittelbar eingebaut werden soll, weil so supertoll – dann kann ich mir noch vorstellen, dass der Code irgendwo von einer KI integriert wird oder getestet wird.
Aber einfach so, weil ein Code in einem Fehlermeldungsreport steht – wird dieser automatisch angeworfen? Eventuell um das Problem automatisch nachvollziehen zu können? Nur um den Besitzer des Codes zu Taggen? Nein ich verstehe es immer noch nicht.. warum macht man so etwas? Es gibt doch auf Github eine automatisierte Meldung an den Codebesitzer, wenn etwas neues hereinkommt… Da brauche ich doch nicht zusätzliche Actions auf einen Issue legen?
Der Runner im Github wurde von den Repositoryverantwortlichen falsch konfiguriert.
Grundsätzlich automatisch Dinge mit Bugreports zu tun, passiert häufig.
Hier wurde aber der Inhalt des Bugreports ohne Eingabevalidierung direkt an Python weiter gereicht, was zur Ausführung des Codes geführt hat.
Verstehe danke! – was macht man automatisiert mit Bugreports z.B.?
(Ich verwendete Github nur privat um an dem einen oder anderen Open Source Code Issues zu melden oder ggf kleine Code Verbesserungen vorzuschlagen.) D.h. ich habe mich da nie wirklich vertieft…