Das JFrog Security Research Team überwacht kontinuierlich gemeldete Schwachstellen in Open-Source-Software (OSS), um Unternehmen und der breiten Öffentlichkeit dabei zu helfen, sich der potenziellen Sicherheitsbedrohungen in der Software-Lieferkette bewusst zu werden. Die folgende Analyse einer Schwachstelle in WebAssembly-Anwendungen verdeutlicht, wie wichtig die Berücksichtigung des richtigen Kontexts bei der Bewertung der Risiken der Unternehmenssysteme ist.
Obwohl diese Go-Schwachstelle nicht neu ist, konnten die Sicherheitsforscher nun feststellen, dass es dennoch viele neue Docker-Container gibt, die immer noch anfällig für den Exploit sind. Diese Schwachstelle wurde sowohl von NVD (9.8 CVSS) als auch von GitHub als kritisch eingestuft, trotzdem wurde bisher weder ein Exploit noch ein technischer Bericht zu diesem Problem veröffentlicht, weshalb die tatsächlichen Auswirkungen dieser Schwachstelle noch unklar sind.
Sind die Voraussetzungen für die Ausnutzung der Go-Schwachstelle gegeben, können Bedrohungsakteure ein sogenanntes Wasm-Modul (WebAssembly: portables Binärcodeformat, wodurch Hochleistungsanwendungen auf Webseiten ausführbar sind) mit eigenem schadhaftem Code überschreiben und auszuführen.
Wie kann CVE-2021-38297 ausgenutzt werden?
Dieses CVE betrifft nur Benutzer der Go-Programmiersprachen in Versionen kleiner als 1.16.9 oder 1.17.2. Benutzer dieser Versionen müssen speziell ein Wasm-Modul laden, das von Go kompiliert wurde, und entweder Befehlszeilenparameter oder Umgebungsvariablen aus externen Quellen akzeptieren.
Welche Auswirkungen hat die Ausnutzung von CVE-2021-38297?
- Wenn das Wasm-Modul von einer clientseitigen Umgebung aus ausgeführt und z. B. durch den Webbrowser geladen wird, wird der Code des Angreifers in der JavaScript-Sandbox (Wasm) des Browsers ausgeführt. Das bedeutet, dass die Auswirkungen dieselben sind wie beim Laden eines vom Angreifer kontrollierten Wasm-Moduls. So können zwar z. B. Seiten-Cookies gestohlen werden, aber die Ausführung von beliebigem Code ist nicht direkt möglich.
- Wenn das Wasm-Modul von einer serverseitigen Umgebung aus ausgeführt wird (z. B. durch Node.js), können die Angreifer die Sicherheitslücke ausnutzen, da die Node.js-Umgebung den Zugriff auf das Dateisystem erlaubt und die Ausführung beliebiger Befehle auf Betriebssystemebene ermöglicht. Daher kann in diesem Fall eine vollständige „Remote-Code-Ausführung“ erreicht werden.
Technische Analyse von CVE-2021-38297
Falls ein Angreifer einen der Parameter, die an die Befehlszeile des Wasm-Moduls übergeben werden, oder eine Umgebungsvariable (bei Ausführung über Node.js) manipulieren kann, kann die gesamte Befehlszeile 4096 Zeichen überschreiten, was einen Pufferüberlauf im Wasm-Prozess verursacht. Der Angreifer kann diesen Pufferüberlauf ausnutzen, um den gesamten Inhalt des kompilierten Wasm-Moduls zu ersetzen und die Ausführung von beliebigem Wasm-Code zu erreichen.
Wie kann CVE-2021-38297 behoben werden?
Um CVE-2021-38297 vollständig zu beheben, wird ein Upgrade auf Go Version 1.16.9, 1.17.2 oder eine spätere Version empfohlen.
Wie kann CVE-2021-38297 in meiner Umgebung entschärft werden?
Wenn ein Upgrade auf eine neuere Version von Go in Ihrer Umgebung nicht möglich ist, kann CVE-2021-38297 durch die Übergabe von Argumenten mit globalen Variablen anstelle von Befehlszeilen- oder Umgebungsvariablen über das syscall/js-Paket abgeschwächt werden.
Selbst wenn der Angreifer diese globalen Variablen ändern kann, wird das Setzen dieser Variablen in beliebiger Länge keinen Pufferüberlauf verursachen. Nach einer umfassenden internen Prüfung sind die Sicherheitsforscher zu dem Schluss gekommen, dass die JFrog DevOps Platform nicht anfällig für CVE-2021-38297 ist, da dort die Golang-kompilierten Wasm-Module nicht verwendet werden. Darüber hinaus kann eine kontextbezogene Analyse es den Kunden ermöglichen, den Bedrohungsgrad und die Relevanz von CVEs genauer zu bestimmen. Dadurch ist eine schnellere und präzisere Priorisierung der Abhilfemaßnahmen realisierbar. So erlangen Unternehmen eine ganzheitliche, automatisierte, skalierbare Lösung, um gefährliche CVEs schnell zu erkennen, zu priorisieren und zu beheben.
www.jfrog.com