Google Chrome voegt V8 Sandbox toe

Google heeft ondersteuning aangekondigd voor wat een wordt genoemd V8-zandbak in de Chrome-webbrowser in een poging om problemen met geheugenbeschadiging aan te pakken.

De sandbox is volgens Samuel Groß, technisch hoofd van V8 Security, bedoeld om te voorkomen dat “geheugenbeschadiging in V8 zich verspreidt binnen het hostproces.”

De zoekgigant heeft V8 Sandbox beschreven als een lichtgewicht, in-process sandbox voor de JavaScript- en WebAssembly-engine die is ontworpen om veelvoorkomende V8-kwetsbaarheden te verminderen.

Het idee is om de impact van V8-kwetsbaarheden te beperken door de door V8 uitgevoerde code te beperken tot een subset van de virtuele adresruimte van het proces (“de sandbox”) en deze te isoleren van de rest van het proces.

Cyberbeveiliging

Tekortkomingen met betrekking tot V8 zijn verantwoordelijk voor een aanzienlijk deel van de zero-day-kwetsbaarheden die Google tussen 2021 en 2023 heeft aangepakt, waarbij in de loop van de periode maar liefst zestien beveiligingsfouten zijn ontdekt.

“De sandbox gaat ervan uit dat een aanvaller willekeurig en gelijktijdig elk geheugen in de adresruimte van de sandbox kan wijzigen, aangezien deze primitief kan worden opgebouwd uit typische V8-kwetsbaarheden”, aldus het Chromium-team.

“Verder wordt ervan uitgegaan dat een aanvaller in staat zal zijn om het geheugen buiten de sandbox te lezen, bijvoorbeeld via hardware-zijkanalen. De sandbox heeft dan tot doel de rest van het proces tegen zo’n aanvaller te beschermen. geheugen buiten de sandbox-adresruimte wordt beschouwd als een sandbox-schending.”

Groß benadrukte de uitdagingen bij het aanpakken van V8-kwetsbaarheden door over te schakelen naar een geheugenveilige taal zoals Rust of hardware-geheugenveiligheidsbenaderingen, zoals geheugentagging, gezien de “subtiele logische problemen” die kunnen worden uitgebuit om het geheugen te corrumperen, in tegenstelling tot klassieke geheugenveiligheidsbugs zoals use-after-frees, out-of-bounds-toegangen en andere.

Chrome V8-sandbox

“Bijna alle kwetsbaarheden die tegenwoordig in V8 worden gevonden en uitgebuit, hebben één ding gemeen: de uiteindelijke geheugenbeschadiging vindt noodzakelijkerwijs plaats binnen de V8-heap, omdat de compiler en runtime (bijna) uitsluitend op V8 HeapObject-instanties werken”, aldus Groß.

Aangezien deze problemen niet kunnen worden beschermd door dezelfde technieken die worden gebruikt voor typische kwetsbaarheden op het gebied van geheugencorruptie, is de V8 Sandbox ontworpen om het heap-geheugen van V8 zodanig te isoleren dat, mocht er geheugencorruptie optreden, het niet kan ontsnappen aan de beveiligingsbeperkingen voor andere delen van het proces. geheugen.

Dit wordt bereikt door alle gegevenstypen die toegang hebben tot geheugen buiten de sandbox te vervangen door “sandbox-compatibele” alternatieven, waardoor effectief wordt voorkomen dat een aanvaller toegang krijgt tot ander geheugen. De sandbox kan worden ingeschakeld door “v8_enable_sandbox” in te stellen op true in de gn-args.

Benchmarkresultaten van Speedometer en JetStream laten zien dat de beveiligingsfunctie een overhead van ongeveer 1% toevoegt aan typische workloads, waardoor deze standaard kan worden ingeschakeld vanaf Chrome-versie 123, voor Android, ChromeOS, Linux, macOS en Windows.

“De V8 Sandbox vereist een 64-bit systeem omdat het een grote hoeveelheid virtuele adresruimte moet reserveren, momenteel één terabyte”, aldus Groß.

Cyberbeveiliging

“De sandbox wordt gemotiveerd door het feit dat de huidige geheugenveiligheidstechnologieën grotendeels niet toepasbaar zijn op het optimaliseren van JavaScript-engines. Hoewel deze technologieën er niet in slagen geheugencorruptie in V8 zelf te voorkomen, kunnen ze wel het aanvalsoppervlak van de V8 Sandbox beschermen. De sandbox is daarom een ​​noodzakelijk stap richting geheugenveiligheid.”

De ontwikkeling komt op het moment dat Google de rol van Kernel Address Sanitizer (KASan) benadrukte bij het detecteren van geheugenbugs in native code en het helpen versterken van de beveiliging van Android-firmware, door eraan toe te voegen dat het de compiler-gebaseerde tool gebruikte voor het ontdekken van meer dan 40 bugs.

“Het gebruik van KASan-compatibele builds tijdens het testen en/of fuzzen kan helpen kwetsbaarheden voor geheugenbeschadiging en stabiliteitsproblemen op te sporen voordat ze op gebruikersapparaten terechtkomen”, aldus Eugene Rodionov en Ivan Lozano van het Android-team.

Thijs Van der Does