CVE-2020-0674
CVE-2020-0674 ist eine Use-After-Free-Schwachstelle in der Legacy-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, die in freier Wildbahn ausgenutzt wurde. Dieser Exploit öffnet einfach calc.
Die Exploit-Beschreibung finden Sie hier.
Schwachstellenübersicht
- Die Schwachstelle existiert in der Array-
sort-Funktion, wenn eine Vergleichsfunktion verwendet wird.
- Die beiden bereitgestellten Argumente für die Vergleichsfunktion werden vom Garbage Collector nicht verfolgt und zeigen daher nach dem Aufruf des GC auf freigegebenen Speicher.
Hinweise zum Exploit
- Der Exploit wurde speziell für Windows 7 geschrieben, könnte aber wahrscheinlich ohne allzu großen Aufwand portiert werden.
- Dieser Exploit wurde für x64-Instanzen des IE geschrieben und läuft daher auf (und wurde getestet auf) den folgenden Browserkonfigurationen:
- IE 8 (x64-Build)
- IE 9 (x64-Build)
- IE 10 (entweder mit aktiviertem Enhanced Protected Mode oder aktiviertem TabProcGrowth)
- IE 11 (entweder mit aktiviertem Enhanced Protected Mode oder aktiviertem TabProcGrowth)
- Es ist erwähnenswert, dass der Enhanced Protected Mode unter Windows 7 lediglich die x64-Version des Browserprozesses aktiviert, es sich also weniger um einen Sandbox-Escape handelt, sondern vielmehr darum, dass es keine zusätzliche Sandbox gibt. Ironischerweise ermöglicht EPM, da dieser Exploit für x64 ausgelegt ist, tatsächlich seine Ausführung.
- Der Exploit ist nicht dafür gemacht, EMET vollständig zu umgehen (es wurde nur eine Umgehung der Stack-Pivot-Erkennung implementiert). Die endgültige Version (5.52) scheint jedoch kein EAF+ auszulösen, wenn der Exploit ausgeführt wird, während 5.5 dies tut (zumindest unter Windows 7 x64). IE 11 im Enhanced Protected Mode mit maximalen EMET-Einstellungen erlaubt daher den Exploit.
- Der Exploit ist stark kommentiert, aber um besser zu verstehen, wie der Exploit funktioniert und was er in jeder Phase tut, ändern Sie
var debug = false; in var debug = true; und öffnen Sie entweder die Entwicklerkonsole, um das Log anzuzeigen, oder lassen Sie sie geschlossen und sehen Sie sich stattdessen die alert-Popups an (was etwas nervig sein kann).