Der Sicherheitsexperte RyotaK von Flatt Security Inc. hat am 9.4.24 eine Schwachstelle in verschiedenen Programmiersprachen in Windows gemeldet, die unter bestimmten Umständen ein maximales Sicherheitsrisiko mit CVSS Score 10 / 10 darstellen kann. Die unter dem Namen BatBadBut geführte Schwachstelle, die es Angreifern ermöglicht, Befehlsinjektionen in Windows-Anwendungen durchzuführen, die indirekt von der Funktion CreateProcess abhängen. Diese Funktion startet implizit cmd.exe beim Ausführen von Batch-Dateien (.bat, .cmd), selbst wenn diese nicht explizit in der Befehlszeile angegeben sind. Dies wird problematisch, da cmd.exe komplexe Parsing-Regeln für Befehlsargumente hat und Laufzeitumgebungen von Programmiersprachen diese Argumente nicht korrekt escapen.
Diese Schwachstelle bringt erheblichen Patchaufwand für Systemadministratoren mit sich, da eine ganze Reihe von Programmiersprachen geupdated werden müssen und zusätzlich, die PATH Umgebungsvariable geprüft werden muss und ggf. darin beinhaltete Ordner mit Anwendungen verschoben werden müssen
Die Ausnutzung dieser Schwachstelle ist möglich, wenn eine Anwendung auf Windows einen Befehl ausführt, der benutzerkontrollierte Eingaben als Teil der Befehlsargumente enthält und die Laufzeitumgebung der verwendeten Programmiersprache die Befehlsargumente nicht korrekt für cmd.exe escapet. Ein einfacher Node.js-Codeausschnitt könnte beispielsweise calc.exe auf einem Server starten, wenn eine Batch-Datei explizit in der Befehlszeile angegeben ist.
Die Wurzel des Problems liegt in der Art und Weise, wie die CreateProcess-Funktion Batch-Dateien ausführt, wobei Windows implizit cmd.exe startet. Die meisten Programmiersprachen umschließen diese Funktion, um eine benutzerfreundlichere Schnittstelle bereitzustellen, aber die Escaping-Mechanismen für Befehlsargumente sind nicht ausreichend für die Parsing-Regeln von cmd.exe.
Um sich zu schützen, sollten Entwickler die Dateierweiterung des auszuführenden Befehls immer angeben. Zudem müssen Eingaben von Benutzern, die als Befehlsargumente verwendet werden, ordnungsgemäß escaped werden, bevor sie verwendet werden.
Obwohl diese Sicherheitslücke nicht alle Anwendungen betrifft, ist es für betreuende Systemadministratoren entscheidend, umfassende Patches auszuführen und falls dies nicht möglich ist die folgende Mitigations-Strategie auszuführen:
Um die unerwartete Ausführung von Batch-Dateien zu verhindern, sollten Sie in Erwägung ziehen, die Batch-Dateien in ein Verzeichnis zu verschieben, das nicht in der PATH-Umgebungsvariablen enthalten ist. Wenn Batch-Dateien sich in einem Verzeichnis befinden, das nicht im PATH angegeben ist, werden sie nicht automatisch ausgeführt, es sei denn, der vollständige Pfad zur Batch-Datei wird explizit angegeben.
Diese Maßnahme trägt dazu bei, die ungewollte Ausführung von Batch-Dateien zu verhindern, da ein Angreifer nicht mehr einfach einen Befehl mit dem Namen der Batch-Datei ausführen kann, in der Hoffnung, dass das Betriebssystem die Datei automatisch findet und ausführt. Stattdessen müsste der Angreifer den genauen Speicherort der Datei kennen und den vollständigen Pfad angeben, um die Datei auszuführen.
Hier ist eine Tabelle, die die betroffenen Programmiersprachen und ihren aktuellen Status bezüglich der BatBadBut-Sicherheitslücke auflistet:
Programmiersprache | Status |
---|---|
Erlang | Dokumentationsaktualisierung |
Go | Dokumentationsaktualisierung |
Haskell | Patch verfügbar |
Java | nicht behebbar |
Elektron (CVE-2024-27303) | Patch verfügbar |
Node.js (CVE-2024-27980) | Patch verfügbar |
PHP (CVE-2024-1874) | Patch wird verfügbar sein |
Python (CVE-2024-22423) | Dokumentationsaktualisierung, diverse Package Aktualisierungen |
Perl (CVE-2023-47039) | Advisory verfügbar |
Ruby | Dokumentationsaktualisierung |
Rust (CVE-2024-24576) | Patch verfügbar auf Version >= 1.77.2 |
Professionelle Hilfe erwünscht?
Sentiguard ist spezialisiert auf Notfallhilfe nach Cyberattacken, IT Sicherheitsbeauftragte und IT Sicherheitskonzepte nach BSI Standard. Haben Sie Fragen und wünschen Sie unverbindliche Beratung, dann melden Sie sich gerne bei uns: