Im JavaScript-Engine LibJS, die im Webbrowser Ladybird verwendet wird, wurde eine Schwachstelle (CVE-2025-47154) entdeckt, die es ermöglicht, eigenen Code im System auszuführen, wenn speziell gestalteter JavaScript-Code verarbeitet wird. Die Schwachstelle entsteht durch die Freigabe des Speichers von m_argument_values_buffer, auf den ein Zeiger in der Struktur arguments_list verblieb, was zu einem Zugriff auf bereits freigegebenen Speicherbereich führt. Ein funktionierender Prototyp des Exploits ist verfügbar.
Ein Forscher, der das Problem entdeckte, führte Fuzzing-Tests an LibJS durch, bei denen 10 Abstürze festgestellt wurden. Die Analyse eines der Abstürze ergab, dass die Schwachstelle beim Verarbeiten von JavaScript-Code ausgenutzt werden kann. Diese Sicherheitsanfälligkeit erlaubte es, in beliebige Speicherbereiche des Prozesses zu lesen und zu schreiben. Die Ausführung des Codes wurde im Exploit durch das Ersetzen des Rückgabepointers der Rendering-Funktion umgesetzt. Mit der Rückgabepointer-programmierung (ROP – Return-Oriented Programming, bei der der Exploit aus bereits vorhandenen Maschinencodesegmenten erstellt wird, die mit einer Rücksprungsanweisung enden) wurde eine Kette für den Systemaufruf execve zur Ausführung einer externen Anwendung gebildet.
Der Browser Ladybird wird von Andreas Kling entwickelt, der einst bei Nokia arbeitete und an der Entwicklung von KHTML beteiligt war, bevor er bei Apple einer der Entwickler von Safari wurde. Derzeit befindet sich Ladybird in einer Pre-Alpha-Version, die nur für Entwickler geeignet ist. Ursprünglich wurde das Projekt als Anwendung für das Betriebssystem SerenityOS erstellt, aber im Sommer letzten Jahres wurde es zu einem eigenständigen Projekt und erhielt eine Spende von 1 Million Dollar. Der Browser ist in C++ geschrieben (es wurde beschlossen, zu Swift zu wechseln) und wird unter der BSD-Lizenz vertrieben. Das Projekt entwickelt eine eigene Engine namens LibWeb, einen JavaScript-Interpreter namens LibJS und zugehörige Bibliotheken.
Quelle: opennet.ru
