Kritische Rust-Schwachstelle macht Windows-Systeme angreifbar : Möglicherweise weitere Programmiersprachen anfällig
Eine kritische Sicherheitslücke in der Rust-Standardbibliothek ermöglicht Befehlsinjektionsangriffe auf Windows-Systeme. Die als CVE-2024-24576 geführte Schwachstelle hat mit 10,0 den höchsten CVSS-Score und betrifft Szenarien, in denen Batch-Dateien unter Windows mit nicht vertrauenswürdigen Argumenten aufgerufen werden.
Die Rust-Standardbibliothek hat laut einer aktuellen Mitteilung der Rust Security Response Working Group ein Problem mit der korrekten Behandlung von Argumenten beim Aufruf von Batch-Dateien (mit den Erweiterungen .bat und .cmd) unter Windows mithilfe der Befehls-API. Wenn ein Angreifer die Argumente beeinflussen kann, die an den gestarteten Prozess übergeben werden, könnte er durch Umgehung der Escaping-Mechanismen beliebige Befehle ausführen. Die Schwachstelle betrifft alle Versionen von Rust vor 1.77.2.
Der Sicherheitsforscher RyotaK hat den Fehler entdeckt und dem CERT Coordination Center (CERT/CC) gemeldet. Die Sicherheitslücke, die auch unter dem Codenamen „BatBadBut“ bekannt ist, betrifft mehrere Programmiersprachen. Sie tritt auf, wenn die Programmiersprache die CreateProcess-Funktion unter Windows verwendet und einen Escaping-Mechanismus für die Befehlsargumente hinzufügt.
Laut CERT/CC ist die Schwachstelle das Ergebnis von Programmiersprachen, die in einer Microsoft-Windows-Umgebung Befehle aufrufen, ohne angemessene Validierungsmechanismen anzuwenden. Dadurch könnten Angreifer beliebigen Code ausführen, der in Form von Argumenten für den Befehl getarnt ist. Wie schwer sich diese Schwachstelle auswirkt, hängt von der Implementierung ab, die eine anfällige Programmiersprache oder ein entsprechendes Modul verwendet.
Da nicht jede Programmiersprache das Problem behoben hat, sollten Entwickler vorsichtig sein, wenn sie Befehle unter Windows ausführen. Um die unerwartete Ausführung von Batch-Dateien zu vermeiden, empfiehlt RyotaK den Benutzern, Batch-Dateien in ein Verzeichnis zu verschieben, das nicht in der PATH-Umgebungsvariable enthalten ist. Auf diese Weise werden die Batchdateien nur ausgeführt, wenn der vollständige Pfad angegeben ist, was das Risiko unerwarteter Ausführungen reduziert.