Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-21220 — Presentazione educativa che descrive lo sfruttamento di CVE-2021-21220, un bug di confusione di tipo del compilatore JIT V8 che porta ad accesso fuori dai limiti, lettura/scrittura arbitraria della memoria ed esecuzione remota di codice tramite WebAssembly. | Kitploit
Strumenti/GitHubGitHub/borahll/cve-2021-21220
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPaper e RicercaApprendimento e FormazioneBinary Exploitation
GitHubborahll/cve-2021-21220

CVE-2021-21220

Presentazione educativa che descrive lo sfruttamento di CVE-2021-21220, un bug di confusione di tipo del compilatore JIT V8 che porta ad accesso fuori dai limiti, lettura/scrittura arbitraria della memoria ed esecuzione remota di codice tramite WebAssembly.

Vedi Repository
3 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Sfruttamento di CVE-2021-21220

Da un comportamento JIT errato all'esecuzione remota di codice

Panoramica

Questa presentazione spiega lo sfruttamento di CVE-2021-21220, una vulnerabilità nel motore JavaScript V8 di Google Chrome causata da ipotesi errate del compilatore JIT durante l'ottimizzazione.

La presentazione illustra:

  • Come V8 esegue la compilazione Just-In-Time (JIT)
  • Come un bug di confusione tra tipi signed/unsigned si manifesta durante l'ottimizzazione
  • Come il bug porta a una primitiva array out-of-bounds (OOB)
  • Come gli attaccanti possono sfruttare l'accesso OOB per divulgare indirizzi e ottenere scritture arbitrarie in memoria
  • Come WebAssembly (Wasm) diventa un bersaglio per l'esecuzione di codice nativo
  • Mitigazioni esistenti e difese dei browser moderni

Obiettivi della Presentazione

L'obiettivo di questa presentazione è dimostrare come un sottile errore di ottimizzazione all'interno di un moderno motore JavaScript possa degenerare in:

  • Corruzione della memoria
  • Primitive di lettura/scrittura arbitraria
  • Modifica del codice nativo
  • Potenziale esecuzione remota di codice (RCE)

La catena di exploit evidenzia come i motori JIT bilancino prestazioni e sicurezza, e come ipotesi di ottimizzazione errate possano diventare sfruttabili.


Argomenti Trattati

1. Architettura di V8

La presentazione introduce i principali componenti di V8:

Interprete Ignition

  • Esegue bytecode JavaScript
  • Raccoglie feedback a runtime
  • Memorizza le informazioni sui tipi nei vettori di feedback

Ottimizzatore TurboFan

  • Costruisce grafi ottimizzati a partire dal feedback a runtime
  • Inserisce ipotesi speculative e guardie
  • Esegue passaggi di ottimizzazione aggressivi

Backend del codice macchina

  • Emette istruzioni native della CPU
  • Produce codice macchina ottimizzato per le funzioni "calde"

Il diagramma architetturale nella presentazione illustra come JavaScript si sposta da:

root@kitploit:~
Parsing → Bytecode → Ottimizzazione → Esecuzione

2. Perché JavaScript è Difficile da Ottimizzare

JavaScript è impegnativo per l'esecuzione ad alte prestazioni perché:

  • Le variabili cambiano tipo dinamicamente
  • Gli array cambiano struttura e tipi di elementi
  • Operatori come + possono avere molteplici significati
  • I controlli a runtime sono costosi

V8 utilizza la compilazione JIT per ottimizzare i pattern di esecuzione comuni speculando sul comportamento a runtime.


3. Causa Principale di CVE-2021-21220

La vulnerabilità ha origine da una discrepanza tra interi con e senza segno durante l'ottimizzazione JIT.

Concetti chiave dimostrati:

  • Uint32Array
  • Word32Xor
  • Propagazione errata del tipo
  • ChangeInt32ToInt64
  • Selezione errata dell'istruzione assembly

L'exploit abusa del valore:

root@kitploit:~
0x80000000

che imposta il bit di segno di un intero a 32 bit.


4. Discrepanza di Ottimizzazione

La vulnerabilità si verifica perché TurboFan ottimizza:

root@kitploit:~
x ^ 0

eliminandola completamente.

