Come può un moderno sistema Windows / Linux essere compromesso da un overflow di heap in Chrome?

3

L'articolo di Wikipedia su Overflow heap afferma:

there are primarily three ways to protect against heap overflows. Several modern operating systems such as Windows and Linux provide some implementation of all three.

  • Prevent execution of the payload by separating the code and data, typically with hardware features such as NX-bit on modern systems.
  • Introduce randomization such that the heap is not found at a fixed offset.
  • Introduce sanity checks into the heap manager.

Con queste protezioni in atto, come potrebbe verificarsi un exploit scoperto di recente tramite overflow di heap nel lettore PDF di Chrome?

By simply viewing a PDF document that includes an embedded jpeg2000 image, the attacker can achieve arbitrary code execution on the victim’s system

Fonte: Vulnerabilità PDFium nel browser Web di Google Chrome

    
posta Protector one 13.06.2016 - 11:00
fonte

1 risposta

1

Qui, la vulnerabilità non parla di alcuni programmi in esecuzione sul tuo computer. Il problema è che i dati vengono sovrascritti nel posto sbagliato. Puoi trovare i dettagli della vulnerabilità qui: link

Come menzionato nella pagina web:

If in the above call to opj_calloc, which is a calloc wrapper, numcomps value happens to be zero, calloc will return a unique pointer which can be later passed to free (this is implementation dependent, but is so on modern Linux OSes). The unique pointer returned by calloc will usually be a small allocation (0x20 bytes in case of x64 code). This can lead to a heap buffer overflow later in the code when this buffer is being used.

In the above code, l_tccp pointer will be pointing to the previously erroneously allocated area. The same structure is dereferenced during further out of bounds writes in the following code.
enter image description here

Poiché scrivere in memoria di proprietà di un programma è un processo valido, un sistema operativo non può bloccare il processo sopra menzionato.

  • Prevent execution of the payload by separating the code and data, typically with hardware features such as NX-bit on modern systems.

Questo non funziona perché non esiste l'esecuzione di un payload qui.

  • Introduce randomization such that the heap is not found at a fixed offset.
  • Introduce sanity checks into the heap manager.

Stiamo recuperando esplicitamente il percorso da leggere / scrivere e quindi la randomizzazione non funzionerà qui. Questo è un semplice caso di mancato controllo di sanità mentale.

Inoltre, come menzionato nella pagina web, il sistema di build di Chrome aveva già una soluzione per questo, ma non nella build corretta. Il bug è stato corretto ora.

    
risposta data 13.06.2016 - 11:45
fonte

Leggi altre domande sui tag