CVE-2020-0674 è una vulnerabilità use-after-free nel motore jscript legacy. Può essere attivata in Internet Explorer. L'exploit qui è stato scritto da maxpl0it ma la vulnerabilità stessa è stata scoperta da Qihoo 360 mentre veniva sfruttata attivamente in ambienti reali. Questo exploit apre semplicemente la calcolatrice.
La vulnerabilità risiede nella funzione sort degli Array quando viene utilizzata una funzione di confronto.
I due argomenti passati alla funzione di confronto non vengono tracciati dal Garbage Collector e quindi punteranno a memoria liberata dopo la chiamata al GC.
Note sull'exploit
L'exploit è stato scritto specificamente per Windows 7, ma probabilmente può essere portato senza troppe difficoltà.
Questo exploit è stato scritto per istanze x64 di IE, pertanto funzionerà su (ed è stato testato su) le seguenti configurazioni del browser:
IE 8 (x64 build)
IE 9 (x64 build)
IE 10 (con Enhanced Protected Mode abilitato o TabProcGrowth abilitato)
IE 11 (con Enhanced Protected Mode abilitato o TabProcGrowth abilitato)
Vale la pena notare che Enhanced Protected Mode su Windows 7 abilita semplicemente la versione x64 del processo del browser, quindi non è tanto un sandbox escape quanto l'assenza di un sandbox aggiuntivo. Ironia della sorte, poiché questo exploit è per x64, EPM in realtà gli permette di funzionare.
L'exploit non è progettato per bypassare completamente EMET (è stato implementato solo un bypass del rilevamento di stack pivot), tuttavia la versione finale (5.52) non sembra attivare EAF+ quando l'exploit viene eseguito, mentre la 5.5 lo fa (almeno su Windows 7 x64). Quindi IE 11 in Enhanced Protected Mode con impostazioni EMET massime abilitate permette l'exploit.
L'exploit è pesantemente commentato, ma per comprendere meglio come funziona e cosa fa in ogni fase, cambia var debug = false; in var debug = true; e apri la console sviluppatore per visualizzare il log, oppure tienila chiusa e visualizza i popup alert (che potrebbero essere un po' fastidiosi).