Google ha recentemente reso noto di aver introdotto il supporto per un elemento denominato Sandbox V8 all'interno del browser Chrome. Tale sandbox, come spiega il responsabile tecnico della sicurezza V8, Samuel Groß, è stato progettato per prevenire la diffusione della corruzione della memoria all'interno del processo principale.
Google definisce V8 Sandbox come un sandbox "interno al processo" e leggero per il motore JavaScript e WebAssembly, creato per contrastare le comuni vulnerabilità del V8. Il loro piano è minimizzare l'effetto delle vulnerabilità del V8 limitando il codice eseguito da quest'ultimo a una sotto-sezione dello spazio degli indirizzi virtuali del processo (detto "sandbox") e isolandolo dal resto del processo.
Tra il 2021 e il 2023, i difetti riscontrati nel V8 costituirono una significativa porzione delle vulnerabilità zero-day che Google si trovò ad affrontare, totalizzando 16 problemi di sicurezza individuati durante tale periodo. Il team di Chromium spiega: "
La sandbox presuppone che un utente malintenzionato possa modificare arbitrariamente e contemporaneamente qualsiasi memoria all'interno dello spazio degli indirizzi della sandbox poiché questa primitiva può essere costruita a partire dalle tipiche vulnerabilità V8."Secondo Groß, affrontare le vulnerabilità del V8 passando a un linguaggio sicuro per la memoria come Rust o ad approcci di sicurezza della memoria hardware, come il tagging della memoria, presenta delle sfide. Questo a causa dei "sottili problemi logici" che possono essere usati per danneggiare la memoria, distinguendosi dai classici bug di sicurezza della memoria come accessi non consentiti, accessi fuori limite e altri.
Il V8 Sandbox è quindi progettato per isolare la memoria heap del V8 in modo tale da prevenire una possibile fuga di corruzione della memoria verso altre parti del processo. A tal fine, vengono sostituite tutte le forme di dati che possono accedere alla memoria esterna al sandbox con alternative "compatibili con il sandbox", evitando così che un utente malintenzionato possa accedere ad altra memoria.
Il V8 Sandbox può essere abilitato impostando "v8_enable_sandbox" su true negli argomenti gn. I resultati dei benchmark di Speedometer e JetStream indicano che la funzione di sicurezza porta un sovraccarico di circa l'1% sulle normali operazioni, permettendone l'attivazione di default a partire dalla versione 123 di Chrome, su Android, ChromeOS, Linux, macOS e Windows.
L'implementazione di questa opera di miglioramento della sicurezza arriva nel momento in cui Google ha messo in luce l'importanza del Kernel Address Sanitizer nel rilevare bug di memoria nel codice nativo, contribuendo in tal modo a rafforzare la sicurezza del firmware Android. Hanno dichiarato inoltre di aver utilizzato questo strumento basato sul compilatore per rivelare più di 40 bug.