[invisible iframe]Delete AccountClick to Win!click lands on iframe behind decoy

Clickjacking

10 min olvasniBiztonság

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.
A Clickjacking magyarázata: A felhasználói felület trükkje, amely arra készteti, hogy arra kattintson, amit nem lát