Clickjacking — foydalanuvchini ko‘rinayotgan elementdan boshqa yashirin yoki ustma-ust joylashtirilgan elementni bosishga majbur qiladigan web hujumi. Hujumchi qonuniy sahifani iframe ichida ko‘rsatib, uning ustiga shaffof yoki chalg‘ituvchi interfeys joylashtirishi mumkin.
Foydalanuvchi oddiy tugma, video yoki o‘yin elementini bosyapman deb o‘ylaydi, aslida esa hisob sozlamasini o‘zgartirish, permission berish yoki boshqa muhim amalni bajarishi mumkin.
Asosiy mexanizm
Hujum sahifasi nishon saytni frame ichida ochadi.
Keyin CSS orqali:
yordamida haqiqiy tugma foydalanuvchi ko‘rgan tugma ostiga joylashtiriladi.
Bosish hodisasi yashirin frame’ga tushadi.
UI redressing
Clickjacking UI redressing hujumlari oilasiga kiradi.
Maqsad foydalanuvchining interfeys haqidagi tasavvurini o‘zgartirish.
Hujum faqat bitta click bilan cheklanmasligi mumkin. Bir necha bosqichli form, drag-and-drop yoki touch gesture ham aldov orqali bajarilishi mumkin.
Sessiondan foydalanish
Nishon sayt frame ichida userning mavjud cookie va sessioni bilan ochilishi mumkin.
Agar user allaqachon login qilgan bo‘lsa yashirin tugma authenticated operation bajaradi.
Shu sababli attacker parolni bilmasdan ham userning aktiv sessionidan foydalanishga urinadi.
CSRF bilan farqi
CSRF attacker sahifasidan serverga soxta request yuboradi.
Clickjackingda user haqiqiy nishon sahifasidagi elementni o‘zi bosadi, ammo uning nima ekanini bilmaydi.
CSRF token requestni himoya qilishi mumkin, lekin user sahifadagi haqiqiy tokenli formani clickjacking orqali submit qilsa alohida frame himoyasi kerak.
Likejacking
Social platformdagi like, follow yoki share tugmasini yashirin joylashtirish clickjackingning oddiy turi.
User boshqa elementni bosib, bilmasdan post yoki sahifani tasdiqlaydi.
Bu reputatsiya, reklama va spam tarqalishiga xizmat qilishi mumkin.
Permission clickjacking
Browser yoki application permission dialogiga yaqin dizayn bilan userni camera, microphone, location yoki notification access berishga undash mumkin.
Browserning native dialogi to‘liq iframe ichida boshqarilmasa ham sahifa oldindan userni noto‘g‘ri harakatga tayyorlashi mumkin.
Drag-and-drop hujumi
Foydalanuvchi ko‘rinadigan obyektni sudrayapman deb o‘ylaydi.
Aslida hidden frame’dan data yoki token boshqa elementga olib o‘tilishi mumkin.
Zamonaviy browser himoyalari ayrim tarixiy variantlarni cheklagan, ammo UI redressing threat modeli saqlanadi.
X-Frame-Options
Server response header orqali sahifani frame ichida ochishni cheklashi mumkin.
Keng tarqalgan qiymatlar:
DENY— hech qanday frame’da ochilmaydi;SAMEORIGIN— faqat ayni origin frame’ida;- eski
ALLOW-FROMyondashuvi cheklangan qo‘llab-quvvatlashga ega.
Bu header clickjackingga qarshi asosiy tarixiy himoyalardan biri.
CSP frame-ancestors
Content Security Policy ichidagi frame-ancestors qoidasi sahifani qaysi originlar frame ichiga joylashtira olishini belgilaydi.
Misollar:
frame-ancestors 'none'
frame-ancestors 'self'
frame-ancestors https://trusted.example
Bu yondashuv moslashuvchan va zamonaviyroq.
Frame-busting script
Eski himoyalarda JavaScript orqali sahifa top-level oynada ekanini tekshirish ishlatilgan.
Masalan, frame ichida bo‘lsa navigatsiyani o‘zgartirish.
Bunday script:
- sandbox;
- JavaScript o‘chishi;
- race condition;
- browser farqi
sabab ishonchsiz bo‘lishi mumkin.
Header-based himoya afzal.
SameSite cookie
SameSite cookie cross-site iframe ichida session cookie yuborilishini cheklashi mumkin.
Bu ayrim clickjacking holatlarida userni login qilinmagan ko‘rsatadi.
Lekin barcha browser, cookie va same-site relationship holatlari bir xil emas.
SameSite frame policy o‘rnini to‘liq bosmaydi.
Muhim operation
Pul o‘tkazish, email almashtirish, access berish yoki API key yaratish kabi actionlar qo‘shimcha confirmation talab qilishi mumkin.
Himoya:
- parolni qayta kiritish;
- WebAuthn tasdig‘i;
- transaction details ko‘rsatish;
- qisqa confirmation code;
- aniq final dialog.
Bu userning haqiqiy niyatini qayta tekshiradi.
Frame kerak bo‘lgan holatlar
Ba’zi applicationlar embeddingni qonuniy qo‘llaydi:
- payment widget;
- video;
- dashboard;
- partner portal;
- support component.
Bunday holatda barcha originlarga ruxsat berish o‘rniga aniq allowlist ishlatiladi.
Embedded va top-level mode uchun alohida endpoint bo‘lishi mumkin.
Aniqlash va test
Security testda sahifa boshqa origin frame’iga joylashtirib ko‘riladi.
Tekshiriladi:
- response header;
- CSP;
- nested frame;
- login session;
- sensitive action;
- partner origin;
- browser compatibility.
Faqat frontend route emas, sensitive endpointga olib boruvchi barcha sahifalar himoyalanadi.
JavaScript dialog cheklovi
Sensitive actionni faqat custom modal bilan tasdiqlash clickjackingni to‘liq to‘xtatmaydi, chunki modal ham frame ichida ko‘rsatilishi mumkin. Qayta authentication yoki browser tomonidan himoyalangan WebAuthn prompti userning real actionini kuchliroq tasdiqlaydi.
Mobile touch
Touchscreen’da elementlar kichik va scroll bilan harakatlanadi. Hujumchi yashirin frame’ni finger tegadigan joyga moslashtirishi mumkin. Responsive layout va zoom sabab test faqat desktop resolutionda bajarilmaydi.
Embedding contract
Partnerga frame ichida sahifa ko‘rsatish zarur bo‘lsa parent origin va message almashinuvi aniq contractga ega bo‘ladi. postMessage yuboruvchi va qabul qiluvchi tomon originni tekshiradi. Wildcard target origin sensitive data uchun ishlatilmaydi.
Frame ichidagi autentifikatsiya
Login yoki MFA sahifasini begona origin frame’ida ko‘rsatishga ruxsat berish userni qaysi saytga credential berayotganini tushunishdan mahrum qiladi. Identity provider odatda top-level navigation yoki aniq trusted originlar bilan ishlaydi. Authentication page’lari uchun frame-ancestors 'none'ga yaqin qat’iy siyosat qo‘llanishi mumkin.
Bog‘liq tushunchalar
UI redressing, iframe, X-Frame-Options, Content Security Policy, frame-ancestors, CSRF, SameSite cookie, Browser security, Session