2 पॉइंट द्वारा GN⁺ 2025-12-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2025-12-07
Hacker News टिप्पणी
  • अगर डेवलपर X-Frame-Options हेडर को सही तरह से सेट करें तो यह समस्या हल हो जाती है
    लेकिन व्यवहार में शायद वे सुरक्षा समस्याओं का पीछा करते-करते ब्राउज़र से SVG spec का आधा हिस्सा हटाने जैसी प्रतिक्रिया देंगे

    • यह पूरी तरह हल नहीं हुआ है। कुछ applications (जैसे Google Docs) को framing की ज़रूरत होती है
      और जिन sites पर frame नहीं बल्कि HTML injection संभव है, वहाँ भी ऐसा हमला किया जा सकता है
    • SVG में security landmines बहुत ज़्यादा हैं। खासकर जब वह user-provided SVG जैसा अविश्वसनीय input हो, तो उसे बस disable कर देना सबसे सरल है
  • मैं तो सुरक्षा कारणों से SVG पहले से ही बंद करके रखता हूँ
    लेकिन अब लगता है कि शायद CSS तक disable करना पड़े
    अच्छा होता अगर CSS सिर्फ text को सजाने तक सीमित रहती, लेकिन अब वह programming language जैसी बन गई है, इसलिए hackers या advertisers के लिए उसका दुरुपयोग करना आसान हो गया है

    • “काश CSS को सरल ही रहने दिया होता” इस बात से सहमत हूँ, लेकिन सच यह है कि ऐसे हमले 2000 के दशक के आखिर में कहीं ज़्यादा आसानी से संभव थे
      अब तो यह लगभग असंभव के करीब है
    • मेरी राय में सुरक्षा मजबूत करने के लिए browser को तोड़ने से बेहतर है कि sensitive data को browser के बाहर ही रखा जाए
    • असली समस्या CSS नहीं बल्कि iFrame है। यह ब्राउज़र के शुरुआती दौर से चली आ रही सुरक्षा कमजोरियों का स्रोत रहा है
    • इस demo के अलावा क्या कोई और security reason है, यह जानना चाहता हूँ। ज़्यादातर platforms पर यह हमला काम नहीं करता
    • यह जरूरत से ज़्यादा प्रतिक्रिया है। ऐसे हमले का शिकार होने की संभावना बहुत कम है, और यह sandbox या session cookies को भी bypass नहीं कर सकता
  • “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 आखिर क्या हैं?

    • मुझे यह संरचना काफ़ी कमाल की लगती है। बिना JavaScript के भी interactive content बनाया जा सकता है
      <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 हैं
      इससे जुड़ी बातें ब्लॉग पोस्ट में लिखी हैं
    • सच कहें तो इनमें से ज़्यादातर चीज़ें “modern” कम और 90 के दशक से मौजूद features ज़्यादा हैं
      <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 तो किसी कला-कृति जैसा है। वाकई शानदार

    • यह बहुत शक्तिशाली demo था। आज पहली बार पता चला कि Turing completeness के लिए सिर्फ functional completeness काफी नहीं होती, storage और random access भी चाहिए
      इस बारे में Stack Overflow पोस्ट देखी
  • मेरे Android Chrome में (सटीक कहूँ तो Kiwi browser) शायद dark mode की वजह से स्क्रीन टूटी हुई या अजीब दिखाई देती है
    जानना चाहता हूँ कि क्या और लोगों को भी ऐसा दिख रहा है

    • Firefox में Dark Reader बंद करने पर ही उदाहरण सही दिखा
    • zoom level 100% न होने पर QR वाला example टूट जाता है
  • यह पोस्ट देखकर पहले देखा हुआ CSS calculation demo याद आ गया

  • सच में बहुत प्रभावशाली काम है। इसे कैसे ठीक किया जाए पता नहीं, लेकिन जल्द से जल्द fix की ज़रूरत है

  • बहुत ही शानदार पोस्ट थी। पढ़ते समय लगातार मज़ा आया