Kobold letters: HTML ईमेल के खतरे
(lutrasecurity.com)- Kobold letters एक अटैक तकनीक है जिसमें HTML ईमेल शुरुआत में हानिरहित दिखता है, लेकिन फ़ॉरवर्ड होने के बाद दूसरे प्राप्तकर्ताओं के लिए फ़िशिंग संदेश में बदल सकता है
- इसका मुख्य आधार ईमेल क्लाइंट द्वारा अनुमति दी गई CSS और फ़ॉरवर्डिंग प्रक्रिया में बदलने वाली DOM स्थिति है, जिनका उपयोग कुछ वाक्यों को छिपाने या फिर से दिखाने के लिए किया जाता है
- Thunderbird और Outlook on the web में DOM संरचना और CSS री-राइटिंग के कारण फ़ॉरवर्ड होने के बाद छिपे हुए वाक्य दिखाई दे सकते हैं, जबकि Gmail में फ़ॉरवर्ड करते समय styles हटने से और भी सरल रूप में एक्सपोज़र संभव है
- Mozilla, Microsoft और Google को यह समस्या 5 मार्च 2024 को रिपोर्ट की गई थी; Microsoft ने 26 मार्च को बिना तत्काल कार्रवाई के रिपोर्ट बंद कर दी, और Google ने 9 अप्रैल को पुष्टि की कि फ़िक्स पर काम चल रहा है
- उपयोगकर्ता HTML ईमेल को बंद कर सकते हैं या restricted mode में देख सकते हैं, लेकिन `` को ब्लॉक करना मौजूदा ईमेल ecosystem के कई use cases को तोड़ सकता है, इसलिए क्लाइंट-स्तर पर mitigation आसान नहीं है
अटैक परिदृश्य और मुख्य विचार
- एडमिन द्वारा फ़ॉरवर्ड किया गया ईमेल शुरुआत में हानिरहित inquiry mail जैसा दिख सकता है, लेकिन फ़ॉरवर्ड होने के बाद नए प्राप्तकर्ता को फ़िशिंग अनुरोध के रूप में बदल सकता है
- प्राप्तकर्ता के लिए भेजने वाला कोई जाना-पहचाना व्यक्ति होता है, और कुछ मामलों में उस पर cryptographic signature भी लगा हो सकता है; फ़ोन पर फ़ॉरवर्ड होने की पुष्टि करने पर भी वह धोखा खा सकता है
- मूल प्राप्तकर्ता एडमिन को अपने द्वारा फ़ॉरवर्ड किए गए ईमेल में फ़िशिंग वाला वाक्य दिखता ही नहीं, इसलिए फ़ॉरवर्ड की पुष्टि करने पर भी उसके लिए अटैक को पहचानना मुश्किल होता है
Kobold letters कैसे काम करते हैं
- ज़्यादातर ईमेल क्लाइंट HTML ईमेल में CSS styling की अनुमति देते हैं
- जब ईमेल फ़ॉरवर्ड होता है, तो मूल ईमेल की DOM position आमतौर पर बदल जाती है, और हमलावर इसी बदलाव के आधार पर CSS selectors लागू करता है
- हमलावर ईमेल में ऐसे elements डाल सकता है जो context के अनुसार दिखें या गायब हो जाएँ
- सामान्य स्थिति में
display: none;से छिपे रहते हैं - फ़ॉरवर्ड होने के बाद DOM संरचना बदलने पर
display: block !important;जैसे नियम से दिख जाते हैं
- सामान्य स्थिति में
- ऐसे elements सामान्यतः दिखाई नहीं देते, लेकिन केवल खास परिस्थिति में प्रकट होते हैं और फ़िशिंग जैसी गतिविधियों में दुरुपयोग हो सकते हैं; इसी वजह से इन्हें kobold letters कहा जाता है
- HTML ईमेल को सपोर्ट करने वाले ईमेल क्लाइंट और वेबमेल व्यापक रूप से प्रभावित हो सकते हैं
Thunderbird में व्यवहार
- Thunderbird से जुड़ी समस्या 5 मार्च 2024 को Mozilla को रिपोर्ट की गई थी, और 20 मार्च 2024 की public disclosure date तथा draft भी भेजा गया था
- संभावित mitigation पर चर्चा हुई, लेकिन implementation बाद के लिए टाल दी गई
- Thunderbird ईमेल को `
` से wrap करता है और इसके अलावा लगभग कोई बदलाव नहीं करता
- ईमेल फ़ॉरवर्ड करने पर quoted मूल ईमेल फिर से `
` के अंदर चला जाता है और DOM में एक स्तर नीचे खिसक जाता है
- उदाहरण CSS में
.kobold-letterको डिफ़ॉल्ट रूप से छिपाया जाता है, और केवल.moz-text-html>div>.kobold-letterशर्त में दिखाया जाता है - मूल ईमेल देखने वाले को केवल वह paragraph दिखता है जो हमेशा दिखना चाहिए, लेकिन फ़ॉरवर्ड किया गया ईमेल पाने वाले को छिपा हुआ paragraph अचानक दिखाई देने लगता है
- हमलावर DOM के भीतर relative position जानता है और CSS को नियंत्रित कर सकता है, इसलिए वह ईमेल के हिस्सों को छिपाकर या दिखाकर पूरी सामग्री बदल सकता है
- अगर kobold letter को overlay की तरह style किया जाए, तो फ़ॉरवर्ड करने वाले द्वारा मूल मेल में जोड़े गए comments तक बदले जा सकते हैं, जिससे फ़िशिंग के अवसर और बढ़ जाते हैं
Outlook on the web में व्यवहार
- Outlook on the web की समस्या 5 मार्च 2024 को Microsoft को रिपोर्ट की गई थी, और 20 मार्च 2024 की public disclosure date तथा draft भी भेजा गया था
- Microsoft ने 26 मार्च 2024 को तत्काल कार्रवाई न करने का निर्णय लिया और रिपोर्ट को बंद कर दिया
- OWA वेबमेल होने के कारण स्थिति अधिक जटिल है; ईमेल `
` जैसे containers में रखा जाता है, लेकिन सटीक class names बदल जाते हैं
- Outlook ईमेल CSS का असर वेबमेल UI styles पर न पड़े, इसके लिए id और class के आगे
x_जोड़ता है और CSS को भी उसी अनुसार समायोजित करता है - उदाहरण में मूल ईमेल का CSS OWA में दिखाते समय इस तरह बदल जाता है
.rps_78fa .x_kobold-letter {display:none}.rps_78fa > div > div > .x_kobold-letter {display:block!important}
- फ़ॉरवर्ड होने के बाद class फिर से
x_x_kobold-letterजैसा बदल जाता है और CSS भी फिर अपडेट हो जाता है - दूसरे नियम में
.rps_78faऔरdivके बीच का>हट जाता है, इसलिए complex selectors बनाते समय इसे ध्यान में रखना पड़ता है - OWA का यह adjustment अटैक को स्वयं नहीं रोकता, लेकिन कई क्लाइंट्स पर एक साथ काम करने वाले kobold letter बनाना ज़रूर अधिक झंझटपूर्ण बना देता है
Gmail में व्यवहार
- Gmail की समस्या 5 मार्च 2024 को Google को रिपोर्ट की गई थी, और 20 मार्च 2024 की public disclosure date तथा draft भी भेजा गया था
- Google ने 9 अप्रैल 2024 को पुष्टि की कि फ़िक्स पर काम जारी है
- Gmail ईमेल फ़ॉरवर्ड करते समय सभी styles हटा देता है, इसलिए CSS selectors के ज़रिए context के अनुसार visibility बदलने वाले संकीर्ण अर्थ के kobold letters के प्रति यह तकनीकी रूप से संवेदनशील नहीं है
- लेकिन एक और सरल अटैक संभव है
- मूल ईमेल में CSS से kobold letter को छिपाया जाता है
- फ़ॉरवर्ड करते समय styles हटने पर छिपा हुआ element अपने-आप दिखने लगता है
- यह तरीका सीमित है, और इसका उल्टा व्यवहार—यानी मूल में दिखना लेकिन फ़ॉरवर्ड होने के बाद गायब हो जाना—संभव नहीं है
- Gmail ईमेल भेजने से पहले editor चरण में अभी CSS नहीं हटाता, इसलिए जब फ़ॉरवर्ड करने वाला comment लिख रहा होता है तब भी छिपा हुआ paragraph दिखाई नहीं देता
- अंतिम ईमेल में styles हट जाने के कारण दूसरा paragraph दिखाई देने लगता है
- अगर Gmail editor चरण में ही CSS हटा दे, तो फ़ॉरवर्ड करने वाला भेजने से पहले अटैक पहचान सकता है और समस्या कुछ हद तक कम हो सकती है
पहले के समान मामले और अंतर
- HTML ईमेल में CSS के जरिए reply या forward की गई सामग्री बदल सकना कोई नई बात नहीं है
- अतीत में भी ऐसे समान मुद्दे रिपोर्ट हुए हैं
- Kobold letters की खास बात यह है कि यह एक खास अटैक परिदृश्य पर फ़ोकस करता है और कई ईमेल क्लाइंट्स को साथ में देखता है
- HTML ईमेल के खतरों और उन्हें कम करने के लिए ज़रूरी trade-offs पर चर्चा की आवश्यकता है
mitigation और सीमाएँ
- उपयोगकर्ता HTML ईमेल को पूरी तरह disable कर सकते हैं या Thunderbird के “plain HTML” जैसे restricted mode में देख सकते हैं
- अगर ईमेल क्लाइंट `` के उपयोग को रोक दे, तो समस्या हल हो सकती है, लेकिन इससे ईमेल ecosystem के बहुत से मौजूदा use cases टूट सकते हैं
- Gmail की तरह फ़ॉरवर्ड करते समय styles हटाने वाली implementation, styled corporate newsletters की अनुमति देते हुए HTML ईमेल के खतरों को सीमित करने वाला एक समझौता हो सकती है
- निकट भविष्य में ईमेल क्लाइंट्स द्वारा मजबूत mitigation लागू किए जाने की उम्मीद करना व्यावहारिक नहीं है
- उपयोगकर्ताओं को HTML ईमेल के खतरों के बारे में जागरूक रहना चाहिए और आवश्यक सावधानियाँ स्वयं अपनानी चाहिए
1 टिप्पणियां
Hacker News की राय
“फिर भी भरोसा नहीं होता, इसलिए मैनेजर को फोन करके पुष्टि करता है कि ईमेल असली है या नहीं। मैनेजर हाँ कहता है, तो वह पैसे ट्रांसफर कर देता है” वाला हिस्सा बहुत बड़ी धारणा जैसा लगता है
आम तौर पर “क्या आपने यह ईमेल भेजा था?” जैसा धुंधला सवाल पूछने के बजाय लोग शायद “क्या सच में आप इस तरह पैसे ट्रांसफर करने को कह रहे हैं?” जैसा ज्यादा स्पष्ट सवाल पूछेंगे, और तब मैनेजर का चौंकना स्वाभाविक है; उस बातचीत में हमला रुक जाने की संभावना बड़ी है
यह एक दिलचस्प attack path जरूर है, लेकिन असल में इसके सफल होने की संभावना संदिग्ध है। लेख दिखाता है कि इस हमले के काम करने के लिए घटनाओं का काफी विशिष्ट और संकरा क्रम चाहिए, पर निजी तौर पर मुझे यह बहुत convincing नहीं लगता
मुझे पता है कि phishing सच में काम करती है। लेकिन जो लोग phishing में फँसेंगे, उन्हें इतने sophisticated हमले की जरूरत नहीं होती; उल्टा, हमलावर अगर इतने विशिष्ट effort लगाए, तो सफलता की संभावना कम भी हो सकती है। साधारण phishing email से भी सफल होने की संभावना काफी होती है
उन executives की जानकारी LinkedIn या कंपनी की site पर आसानी से मिल जाती थी, और हैरानी की बात यह थी कि वे उदाहरण phishing-prevention training में ठीक इसी case के तौर पर मौजूद थे, फिर भी ऐसा हुआ
https://www.microsoft.com/en-us/research/publication/why-do-...
हमलावर “मैं अभी business trip पर हूँ। अगर पक्का न हो तो मेरे personal mobile पर call करें...” जैसा वाक्य डाल सकता है, और फिर fake voice से जवाब भी दे सकता है
target तक पहुँचने का अच्छा तरीका “double forwarding” हो सकता है। sender खुद को ऐसा कर्मचारी दिखाए जो मैनेजर का email admin काम देखने वाले व्यक्ति के आसपास के किसी कर्मचारी को forward करता है, और फिर वह कर्मचारी birthday greeting या sick leave notice जैसे दिखने में harmless कारण से mail फिर forward कर दे; तब असली target के लिए email का मूल source पहचानना मुश्किल हो जाता है
इसके अलावा इस “feature” का ज्यादा creative दुरुपयोग करने के तरीके आसानी से सोचे जा सकते हैं। उदाहरण के लिए, किसी अनजान व्यक्ति से problematic content forward करवाकर फिर उसे blackmail करना भी संभव है
हर payment request email से आने पर संबंधित लोग हर बार line manager को phone नहीं करेंगे, खासकर अगर amount छोटा हो और pre-approval की जरूरत न हो
मुझे याद है कि Google भी कभी ऐसे scam का शिकार हुआ था जिसमें कोई असली काम न होने पर भी किसी को payment कर दिया गया था। उस मामले में fake invoice शामिल था, लेकिन principle वही है
कुछ दिन पहले मैं एक designer द्वारा बनाया गया “update” email design देख रहा था; सबसे ऊपर लगे बेहूदा बड़े graphic header की वजह से scroll किए बिना email title text तक नहीं दिख रहा था
फिर उसने feedback माँगने के लिए दूसरा version forward किया, अचानक घबराकर बोला कि font कुछ छोटा दिख रहा है, और फिर कहा, “ओह, forward करने पर यह mobile version नहीं बल्कि desktop version में convert हो जाता है!”
यह देखकर मैं अविश्वास में बस घूरता रह गया। यह email है—इसमें “desktop version” और “mobile version” का क्या मतलब? ऐसा कैसे हो सकता है? “convert” होने का क्या मतलब? बस copy ही तो हो रहा है। forward करने पर “टूट” जाता है, यह तथ्य ही दिखाता है कि यह तरीका कितना बेवकूफी भरा है। आखिर मेरे email में CSS क्यों होना चाहिए?
italic जैसी चीज दिखाने के लिए Markdown जैसा कहीं ज्यादा सरल तरीका अपनाना चाहिए था, और अब तक ऐसा न होना समझ से बाहर है। इससे पता चलता है कि इस स्थिति को सच में सुधारने में कितनी कम रुचि है। सब कुछ सिर्फ उन अजीब corporate demands को पूरा करने के लिए है जो हर जगह logo और banner डालना चाहती हैं। HTML email सच में बेतुका है
[1] https://www.rfc-editor.org/rfc/rfc1896.txt
मैं लंबे समय से कहता आया हूँ कि email में rich text के लिए HTML के बजाय Markdown से inline HTML हटाकर बना कोई रूप, या उससे मिलता-जुलता सरल text markup इस्तेमाल होना चाहिए
तब email client आसानी से तय कर सकता है कि उसे rich text के रूप में दिखाना है या plain text के रूप में, और आम users को चाहिए होने वाली ज्यादातर formatting भी support हो सकती है: bold, italic, quote, inline image, code block, headings आदि
बहुत advanced HTML इस्तेमाल करने वाले marketing emails के लिए यह अच्छा नहीं होगा, लेकिन मुझे नहीं लगता कि ऐसे use case की चिंता करनी चाहिए
https://en.wikipedia.org/wiki/Enriched_text
https://www.rfc-editor.org/rfc/rfc1896.html
अभी email में hyperlink लगाने का support तक नहीं है, और हाल में इसे ठीक करने की कोशिश की गई थी
https://pastebin.com/kHQs50xm
संगठन के लिए असली खतरा यह है कि जिस developer को HTML email बनाने का काम दिया गया, वह पागल होकर server room में खुद को बंद कर ले और “Outlook में rendering अलग क्यों दिख रही है” चिल्लाते हुए सारा hardware तोड़ दे
खैर, गंभीरता से कहें तो यह बहुत दिलचस्प vulnerability है
क्या इसे ऐसे ठीक नहीं किया जा सकता कि stylesheet की अनुमति न हो और tag के सिर्फ inline style attribute की अनुमति हो?
usability के लिए email client एक automatic step जोड़ सकता है जो सभी stylesheet को inline style में “compile” कर दे
इससे advanced CSS selector, जैसे hover वगैरह ही टूटेंगे, और मुझे पक्का नहीं कि उनकी सच में जरूरत है भी या नहीं
pseudo-class और media query काम नहीं करेंगी, लेकिन वे security risk हो सकती हैं और major mail clients में supported भी नहीं हैं: https://www.caniemail.com/features/css-at-media/
ऊपर से अगर सभी style attribute हटा देंगे तो mobile optimization और dark mode भी खत्म हो जाएंगे, क्योंकि media query को inline नहीं किया जा सकता
आम तौर पर default/desktop style पहले से compile होकर inline हो जाते हैं, और mobile devices पर पढ़ना आसान बनाने के लिए
headके अंदर style tag में media query selector रखे जाते हैंवाकई बहुत चतुर
आधार यह है कि HTML email की CSS की वजह से कोई text message forward करने के बाद ही दिख सकता है। यह verified email की भरोसेमंदता के लिए बड़ा खतरा है
Thunderbird, Outlook, Gmail के examples दिए गए हैं, और काम शानदार है
मैं सारे mail mutt में पढ़ता हूं, इसलिए आधिकारिक तौर पर यह “दूसरों की समस्या” है
तो किसी और बात पर शिकायत करूं: Mozilla को report करने की तारीख 05.03.2024 लिखी है। मैं मानता हूं कि little-endian date अमेरिकी middle-endian date से ज्यादा समझ में आती है
लेकिन technologist होने के नाते ISO 8601 date format यानी 2024-03-05, hyphen हों या न हों, इस्तेमाल न करना गलत है :)
little-endian में कम से कम यह खूबी तो है कि वह बाकी सभी numbers लिखने के तरीके के उलट है, लेकिन middle-endian तो बस पागलपन है। बेशक, इसलिए यही अमेरिकियों का तरीका भी है
जिन email clients का जिक्र है, उनमें से कुछ mail content को अतिरिक्त HTML tags से wrap करते और CSS व class names बदलते दिखते हैं
मुझे हैरानी है कि email client HTML email render करते समय sandbox iframe क्यों नहीं इस्तेमाल करते। क्या अब भी कोई security risk है?
forward करने वाला व्यक्ति email में और text जोड़ना चाह सकता है, इसलिए यह expected behavior है
बस अगर email में किसी website का link हो और sandbox iframe JavaScript allow न करे, तो वह security context iframe के अंदर link click करके खुली page तक जारी रहता था, जिससे website JS इस्तेमाल नहीं कर पाती थी
समाधान
allow-popups-to-escape-sandboxथा, इसलिए अब इसके काम न करने की कोई वजह नहीं दिखतीघाव ठीक करने के लिए हाथ-पैर काट देने जैसा typical solution है। समस्या email standardization की कमजोरी है, जिसने ऐसी hacking को हावी होने दिया
HTML कुल मिलाकर ऐसी चिंताओं के प्रति vulnerable है। फिर भी बहुत से emails HTML का बिना समस्या इस्तेमाल करते हैं। यह लेख जंगली दुनिया में मिली किसी चीज पर निजी frustration को security issue की तरह पेश करता हुआ लगता है
दिमाग में आने वाले संभावित mitigations ये हैं, हालांकि शायद असरदार न हों: hidden elements पर साफ warning देना, receiving और sending दोनों तरफ wrapping div की संख्या randomize करना, forward करते समय यह calculate करना कि वह असल में कैसा दिखेगा और अगर बड़ा फर्क हो तो confirmation मांगना
या उल्टा तरीका अपनाना ज्यादा प्रभावी हो सकता है, क्योंकि इसमें दूसरे clients की मदद की जरूरत नहीं पड़ती
इसे “email संगठन के लिए खतरनाक क्यों है” कर देना चाहिए
यह लेख HTML email के लिए unique attack path दिखाता है, लेकिन email के जरिए होने वाले ज्यादातर attacks को WhatsApp, Slack, Jira, Zoom या किसी भी ऐसे tool में आसानी से ले जाया जा सकता है जिससे लोग बाहरी दुनिया से communicate करते हैं