L'implementazione sandbox nel motore JavaScript V8 di Google è abbastanza matura da non essere più considerata una funzionalità sperimentale. Gli sviluppatori V8 ne scrivono nel loro blog e sottolineano che il sandboxing ora fa anche parte del “Vulnerability Bounty Program” di Chrome. I ricercatori di sicurezza che scoprono vulnerabilità sandbox possono ora ricevere una ricompensa finanziaria da Google.
annuncio
Il sandbox V8 è attivo nelle versioni Chrome a 64 bit per i normali sistemi operativi a partire dalla versione 103 del browser, cioè da circa due anni. Ma finora è stato visto come un meccanismo di protezione sperimentale in cui si prevedono ancora delle scappatoie. Includendolo nel programma di ricompensa delle vulnerabilità, la funzionalità viene abilitata e l'attuale versione 123 di Chrome diventa una versione beta del sandbox V8, spiegano gli sviluppatori.
Nessun indicatore, per favore
La sandbox include un'area della memoria del motore V8 chiamata “heap” e generalmente funziona non consentendo puntatori regolari: gli oggetti nella sandbox non possono fare riferimento direttamente ad altri oggetti. È necessario utilizzare un “puntatore compresso”, che è solo un offset e non può puntare alla memoria all'esterno della sandbox, oppure utilizzare un riferimento indiretto tramite la tabella dei puntatori. La tabella contiene anche informazioni sul tipo e può essere utilizzata per verificare se un riferimento è legittimo o meno.
I calcoli dello spostamento, in particolare le direzioni indirette, influiscono sulle prestazioni, ma solo leggermente. Gli sviluppatori indicano una perdita di prestazioni tipica di circa l'1%, che vale ampiamente i vantaggi di sicurezza sperati dal sandbox, soprattutto perché è difficile da ottenere con altre misure. Le lacune note nella V8 spesso non dipendono direttamente dai classici errori di accesso alla memoria ma, ad esempio, da errori logici nel compilatore just-in-time. Solo allora si verificano errori di accesso, solitamente nell'heap.
La sandbox può anche rilevare errori di accesso che si verificano indirettamente, mentre in questi casi altre misure usuali non funzionano. Ad esempio, le garanzie di un linguaggio “memory-safe” come Rust sono inutili quando ci sono errori logici nel compilatore. In Condividi il suo blog Gli sviluppatori spiegano dettagliatamente come funziona il sandbox V8 e perché altre contromisure come il “memory tagging” non funzionano bene nel caso specifico del motore JavaScript.
Tuttavia, nell’attuale sandbox esistono ancora alcuni problemi e sono disponibili ricompense per le vulnerabilità Condizioni speciali collegamento. Tuttavia, le vulnerabilità Sandbox finora scoperte sono tradizionali errori di accesso che possono anche esporre ad altre misure preventive. In definitiva, impedire la fuga dalla sandbox dovrebbe essere più semplice che impedire la fuga dal V8 stesso. Almeno questa è la speranza degli sviluppatori.
(impostato)
“Esperto di birra per tutta la vita. Appassionato di viaggi in generale. Appassionato di social media. Esperto di zombi. Comunicatore.”