
Hogyan működik a támadás?
A háttérben egy kevésbé ismert tényező áll: az SVG-szűrők képesek információt átszivárogtatni különböző webes eredetek között, megszegve ezzel az internet egyik legfontosabb biztonsági alapelvét. Normális esetben az ilyen támadásokat ellensúlyozzák az X-Frame-Options vagy a Content Security Policy beállításai, de sok webhely – például a Google Docs – nem tiltja a keretbeágyazást, mert harmadik feles beágyazásokra, például térképek, videók vagy akár fizetési rendszerek esetén szükség van rájuk.
Rebane próbálta utánozni az Apple Liquid Glass látványeffektjét SVG-vel és CSS-sel, és eközben vette észre, hogy ha ezt iframe-ben helyezi el, hozzáfér az alatta lévő főoldal pixeleihez. Ez a felfedezés kulcsfontosságú: képes volt olyan logikai kapukat (AND, OR, NOT stb.) létrehozni, amelyekkel a weboldal pixelei feldolgozhatók, megkerülve a JavaScript-alapú korábbi támadási mintákat.
Láthatatlan kapuk és a felfedett dokumentumok
A támadáshoz nem kell jogosulatlan JavaScriptet futtatni, amit a modern tartalombiztonsági politikák amúgy is megakadályoznának. A CSS egyfajta programozási nyelvként is használható, különösen az SVG-alapú clickjacking-támadásokhoz. Rebane példaként mutatta be, hogyan lehet vele adatot kicsempészni Google Docs-ból: a támadó elhelyez egy „Dokumentum létrehozása” gombot egy felugró ablakban, majd egy CAPTCHA-mezőt jelenít meg, ahol az áldozat adatot gépel be, végül a létrejött fájl nevét egy rejtett mezőbe menti.
Ez a technika kihasználja, hogy sok népszerű szolgáltatás – például a YouTube, a Vimeo, fizetési szolgáltatók, komment- vagy hirdetési mezők – megengedik, hogy iframe-ekben futhassanak, vagyis könnyen támadhatók, különösen, ha hiányoznak az alapvető védekezési fejlécek.
Van megoldás?
A fejlesztőknek továbbra is oda kell figyelniük: a frame-ancestors és az X-Frame-Options használata, vagy speciális érzékelők beépítése szükséges, amelyek észreveszik, ha egy SVG-szűrő takarja le az iframe-et. Rebane szerint a hibára 3 133,70 USD-t (kb. 1,1 millió forintot) fizetett a Google sebezhetőségi díjként, de még mindig nincs végleges javítás. Egyes böngészőkön (például Firefoxon) is előfordul a probléma, de az is lehet, hogy nem böngészőhiba, hanem inkább tervezési kérdés.
A történet tanulsága: a webes támadók folyamatosan új utat keresnek, a fejlesztőknek pedig nemcsak a JavaScriptre kell figyelniük – a CSS és az SVG is komoly veszélyforrás lehet.
