- SVG फ़िल्टर का इस्तेमाल करके एक नया क्लिकजैकिंग तरीका पेश किया गया है, जो पुराने सरल क्लिक-उकसाने वाले हमले को जटिल इंटरैक्टिव अटैक में बदल देता है
feColorMatrix,feDisplacementMapजैसे SVG फ़िल्टर एलिमेंट cross-origin iframe पर भी लागू हो सकते हैं, जिससे विज़ुअल मैनिपुलेशन और डेटा के बाहर निकास (data exfiltration) को संभव बनाया जा सकता है- फ़िल्टर संयोजन से पिक्सेल रीडिंग, लॉजिक ऑपरेशन और कंडीशनल UI मैनिपुलेशन संभव हो जाता है, जिससे मल्टी-स्टेप क्लिकजैकिंग या क्लिक-प्रेरित इनपुट अटैक लागू किए जा सकते हैं
- वास्तविक उदाहरण में Google Docs vulnerability का इस्तेमाल करके हमला सफल हुआ, और शोधकर्ता को Google VRP से $3133.70 की बाउंटी मिली
- यह तकनीक ब्राउज़र सिक्योरिटी मॉडल के एक नए अटैक सरफेस को उजागर करती है और दिखाती है कि SVG फ़िल्टर का लॉजिक-आधारित उपयोग कैसे सुरक्षा खतरे में बदल सकता है
SVG क्लिकजैकिंग का अवलोकन
- पारंपरिक क्लिकजैकिंग में iframe पर ओवरले डालकर यूज़र को अनजाने में क्लिक करने के लिए प्रेरित किया जाता है
- नया प्रस्तुत SVG क्लिकजैकिंग SVG फ़िल्टर का उपयोग करके जटिल इंटरैक्शन और डेटा लीक को संभव बनाता है
feColorMatrixऔरfeDisplacementMapजैसे फिल्टर cross-origin दस्तावेज़ों पर भी लागू किए जा सकते हैं, जिससे बाहरी कंटेंट को विज़ुअली बदलना संभव होता है
SVG फ़िल्टर के घटक
- मुख्य फिल्टर तत्व हैं: <feImage>, <feFlood>, <feOffset>, <feDisplacementMap>, <feGaussianBlur>, <feTile>, <feMorphology>, <feBlend>, <feComposite> और <feColorMatrix>
- ये इनपुट इमेज को मिलाकर/बदलकर नया इमेज बनाते हैं, और चेन के रूप में लिंक किए जा सकते हैं
- इन संयोजनों के माध्यम से attacker को विज़ुअल इफेक्ट, मास्किंग, रंग मैनिपुलेशन जैसी चीज़ें स्वतंत्र रूप से लागू करना संभव हो जाता है
हमला उदाहरण
- फेक कैप्चा (fake captcha):
feDisplacementMapके जरिए टेक्स्ट को विकृत करके यूज़र से संवेदनशील कोड डालवाया जाता है - ग्रे टेक्स्ट हाइडिंग (grey text hiding):
feCompositeऔरfeMorphologyसे इनपुट फ़ील्ड की गाइड लाइन या एरर मैसेज हटाकर यूज़र को attacker द्वारा चुना गया पासवर्ड डालने के लिए प्रेरित किया जाता है - पिक्सेल रीडिंग (pixel reading): किसी खास पिक्सेल का रंग देखकर फ़िल्टर व्यवहार नियंत्रित किया जाता है, जिससे बटन क्लिक, होवर, इनपुट स्टेट डिटेक्शन जैसे डायनेमिक प्रतिक्रियाशील अटैक बनाए जा सकते हैं
लॉजिक ऑपरेशन और कंपोज़िट अटैक
feBlendऔरfeCompositeको जोड़कर AND, OR, XOR, NOT जैसे लॉजिक गेट बनाए जा सकते हैं- इससे SVG फ़िल्टर के अंदर पूर्ण लॉजिक सर्किट बनाया जा सकता है और मल्टी-स्टेप क्लिकजैकिंग सीनारियो को ऑटोमेट किया जा सकता है
- उदाहरण के तौर पर ‘Securify’ app attack में डायलॉग बॉक्स खुलना, चेकबॉक्स क्लिक, बटन क्लिक आदि चरणों को लॉजिक के जरिए नियंत्रित करके यूज़र को भ्रमित करने वाली संरचना बनाई गई
वास्तविक केस: Google Docs की कमजोरी
- Google Docs में “Generate Document” क्लिक करने के बाद आने वाले पॉप-अप और इनपुट फील्ड को SVG फ़िल्टर आधारित लॉजिक से detect और manipulate किया गया
- इनपुट फील्ड की focus state, ग्रे टेक्स्ट और लोडिंग स्क्रीन को real-time में देखकर अटैक फ्लो को कंट्रोल किया गया
- इस अटैक की रिपोर्ट Google को की गई और $3133.70 का बग बाउंटी जारी हुआ
QR कोड अनुप्रयोग
- SVG फ़िल्टर के अंदर QR code generation logic को implement करके पिक्सेल डेटा को URL के रूप में encode किया जा सकता है और QR के रूप में दिखाया जा सकता है
- जब यूज़र QR स्कैन करता है, डेटा attacker के कंट्रोल वाले server पर भेजा जाता है
feDisplacementMapऔर Reed–Solomon error correction का उपयोग करके स्कैन-योग्य QR कोड बनाया गया
अतिरिक्त उपयोग संभावनाएँ
- टेक्स्ट रीडिंग, क्लिक-आधारित डेटा एक्सट्रैक्शन, फेक माउस करसर इंसर्शन आदि कई अन्य अटैक उपयोग संभव हैं
- JavaScript के बिना सिर्फ CSS/SVG से अटैक बनाना संभव है, इसलिए CSP को bypass करने की संभावना मौजूद रहती है
शोध का महत्व
- SVG फ़िल्टर से संचालित लॉजिक-आधारित क्लिकजैकिंग पहले के शोध में कवर न की गई एक नई अटैक तकनीक है
- पुराने शोध मुख्यतः SVG को सिर्फ विज़ुअल मास्किंग के रूप में देखते थे, जबकि इस शोध ने लॉजिक execution और इंटरैक्शन control का प्रदर्शन किया
- शोधकर्ता इसे नया vulnerability class बताते हुए ब्राउज़र सिक्योरिटी आर्किटेक्चर के पुनर्मूल्यांकन की जरूरत पर जोर देते हैं
समापन
- इस शोध को SVG फ़िल्टर को programming language की तरह इस्तेमाल करने का पहला सुरक्षा अटैक उदाहरण माना जा रहा है
- लेखक के अनुसार 2025 के अंत में 39c3 और Disobey 2026 में संबंधित प्रेज़ेंटेशन की योजना है
- पोस्ट सिर्फ 42kB की HTML/CSS/SVG में, बिना इमेज और JS के, तैयार किया गया है—यह प्रयोगात्मक सुरक्षा शोध की क्रिएटिविटी दिखाता है
1 टिप्पणियां
Hacker News टिप्पणी
अगर डेवलपर X-Frame-Options हेडर को सही तरह से सेट करें तो यह समस्या हल हो जाती है
लेकिन व्यवहार में शायद वे सुरक्षा समस्याओं का पीछा करते-करते ब्राउज़र से SVG spec का आधा हिस्सा हटाने जैसी प्रतिक्रिया देंगे
और जिन sites पर frame नहीं बल्कि HTML injection संभव है, वहाँ भी ऐसा हमला किया जा सकता है
मैं तो सुरक्षा कारणों से SVG पहले से ही बंद करके रखता हूँ
लेकिन अब लगता है कि शायद CSS तक disable करना पड़े
अच्छा होता अगर CSS सिर्फ text को सजाने तक सीमित रहती, लेकिन अब वह programming language जैसी बन गई है, इसलिए hackers या advertisers के लिए उसका दुरुपयोग करना आसान हो गया है
अब तो यह लगभग असंभव के करीब है
“pixel शुद्ध काला है या नहीं, यह पहचानकर filter को on/off करने वाले उदाहरण” को देखकर मैं पूरी तरह उलझ गया
समझ नहीं आता कि HTML/CSS इतना जटिल कैसे हो गया
एक छिपा हुआ
<checkbox>और<label>है, क्लिक करने पर checkbox toggle होता है, और सिर्फ CSS से state के आधार पर style बदल जाता हैSVG वास्तव में कुछ भी draw नहीं करता, सिर्फ filter define करता है
यह भी अजीब है कि
<feTile>दो बार इस्तेमाल हुआ है ताकि tile area और output area अलग-अलग define किए जा सकेंऔर
<fake-frame>या<art-frame>जैसे elements आखिर क्या हैं?<label>पर click करने से checkbox toggle होना HTML का default behavior हैstate पहचानने के लिए CSS का
:has()selector इस्तेमाल किया गया है<feTile>एक single filter element है, जिसका उपयोग input image को tile करने या crop करने के लिए होता है<fake-frame>और<art-frame>खुद परिभाषित किए गए custom elements हैंइससे जुड़ी बातें ब्लॉग पोस्ट में लिखी हैं
<label>पर click करके focus ले जाना desktop UI परंपरा का हिस्सा हैcheckbox state के हिसाब से style बदलना भी Firefox 1 के समय से संभव था
HTML में SVG filters को सीधे embed करना भी पुराना feature है
यानी यह नए HTML की समस्या नहीं, बल्कि पुराने features के संयोजन का मामला है
यह demo देखकर पुराने Flash Player hacks याद आ गए
यह उसी तरह का लगता है जैसे users को system storage की अनुमति देने के लिए बहकाया जाता था
vector graphics सच में खुद पर नियंत्रण न रख पाने वाली चीज़ लगती है
SVG adder तो किसी कला-कृति जैसा है। वाकई शानदार
इस बारे में Stack Overflow पोस्ट देखी
मेरे Android Chrome में (सटीक कहूँ तो Kiwi browser) शायद dark mode की वजह से स्क्रीन टूटी हुई या अजीब दिखाई देती है
जानना चाहता हूँ कि क्या और लोगों को भी ऐसा दिख रहा है
यह पोस्ट देखकर पहले देखा हुआ CSS calculation demo याद आ गया
सच में बहुत प्रभावशाली काम है। इसे कैसे ठीक किया जाए पता नहीं, लेकिन जल्द से जल्द fix की ज़रूरत है
बहुत ही शानदार पोस्ट थी। पढ़ते समय लगातार मज़ा आया