CVE-2020-0674
CVE-2020-0674 ist eine Use-after-Free-Schwachstelle in der veralteten JScript-Engine. Sie kann im Internet Explorer ausgelöst werden. Der Exploit hier wurde von maxpl0it geschrieben, aber die Schwachstelle selbst wurde von Qihoo 360 entdeckt, als sie in freier Wildbahn ausgenutzt wurde. Dieser Exploit öffnet einfach den Rechner (calc).
Der Write-up zum Exploit ist hier zu finden.
Überblick über die Schwachstelle
- Die Schwachstelle existiert in der Array-
sort-Funktion, wenn eine Vergleichsfunktion (Comparator) verwendet wird.
- Die beiden übergebenen Argumente für die Vergleichsfunktion werden vom Garbage Collector nicht verfolgt und zeigen daher nach einem GC-Lauf auf freigegebenen Speicher.
Hinweise zum Exploit
- Der Exploit wurde speziell für Windows 7 geschrieben, könnte aber wahrscheinlich ohne großen Aufwand portiert werden.
- Dieser Exploit wurde für x64-Instanzen des IE geschrieben und läuft daher auf folgenden Browserkonfigurationen (und wurde dort getestet):
- IE 8 (x64-Build)
- IE 9 (x64-Build)
- IE 10 (entweder mit aktiviertem Erweiterten Geschützten Modus oder aktiviertem TabProcGrowth)
- IE 11 (entweder mit aktiviertem Erweiterten Geschützten Modus oder aktiviertem TabProcGrowth)
- Es ist erwähnenswert, dass der Erweiterte Geschützte Modus unter Windows 7 lediglich die x64-Version des Browserprozesses aktiviert. Es handelt sich also weniger um eine Sandbox-Escape als vielmehr darum, dass es keine zusätzliche Sandbox gibt. Ironischerweise ermöglicht EPM es diesem Exploit, gerade weil er für x64 ist, überhaupt zu funktionieren.
- Der Exploit ist nicht dafür gebaut, EMET vollständig zu umgehen (es wurde wirklich nur ein Bypass für die Stack-Pivot-Erkennung implementiert), allerdings scheint die endgültige Version (5.52) EAF+ nicht auszulösen, wenn der Exploit ausgeführt wird, während es 5.5 tut (zumindest unter Windows 7 x64). Daher erlaubt IE 11 im Erweiterten Geschützten Modus mit maximalen EMET-Einstellungen den Exploit.
- Der Exploit ist ausführlich kommentiert, aber um ein besseres Verständnis dafür zu bekommen, wie der Exploit funktioniert und was er in jeder Phase tut, ändere
var debug = false; zu var debug = true; und öffne entweder die Entwicklerkonsole, um das Log zu sehen, oder lasse sie geschlossen und betrachte stattdessen die alert-Popups (was vielleicht ein wenig nervig sein kann).