Clickjacking
A Clickjacking az a támadás, amikor egy rosszindulatú oldal egy láthatatlan iframe-et fed le a csaló tartalomra. A felhasználó azt hiszi, hogy egy csábító gombra kattint; valójában egy másik webhelyet tartalmazó rejtett keretbe kattintanak. A klasszikus eset miatt a felhasználók olyan Facebook-oldalakat "lájkoltak", amelyeket soha nem láttak. A modern változatok fizetéseket és számlamódosításokat lopnak.
A cikk teljes szövege alább olvasható angol nyelven.
Clickjacking (más néven UI redress vagy keretezési támadás) ráveszi a felhasználókat, hogy valami másra kattintsanak, mint amit látnak. A támadó betölti a célhelyet egy láthatatlan iframe-be, elhelyezi egy csali felületre, és vár. A felhasználó rákattint a látható csalira; a kattintás a rejtett iframe-en landol; a céloldal normál interakciót lát a felhasználó részéről.
A klasszikus példa
2008: A kutatók bemutatták, hogy a Facebook láthatatlan "Tetszik" gombjait vonzó csalitartalomra helyezték ("Kattintson ide, ha iPadet nyer!"). A felhasználók rákattintottak a csalira; böngészőjük csendben lájkolta a támadó Facebook-oldalát. A kedvelések hitelesek voltak – a felhasználó bejelentkezett a Facebookra, a böngésző normál cookie-kat küldött, a Facebook valódi hitelesített kattintást látott.
Ugyanez a minta működik minden felhasználói felületi műveletnél: beállítások módosítása, OAuth-engedélyek megadása, pénzátutalások, vásárlások megerősítése. Bárhol, ahol egy bejelentkezett felhasználó megtehet valamit egyetlen kattintással, a clickjacking potenciálisan arra készteti őket, hogy észrevegyék.
A mechanika
A klasszikus megvalósítás:
iframe { opacity: 0; position: absolute; top: 100px; left: 100px; }
Az iframe pontosan a csábító gomb képe fölött helyezkedik el, de nulla átlátszatlansággal jelenik meg. A felhasználó látja a képet; a kattintás átmegy az iframe-be. A CSS-pozicionálás lehetővé teszi a támadó számára a koordináták finomhangolását, hogy a kattintás egy adott gombra kerüljön a keretezett oldalon belül.
Defenses
Két fő mechanizmus:
- X-Frame-Options iframe-ekbe ágyazva. Értékek: DENY (soha nem keret), SAMEORIGIN (csak ugyanazon webhely keretezése), ALLOW-FROM
(elavult). Széles körben támogatott, egyszerűen telepíthető. - Tartalombiztonsági házirend: keret-elődök direktívája. A modern csere.
Content-Security-Policy: keret-elődök 'nincs'vagy'self'vagy meghatározott eredet. Rugalmasabb, mint az X-Frame-Options.
A fejléc (vagy mindkettő) a szabványos védelem. A nélkülük lévő webhelyek keretezéssel sebezhetőek.
Változatok és szövődmények
- Cursorjacking. CSS-trükkök, amelyek eltérítik a látható kurzort a tényleges kattintási céltól. A modern böngészők nagyrészt kijavították, de történelmileg valóságos.
- Billentyűs bemenet. Hasonló koncepció a billentyűzet beviteléhez – a fókusz egy láthatatlan iframe-en van.
- Húzd és vidd keretezés. A tartalom rejtett, áthúzható keretben van. hitelesítő adatok vagy adatok.
- Multi-click setups. Egyes támadások esetén a felhasználónak több meghatározott pontra kell kattintania; csalók sorozata átcsábítja a felhasználót a teljes folyamon.
- Touch alapú kattintás a mobilon. A koppintási célpontok nagyobbak és könnyebben eltakarhatók; a mobilböngészők réteges védelemmel rendelkeznek, de a felszín megmarad.
Mit érhet el a kattintástörés?
- Közösségi fiókok kedvelése/követése
- OAuth-engedélyek engedélyezése (támadó alkalmazásoknak hozzáférés biztosítása az adatokhoz (jelszó hozzáférés biztosítása a támadó alkalmazások számára az adatokhoz2XX) helyreállítás)
- Vásárlások vagy átutalások megerősítése
- Kamera-/mikrofonengedély megadása webes alkalmazásokhoz
- Mélyhivatkozású műveletek engedélyezése a csatlakoztatott szolgáltatásoknál
A támadás azon alapul, hogy a felhasználó rákattint a célpontra, és be van jelentkezve. A kár mértéke attól függ, hogy egy kattintás milyen hatással lehet a célpontra.
Sandboxos iframe-ek és a modern web
A modern webplatformok számos olyan funkciót tartalmaznak, amelyek megnehezítik a kattintáseltörést:
- Keresztező-eredetű sorozás0PLX összefüggések
- Engedélyek Az API kifejezett felszólításokat igényel az érzékeny műveletekhez (kamera, mikrofon stb.)
- Szükséges felhasználói gesztus – sok nagy hatású API-k legyőzése a felhasználói válaszra (vágólap írása, csak teljes képernyőn működik, felugró ablakban) overlay
A széles körben elterjedt X-Frame-Opciókkal és CSP-keret-elődökkel kombinálva a klasszikus kattintásfeltörés a jól konfigurált webhelyeken sokkal nehezebb, mint egy évtizeddel ezelőtt. A kategória ritkább, de nem halt ki.
Fejlesztők számára
- Állítson be keret-elődöket vagy X-Frame-Options-t minden hitelesített oldalon
- A beágyazásbarát oldalak (videók, widgetek) esetén legyen pontos az engedélyezett szülőkre vonatkozóan
- Ki kell erősíteni a hitelesítést a kritikus műveleteknél (jelszótól7PLXU) az Origin fejléc az embedsből jogszerűen működő műveletek keretezési forrásának ellenőrzésére
Felhasználóknak
Nem lehet könnyen észlelni a kliensoldali kattintáseltörést – ez a lényeg. A védelem szerveroldali. Az általános higiénia segít: ne maradjon bejelentkezve olyan fiókokba, amelyekben nem kell lennie, jelentkezzen ki az érzékeny szolgáltatásokból, ha végzett, legyen óvatos az ismeretlen oldalakkal, amelyek túl szép, hogy igaz legyen ajánlatokat.
Gyakran ismételt kérdések
- A hirdetésblokkoló segít a kattintástörés ellen?
- Részben – egyes hirdetésblokkolók eltávolítják az iframe-eket a gyanús forrásokból. A jogszerűen feltört webhelyen történő kattintástörést nem blokkoljuk. A megbízható védelem szerveroldali (keret-elődök), nem pedig kliensoldali szűrés.
- Sebezhetőek-e a mobilalkalmazások a kattintáseltöréssel szemben?
- Kevésbé, mint az interneten, mert a mobil UI nem rendelkezik ugyanazzal a fedvény mechanikával. Léteznek mobil megfelelői ("koppintás" Androidon fedvényengedélyeken keresztül), de az operációs rendszer fokozatosan zárolta őket. A modern Android kifejezetten felhasználói engedélyt igényel a SYSTEM_ALERT_WINDOW fedvényengedélyhez.
- Miért hívják a támadást "jacking"-nek?
- A portmanteau "click-jacking"-et Jeremiah Grossman és Robert Hansen alkotta meg 2008-ban. Ez rögzíti a támadók jogos kattintásainak eltérítését.
- Hogyan ellenőrizhetem, hogy egy webhely lehetővé teszi-e a keretezést?
- Próbálja meg betölteni egy iframe-be fejlesztői eszközökön vagy egy egyszerű HTML-oldalon keresztül. Ha az oldal az iframe-en belül töltődik be, akkor hiányoznak róla a keretvédő fejlécek, és a kattintástörés miatt sebezhető lehet. Sok biztonsági szkenner ezt automatikusan ellenőrzi.
- A kattintástörés okozott komoly incidenseket a közelmúltban?
- Kevesebb, mint a 2008–2015-ös csúcs idején, de a bug bounty platformok még mindig látnak kattintási jelentéseket a kisebb webhelyeken. A nagyobb webhelyek általában megfelelő fejlécekkel rendelkeznek. Kevésbé karbantartott adminisztrátori felületeken, belső eszközökön és a régi SaaS-en jelennek meg a kattintáseltörő felületek.