Schwachstelle in Python ermöglicht das Ausführen von Systembefehlen aus isolierten Skripten

Es wurde eine Methode veröffentlicht, um die Isolation von Codeausführungen in Python zu umgehen. Diese basiert auf einem bereits lange bekannten Fehler in Python 2.7, der 2012 entdeckt wurde und bis heute in Python 3 nicht behoben ist. Der Fehler ermöglicht es, durch speziell zusammengestellten Python-Code auf bereits freigegebene Speicherbereiche (Use-After-Free) in CPython zuzugreifen. Ursprünglich wurde angenommen, dass der Fehler keine Sicherheitsbedrohung darstellt und nur in sehr seltenen, meist künstlich erzeugten Fällen zu einem Absturz des Skripts führen kann.

Ein Sicherheitsforscher unter dem Pseudonym kn32 hat sich mit einem Problem beschäftigt und konnte einen funktionierenden Exploit entwickeln, der es ermöglicht, beliebige Systembefehle auszuführen, ohne direkten Zugriff auf Methoden wie os.system zu haben. Der Exploit ist in reinem Python geschrieben und funktioniert ohne den Import externer Bibliotheken oder die Installation eines Handlers wie „code.__new__“. Aus den Hooks wird nur „builtin.__id__“ verwendet, das normalerweise nicht verboten ist. Praktisch kann der vorgeschlagene Code dazu verwendet werden, Isolationsmechanismen in verschiedenen Diensten und Umgebungen zu umgehen (zum Beispiel in Schulungsumgebungen, Online-Shells, eingebetteten Handlern usw.), die die Ausführung von Python-Code erlauben, aber die verfügbaren Aufrufe einschränken und den Zugriff auf Methoden wie os.system nicht erlauben.

Der bereitgestellte Code ist ein Äquivalent zu einem Aufruf von os.system, der durch die Ausnutzung einer Schwachstelle in CPython funktioniert. Der Exploit funktioniert mit allen Versionen von Python 3 auf x86-64-Systemen und zeigt stabile Ergebnisse unter Ubuntu 22.04, selbst bei aktivierten Schutzmodi wie PIE, RELRO und CET. Die Funktionsweise besteht darin, aus dem Python-Code die Adresse einer Funktion im ausführbaren Code von CPython zu ermitteln. Basierend auf dieser Adresse wird die Basisadresse von CPython im Speicher sowie die Adresse der Funktion system() im geladenen libc-Exemplar berechnet. Schließlich erfolgt ein direkter Übergang zu einer bestimmten Adresse von system c durch Ersetzen des Zeigers des ersten Arguments mit dem String "\/bin\/sh".

Schwachstelle in Python ermöglicht das Ausführen von Systembefehlen aus isolierten Skripten


Quelle: opennet.ru
Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster