4 पॉइंट द्वारा GN⁺ 2024-06-27 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • KakaoTalk Android ऐप में deeplink, WebView और XSS के मेल से, यूज़र के सिर्फ एक बार malicious link दबाने भर से access token leak और account takeover तक हो सकता था
  • मुख्य entry point KakaoTalk 10.4.3 का CommerceBuyActivity WebView था, और deeplink validation की कमी, JavaScript enabled होना, और Authorization header exposure ने मिलकर समस्या पैदा की
  • attack chain buy.kakao.com redirect और m.shoppinghow.kakao.com के DOM XSS का इस्तेमाल करके WebView के अंदर arbitrary JavaScript execute करने की विधि थी
  • लीक हुए token का उपयोग Kakao Mail access, password reset, और PC/Mac के लिए KakaoTalk या KiwiTalk client registration में किया जा सकता था
  • vulnerability को CVE-2023-51219 के रूप में assign किया गया, और report के बाद Kakao Corp. ने buy.kakao.com को बंद किया और संबंधित redirect व vulnerable CommerceBuyActivity को हटा दिया

vulnerability का scope और prerequisites

  • KakaoTalk Google Playstore पर 100 मिलियन से ज्यादा downloads वाला कोरिया का प्रमुख chat app है, और payments, ride-hailing, shopping, email आदि शामिल करने वाला all-in-one app जैसा है
  • सामान्य chat rooms में end-to-end encryption (E2EE) default रूप से on नहीं है, इसलिए Kakao Corp. के लिए transit में messages access कर पाने वाली संरचना है
  • वैकल्पिक E2EE feature Secure Chat मौजूद है, लेकिन group messaging या voice calls support नहीं करता
  • PoC का लक्ष्य victim account में KakaoTalk for Windows/macOS या open-source client KiwiTalk register करके non-end-to-end encrypted chat messages पढ़ना था

entry point: CommerceBuyActivity WebView

  • CommerceBuyActivity WebView में attacker के लिए अनुकूल कई conditions थीं
    • यह externally exposed (exported) था और kakaotalk://buy जैसे deeplink से start किया जा सकता था
    • settings.setJavaScriptEnabled(true) से JavaScript enabled था
    • JavaScript से intent:// scheme के जरिए externally exposed न होने वाले app components को भी data भेजा जा सकता था
    • intent:// URI के Component या Selector को null में sanitize नहीं किया जाता था, इसलिए URI handling भी अपर्याप्त थी
  • यह WebView HTTP requests के Authorization header में access token भेजता था
  • WebView debugging on थी, जिससे chrome://inspect से behavior verify किया जा सकता था, और external address पर navigate कराने पर GET request के साथ Authorization header expose हो जाता था
  • अगर attacker इस WebView के अंदर JavaScript execute कर ले, तो malicious kakaotalk://buy deeplink पर click मात्र से यूज़र का access token चोरी किया जा सकता था

URL validation bypass और DOM XSS chaining

  • CommerceBuyActivity arbitrary attacker URL सीधे load नहीं करता था, बल्कि input deeplink को https://buy.kakao.com से शुरू होने वाले URL में compose करता था
    • उदाहरण के लिए kakaotalk://buy/foo को https://buy.kakao.com/foo के रूप में load किया जाता था
    • path, query parameters और fragment attacker control कर सकता था
  • https://buy.kakao.com/auth/0/cleanFrontRedirect?returnUrl= endpoint arbitrary kakao.com domain पर redirect कर सकता था, जिससे kakao.com subdomains में XSS खोजने का attack scope बढ़ गया
  • m.shoppinghow.kakao.com में ऐसा endpoint मिला जहां search query innerHTML sink तक पहुंचती थी, और simple payload से DOM XSS संभव था
  • पहले मौजूद stored XSS भी मिला था, लेकिन बताया गया कि मई 2024 तक वह fix हो चुका लगता है
  • इस combination से, user के malicious deeplink click करने पर CommerceBuyActivity WebView के अंदर arbitrary JavaScript execute होती और Authorization header का access token बाहर भेजा जा सकता था

token से Kakao Mail और account reset तक access

  • leak हुआ KakaoTalk access token victim के Kakao Mail account access के लिए इस्तेमाल किया जा सकता था
  • victim Kakao Mail इस्तेमाल कर रहा है या नहीं, यह check करने के बाद अलग token लेकर talk.mail.kakao.com access करने का flow संभव था
  • अगर victim के पास Kakao Mail account नहीं था, तब भी victim के नाम पर नया account बनाया जा सकता था, और नया email address बनाते समय Set As Primary Email चुनने पर मौजूदा registered email address बिना अतिरिक्त verification के overwrite हो सकता था
  • Kakao Mail access के बाद अगला step KakaoTalk password reset था
    • अतिरिक्त रूप से जरूरी victim का email address, nickname और phone number उसी account settings API call से मिल सकता था
    • accounts.kakao.com के password reset process में SMS 2FA था, लेकिन Burp से requests और responses intercept व modify करके इसे email verification flow में बदला जा सकता था
    • verification code victim के Kakao Mail में देखा जा सकता था

PC client registration और message access

  • victim के credentials से KakaoTalk for Windows/macOS या KiwiTalk में login करने पर second authentication factor की जरूरत थी
  • यह authentication 4-digit PIN method था, जिसमें PIN PC version पर दिखता और mobile app में enter किया जाता, या इसके उलट mobile app पर भेजा जाता और PC app में enter किया जाता था
  • PIN को brute-force करना कठिन था, और संबंधित endpoints पर 5 attempts के बाद block होने वाली rate limit थी
  • लेकिन leaked access token से KakaoTalk backend में PIN submit या retrieve किया जा सकता था
  • इस process के जरिए attacker-controlled device को victim के KakaoTalk account में register करके, non-end-to-end encrypted chat messages पढ़ने वाला PoC पूरा हुआ

disclosure, fixes और research material

  • vulnerability को CVE-2023-51219 के रूप में assign किया गया
  • researcher ने अन्य security researchers को KakaoTalk के बड़े attack surface का analysis करने में मदद के लिए tools public किए
  • vulnerability को दिसंबर 2023 में Kakao Bug Bounty Program के जरिए report किया गया
  • reporter ने बताया कि reward eligibility को Korean nationals तक सीमित रखा गया था, इसलिए उन्हें reward नहीं मिला
  • Kakao Corp. ने तुरंत https://buy.kakao.com को बंद किया और /auth/0/cleanFrontRedirect?returnUrl= redirect हटाया, और बाद के version में vulnerable CommerceBuyActivity भी हटा दिया

1 टिप्पणियां

 
GN⁺ 2024-06-27
Hacker News की राय
  • अगर आप Korea में रहते हैं, तो Kakao इस्तेमाल किए बिना रहना मुश्किल है, और यह ऐप दादी-नानी की पीढ़ी तक इस्तेमाल करती है, इसलिए इसमें कई सुरक्षा खामियां होना चिंता की बात है
    खासकर अगर vulnerability ऐसी हो जिसमें domain सामान्य जैसा दिखे, तो दादी-नानी के लिए संदिग्ध link पहचानना मुश्किल होगा, और मुझे लगता है Korea की hierarchical work culture भी इसमें भूमिका निभाती है
    boss feature deadline को non-negotiable बनाकर दे देता है, security vulnerabilities दिखती नहीं हैं लेकिन UI दिखता है, इसलिए कुछ हिस्से काट-छांट कर release कर दिया जाता है
    आखिर में ऐप security holes से भरा बन जाता है, और Kakao stock price गिरने तक शायद इसे ठीक से नहीं सुधारा जाएगा
    • मैं Korean हूं, लेकिन KakaoTalk, LINE या Facebook कुछ भी इस्तेमाल नहीं करता। यह थोड़ा अजीब मामला जरूर बन जाता है, लेकिन कई services SMS alternative देती हैं, इसलिए इनके बिना भी रहा जा सकता है
      security के मामले में मुझे नहीं लगता कि यह Korea की work culture की वजह से है; बल्कि Naver, Kakao, LINE, Coupang, Woowa Bros जैसी प्रमुख IT companies, जिन्हें Nekarakuba कहा जाता है, आमतौर पर average से काफी बेहतर work culture और compensation रखती हैं
      शायद यह domestic ऐप है, इसलिए global स्तर पर लोकप्रिय apps जितनी पर्याप्त scrutiny नहीं मिली। हालांकि मेरे अनुभव में compensation US या कुछ Korean startups से कम था
    • impossible deadlines और hierarchical work culture सिर्फ Korea में नहीं, पूरी दुनिया में हैं
      फर्क यह लगता है कि Korea में government sector और chaebol IT market का बड़ा हिस्सा घेरे हुए हैं, इसलिए startup culture के पास फर्क पैदा करने की ज्यादा जगह नहीं है
      Kakao भी कभी cool startup था, लेकिन सफल होने के बाद से ऐसा लगता है कि वह chaebol की नकल करने की कोशिश करता रहा है
    • bosses या customers UI देख सकते हैं लेकिन security issues नहीं देख पाते—यह सिर्फ Korea की बात नहीं है
      culture की वजह से Korea में यह ज्यादा हो सकता है, लेकिन Western countries में भी यह निश्चित रूप से होता है और असल में लगभग universal problem है
    • सोच रहा हूं कि क्या यह मुद्दा Korean news या regulators की नजर में आएगा। stock price के अलावा भी accountability के रास्ते हो सकते हैं
    • hierarchical work culture ऐसा万能 बहाना बन गया है जिसे Americans East Asia में नापसंद चीजों को समझाने के लिए निकालते हैं
      America में किसी भी ठीक-ठाक size की white-collar company, खासकर tech, finance, consulting या FAANG में कुछ साल बिताइए, तो समझ आ जाएगा कि West भी वैसा ही है
      mid-level engineers अगले promotion cycle में आने के लिए VP की हां में हां मिलाते हैं, और companies “flat organization” की marketing अच्छी करती हैं, लेकिन असल में वह PR copy के करीब होती है
      PM या SVP instruction दे तो अक्सर कोई सीधे सवाल नहीं करता, बस बड़बड़ाते हुए काम कर देता है; और ऐसी company culture marketing पर सीधे विश्वास कर लेने वाला रवैया जिस तरह हल्की superior feeling तक जाता है, वह और भी खलता है
  • दिलचस्प बात यह है कि Western ride-sharing apps Korea में ज्यादा नहीं चलतीं, और यही company Korea की representative ride-hailing app भी बनाती है
    हाल की Seoul trip में उस app में login करने के लिए मुझे mobile chat app account बनाना पड़ा, user experience भी अच्छा नहीं था और ज्यादातर Korean में था, इसलिए काफी दिक्कत हुई
    इससे बहुत professional operation का impression नहीं मिला
    • कुछ साल पहले Korea में रहते हुए मुझे apps और services का अलग ecosystem बना होना interesting लगा
      KakaoTalk और Naver लगभग वही भूमिका निभा रहे थे जो West में WhatsApp/Meta और Google निभाते हैं
      multinational companies से competition बढ़ने के बावजूद उनका बचना शानदार लगता है। कई दूसरे देशों में पिछले 10 साल में local tech companies लगभग महत्वहीन हो गईं, और यह अफसोस की बात है
    • लगभग 5 साल पहले जब गया था, तो Korean bank account न होने के कारण मैं taxi apps बिल्कुल इस्तेमाल नहीं कर सका
      इसलिए सड़क से taxi पकड़ना भी मुश्किल था, और लग रहा था कि ज्यादातर taxis सिर्फ app से बुलाए गए customers को ही ले रही थीं
      एक बार किसी तरह taxi driver से संपर्क हुआ, लेकिन उसने “foreigner” होने के कारण बैठाने से मना कर दिया; पता नहीं वह सच में prejudice था, cash payment पसंद नहीं था, Korean language न समझ पाने की वजह थी या कोई misunderstanding
      बाद में जो taxi ride सफल हुई, उसमें भी route city के दूसरी तरफ पहाड़ पार करके जा रहा था, इसलिए जिस व्यक्ति के साथ date पर गया था उसे phone करके driver को समझाने के लिए कहना पड़ा कि रास्ता गलत है। मुझे लगता है यह बिना तैयारी किसी अनजान देश जाने का risk है
    • Korea में मुझे हैरानी इस बात पर हुई कि जिन tech products को मैं globally used समझता था, उनके local alternatives बहुत ज्यादा थे, और global/US versions की market penetration लगभग नहीं थी
      2015 की शुरुआत में visit करते समय Google ऐसा ही example था
    • Korean app का “ज्यादातर” Korean में होना जैसा सामान्य तथ्य user experience या professionalism की कमी से क्या संबंध रखता है, समझ नहीं आता
      आप Korean app किस भाषा में होने की उम्मीद कर रहे थे, French में?
    • जैसा दूसरों ने पहले ही कहा है, Uber Korea में, कम से कम Seoul में, काम करता है
      हालांकि मेरी समझ में वह असली Uber से ज्यादा Uber interface इस्तेमाल करने वाला KakaoTaxi proxy है
  • एक छोटी correction चाहिए। KakaoTalk WeChat जैसी “all-in-one” app नहीं है
    main chat app में gifting जैसे add-on features हैं, जिनसे यह vulnerability संभव हुई, लेकिन taxi hailing KakaoTalk में नहीं बल्कि mobility app Kakao T में होती है, जो rental scooters, e-bikes, train और flight booking भी देती है
    payment platform KakaoPay से integration है, लेकिन service खुद अलग app में है, और यह central ID से multiple services access करने वाले Android के Google जैसा ज्यादा है
    इसलिए app में कई access points होने की वजह भी शायद अपनी services के integrations ही होंगे
    • यह सही नहीं है
      WeChat की तरह KakaoPay KakaoTalk में काफी integrated है, इसलिए ज्यादातर users KakaoPay app नहीं, बल्कि KakaoTalk के अंदर ही KakaoPay इस्तेमाल करते हैं
      अलग KakaoPay app मौजूद है, इससे ज्यादा फर्क नहीं पड़ता, और KakaoPay app के बिना भी KakaoTalk में money transfer, receive और payments किए जा सकते हैं
  • reward सिर्फ Koreans के लिए है, यह देखकर लगता है कि इस point पर hackers से पिटना deserve करते हैं
    • Koreans के लिए भी maximum reward लगभग 7,000 dollars है; इतने security issues वाली app के लिए यह absurdly low है
    • यह structure bugs बेचने के लिए incentivize करता है
  • याद आता है कि Telegram founder ने brag किया था कि mobile client एक ही developer संभालता है, टीम की talent दिखाते हुए
    बाद में पता चला कि उस client में गलत user को messages दिखाने वाले bugs भरे पड़े थे
    mobile chat apps को “move fast and break things” तरीके से develop नहीं करना चाहिए, और Kakao जैसी all-in-one app का natural result शायद यही है
    • सोच रहा हूं कि क्या मतलब यह है कि mobile app में multiple user accounts add थे और एक account के messages दूसरे account की तरफ दिखा दिए गए
      अगर ऐसा नहीं है, तो यह client bug से ज्यादा server bug जैसा लगता है
    • chat apps कठिन होती हैं, और competing apps में भी ऐसे bugs काफी रहे हैं, इसलिए सिर्फ इससे quality खराब साबित नहीं होती
      और Telegram अब तक इस्तेमाल की गई chat apps में सबसे stable, feature-rich और easy-to-use में से रहा है
    • Telegram के बचाव में कहें तो ऐसी चीजें Facebook, Google, Apple जैसी large services में भी खूब हुई हैं
    • design by committee से बने software में भी भयानक bugs हो सकते हैं
    • Kakao निश्चित रूप से तेजी से move नहीं करता
  • यह shocking है कि Kakao के Bug Bounty Program में December 2023 में vulnerability report की, लेकिन reward सिर्फ Koreans को मिल सकता था, इसलिए कुछ भी नहीं मिला
    • कम से कम bug bounty site पर restriction publicly लिखा है
      लिखा है कि “देश-विदेश में रहने वाले Korean nationals” होना चाहिए
      https://bugbounty.kakao.com/home
      अगर किसी ने पैसे मिलने की उम्मीद से submit किया और बाद में पता चला कि यह Korean citizens तक सीमित है, तो यह और भी बुरा होता
      साथ ही reward भी बहुत कम है: minimum 50,000 won, यानी करीब 35 dollars से maximum 10 million won, यानी लगभग 7,100 dollars तक
    • Korea में ऐसी चीजें काफी common हैं
      foreigner के तौर पर पिछले 9 साल Seoul में startup बनाते हुए मैंने ऐसी चीजें कई बार झेली हैं
  • आजकल की software engineering practices पर एक कदम पीछे हटकर फिर से सोचना चाहिए
    देखना चाहिए कि वे long game के लिए हैं या कुछ लोगों को मिलने वाले short-term gains के लिए
  • Korea में तैनात US military personnel इस vulnerability से कितना प्रभावित हुए होंगे, यह जानना चाहता हूं
    क्या real-world में इसके exploit होने के बारे में कुछ known है?
  • service को 10 साल से ज्यादा हो गए हैं, लेकिन अभी भी web version नहीं है; हालांकि इस news को देखकर शायद यह अच्छी बात ही हो
    • फिर भी web version होता तो अच्छा होता। क्योंकि Linux पर wine के जरिए Kakao app को reliably चलाना मुश्किल है