Durante questa ottimizzazione:

  • L'operazione XOR scompare
  • Le informazioni sul tipo vengono perse
  • I valori con segno vengono interpretati come senza segno
  • Il comportamento JIT diverge dal comportamento dell'interprete

Ciò comporta una generazione errata del codice macchina e valori controllati dall'attaccante.


5. Costruzione di una Primitiva OOB

L'exploit converte il risultato JIT errato in controllo sul comportamento dell'array.

La presentazione dimostra:

  1. Valore intero ottimizzato errato
  2. Conversione in variabile di controllo i
  3. Discrepanza tra esecuzione di warmup e trigger
  4. Underflow della lunghezza di Array.shift()
  5. Creazione di un array con capacità OOB

Importanti concetti di exploit mostrati:

  • Ottimizzazione di warmup
  • Ottimizzazione speculativa
  • Confusione di tipo
  • Corruzione della lunghezza dell'array

6. Accesso Fuori dai Limiti

Una volta che la lunghezza dell'array diventa -1, l'attaccante ottiene:

  • Letture fuori dai limiti
  • Scritture fuori dai limiti
  • Accesso agli oggetti heap V8 adiacenti

L'exploit dimostra quindi:

  • Divulgazione di puntatori
  • Scoperta degli indirizzi degli oggetti
  • Sovrapposizione di array
  • Estrazione di puntatori V8 grezzi

7. Abuso di WebAssembly

La presentazione spiega come gli attaccanti possono prendere di mira:

  • Pagine di codice compilato di WebAssembly
  • Memoria eseguibile nativa generata da V8

Flusso dell'attacco:

  1. Creare una funzione Wasm
  2. Localizzare la memoria eseguibile
  3. Sovrascrivere il codice macchina compilato
  4. Rieseguire Wasm
  5. Ottenere esecuzione nativa arbitraria

Questo dimostra come un bug del motore JavaScript possa transitare verso l'esecuzione di codice a livello di processo.


Difese e Mitigazioni

L'ultima sezione copre le difese dei browser moderni:

Puntatori Compressi

Riduce l'esposizione diretta dei puntatori e la prevedibilità dell'heap.

Indirezione dei Puntatori

Impedisce l'accesso diretto agli indirizzi di memoria grezzi.

Sandboxing dell'Heap

Isola le regioni di memoria e riduce l'impatto dell'exploit.

W^X (Write XOR Execute)

Impedisce che le pagine siano scrivibili ed eseguibili simultaneamente.

La presentazione include anche il diff della patch V8 effettiva che mostra la correzione per il problema dell'estensione del segno.


Punti Chiave

Questa presentazione dimostra come:

  • Piccoli errori di ottimizzazione possano diventare vulnerabilità critiche
  • I compilatori JIT aumentino significativamente la complessità della superficie d'attacco
  • La speculazione a runtime possa introdurre pericolose inconsistenze
  • WebAssembly cambi il panorama dello sfruttamento
  • I browser moderni richiedano molteplici livelli di difesa

Tecnologie Discusse

  • JavaScript
  • Motore Google V8
  • TurboFan
  • Ignition
  • WebAssembly (Wasm)
  • Compilazione JIT
  • Corruzione della memoria
  • Accesso fuori dai limiti
  • Sfruttamento dei browser

Scopo Educativo

Questo materiale è destinato esclusivamente a:

  • Ricerca sulla sicurezza
  • Dimostrazioni educative
  • Apprendimento dei meccanismi interni dei browser
  • Analisi delle vulnerabilità

Non utilizzare queste informazioni contro sistemi di cui non sei proprietario o per i quali non hai autorizzazione per il test.


Riferimenti

  • CVE-2021-21220
  • Motore Google Chrome V8
  • Meccanismi interni del compilatore TurboFan
  • Sicurezza runtime di WebAssembly
  • https://www.zerodayinitiative.com/blog/2021/12/15/exploitation-of-cve-2021-21220-from-incorrect-jit-behavior-to-rce
  • https://www.zerodayinitiative.com/blog/2021/12/8/understanding-the-root-cause-of-cve-2021-21220-a-chrome-bug-from-pwn2own-2021
  • https://www.zerodayinitiative.com/blog/2021/12/8/understanding-the-root-cause-of-cve-2021-21220-a-chrome-bug-from-pwn2own-2021
Scarica lo strumento