Rilasciato exploit per vecchie versioni di Firefox

09/12/2019

cve-2019-11708 cve-2019-9810 exploit firefox Vulnerabilità

Il CERT-PA durante le consuete attività di monitoraggio delle fonti OSINT, è venuto a conoscenza dell’esistenza di un exploit pubblicato da un ricercatore sulla piattaforma Github.

L’exploit sfrutta due vulnerabilità presenti in Mozilla Firefox:

  • CVE-2019-9810: Informazioni alias errate nel compilatore JIT IonMonkey per il metodo Array.prototype.slice possono portare a un controllo dei limiti mancante e a un overflow del buffer.
  • CVE-2019-11708: Il controllo insufficiente dei parametri passati con il messaggio “Prompt: Apri messaggio IPC” tra processi parent e child può comportare che il processo parent apra il contenuto Web passato da un processo child compromesso. Se combinato con ulteriori vulnerabilità, ciò potrebbe comportare l’esecuzione di codice arbitrario sul computer dell’utente.

Si tratta in questo caso di una catena di exploit in grado di sfruttare entrambe le vulnerabilità del browser (CVE-2019-11708 e CVE-2019-9810). Il PoC è destinato, al momento, a Firefox su Windows a 64 bit.

Utilizza il CVE-2019-9810 per ottenere l’esecuzione del codice sia nel processo di contenuto (child) che nel processo parent e CVE-2019-11708 per ingannare il processo parent nella navigazione verso un URL arbitrario.

Versioni di Firefox interessate dalle vulnerabilità

# CVE VERSIONE
CVE-2019-9810
  • Firefox vers. 66.0.1 e precedenti
  • Firefox ESR vers. 60.6.1 e precedenti
CVE-2019-11708
  • Firefox ESR vers. 60.7.2 e precedenti
  • Firefox vers. 67.0.4 e precedenti

Modalità di esecuzione

Il bug consente di ricavare un limite di controllo ridondante e ottimizzato per consentire al codice di generare un out-of-bounds della memoria. Il problema stesso risiede nel passaggio Alias Analysis della pipeline di Ion (cfr. CVE-2019-9810 ).

L’exploit è stato testato su Windows a 64 bit utilizzando una build personalizzata di Firefox. Inoltre per verificare l’exploit è necessario che il supporto per BigInt sia attivato nella configurazione generale del browser.

Nella ricerca vengono evidenziati i vari passaggi per prendere il controllo del browser:

  1. L’exploit utilizza CVE-2019-9810 per eseguire la compromissione dei dati e aggiorna la pagina corrente.
  2. Una volta che è in grado di eseguire JS con privilegi amministrativi, trova il message-manager del frame corrente e attiva CVE-2019-11708.
  3. Ora che il processo parent ha visitato la pagina arbitraria, viene sfruttata di nuovo CVE-2019-9810 per ottenere l’esecuzione JavaScript con privilegi superiori.
  4. A questo punto l’intero browser (sandbox inclusa) è compromesso. Nel PoC, viene scaricato un payload in locale denominato slimeshady.exe che disegna un gruppo di gif animate desktop con sfruttando GDI.
  5. L’exploit inoltre rilascia e inietta uno script in grado di controllare la navigazione di tutte le schede (già aperte e/o nuove).

Conclusioni

Per poter verificare l’exploit è necessario comunque compilare il payload e creare una build dedicata di Firefox. Il vendor ha provveduto a sanare la vulnerabilità come anche indicato nel bollettino rilasciato da Mozilla Foundation.

Sebbene il rischio sembrerebbe mitigato, il CERT-PA raccomanda di tenere aggiornati i sistemi operativi e i rispettivi browser all’ultima versione. Per quanto riguarda Firefox si rimanda alla news emessa la scorsa settimana.