Cloudflare zakrpio Spectre propust u Workers izolaciji

Istraživači su demonstrirali udaljeni Spectre napad na Cloudflare Workers kojim je iz ko-lociranog Worker-a u produkcionom okruženju izvučen JSON Web Token (JWT) brzinom do 12 bita u sekundi, uz tačnost od 99,16%. Eksperiment je koristio napadački i ciljni Worker pod kontrolom istraživača, a JWT je namerno smešten u memoriju ciljnog procesa. Cloudflare navodi da je problem već ublažen u produkciji i da nisu pristupani podaci korisnika.
Prijavljena brzina je 360 puta veća od ranije demonstracije iz 2021. godine, kada je curenje iznosilo 120 bita na sat, odnosno 2 bita u minuti. Merenja su obavljena na Linux serverima sa AMD EPYC Zen 2 i Zen 3 procesorima, noću, pri zauzeću procesora između 10% i 25%. Veće opterećenje umanjuje brzinu curenja, ali istraživači navode da sporiji napadi ostaju mogući i tada.
Kako su izolati završili u istom napadnom scenariju
Workers izvršava kod više zakupaca u zasebnim V8 izolatima unutar istog procesa operativnog sistema. Taj pristup smanjuje kašnjenje pri pokretanju, ali čitanje memorije u deljenom procesu može stvoriti put do curenja podataka između zakupaca. Napad zahteva da se napadački i ciljni Worker nađu u istom procesu, pri čemu napadač kontroliše ispravan kod u sopstvenom izolatu.
Scenarijo ne podrazumeva izvršavanje nativnog koda, V8 softverski propust niti izlazak iz sandbox-a. Workers ograničava lokalne izvore vremena, ne izlaže deljenu memoriju niti višestruko izvršavanje niti skriptama. Ipak, istraživači su pokazali da WebSocket komunikacija može poslužiti kao udaljeni izvor vremena, dok Durable Objects mogu održavati jedan izolat aktivnim od pet do više od 20 sati.
Ograničenja postojeće odbrane
DyPrIs odvaja sumnjive skripte u poseban proces po završetku poziva. Istraživači su utvrdili da dugotrajni poziv Durable Object-a može nastaviti da radi pre nego što se ta izolacija aktivira. Takođe su zaključili da intenzivan WebSocket I/O povećava aktivnost iTLB-a i spušta normalizovani signal pogrešnih predviđanja grananja ispod praga za detekciju.
Cloudflare je to opisao kao ograničenje implementacije DyPrIs-a, dok rad istraživača problem povezuje sa ograničenjima samog pristupa detekciji. Poređenje sa drugim aktuelnim rizicima, uključujući aktuelnim rizicima višezakupne izolacije, pokazuje da se granice izolacije ne smeju posmatrati samo kroz jedan sloj zaštite.
Uvedene mere i poslovni zaključak
Cloudflare je unapredio DyPrIs, integrisao V8 Sandbox i uveo izolaciju unutar procesa zasnovanu na Memory Protection Keys (MPK). V8 Sandbox ograničava prolazni pristup 64-bitnim pokazivačima, a MPK postavlja memorijske gomile Worker-a iza hardverski sprovedenih zaštitnih ključeva. Kompanija navodi da savremeni x64 sistemi za ovu namenu ostavljaju približno 12 ključeva, uz rotirajući raspored memorije koji sprečava da susedni sandbox-i dele ključ.
Za poslovne timove, slučaj potvrđuje potrebu da pri izboru višezakupnih izvršnih platformi prate način izolacije, trajanje izvršavanja i ponašanje odbrane pri intenzivnom I/O saobraćaju. Važno je i pravovremeno primenjivati mere koje provajder objavi, jer zaštita zasnovana na više slojeva smanjuje posledice pojedinačnog propusta.

