صفحة إجراء حساس في لوحة الغربان لا تضع أي ترويسة تمنع وضعها داخل إطار فيبني المهاجم صفحة تؤطر الهدف وتضع فوقه طبقة خادعة فيضغط الضحية ظانا أنه يضغط شيئا آخر
صفحة مهاجم على موقع الصقر تدخل فيها مسار الهدف وتسلمها للضحية فتظهر ترويسات التأطير التي يردها الهدف وهل أمكن تأطيره وسرقة الضغطة
لماذا نجح الحل
غياب X-Frame-Options و CSP frame-ancestors يسمح لأي موقع بتأطير الصفحة ووضع طبقة فوقها لسرقة الضغطات الحل ترويسة frame-ancestors none أو self في CSP أو X-Frame-Options DENY
السبب الجذري
لا ترويسة تمنع وضع الصفحة في إطار الجذر غياب سياسة أسلاف الإطار
كيف يصلح الكود
افرض frame-ancestors none أو self على كل صفحة حساسة مع X-Frame-Options DENY
الكود المصاب
// No framing headers at all.
app.get('/action', (req, res) => res.send(actionPage));
الكود الآمن
app.get('/action', (req, res) => {
res.setHeader('Content-Security-Policy', "frame-ancestors 'none'");
res.setHeader('X-Frame-Options', 'DENY');
res.send(actionPage);
});
الأثر في الواقع
الاختطاف بالنقر يخدع المستخدمين لأداء أفعال حساسة تحويل أموال تغيير إعدادات منح صلاحيات دون علمهم
كيف يكتشفها المدافعون
المدافع يفرض frame-ancestors على كل صفحة حساسة ويرصد صفحات بلا سياسة تأطير