TL;DR

  • ใน KakaoTalk เวอร์ชัน 10.4.3 มีปัญหาการตรวจสอบ deep link ที่ทำให้ผู้โจมตีระยะไกลสามารถรัน JavaScript ตามต้องการใน WebView และทำให้ access token รั่วไหลออกไปใน HTTP request header ได้
  • โทเค็นนี้สามารถถูกใช้เพื่อยึดบัญชีของผู้ใช้อื่น และลงทะเบียนบัญชีนั้นบนอุปกรณ์ที่ผู้โจมตีควบคุมเพื่ออ่านข้อความแชตได้
  • บั๊กนี้ถูกกำหนดรหัสเป็น CVE-2023-51219

ภูมิหลัง

  • KakaoTalk เป็นแอปแชตยอดนิยมที่สุดของเกาหลี โดยมียอดดาวน์โหลดมากกว่า 100 ล้านครั้ง
  • โดยปกติแล้ว KakaoTalk ไม่ได้ใช้การเข้ารหัสแบบ end-to-end (E2EE)
  • แม้จะมีฟีเจอร์ E2EE แบบเลือกใช้ชื่อว่า "Secure Chat" แต่ไม่รองรับการส่งข้อความแบบกลุ่มหรือการโทรด้วยเสียง

Entry Point: CommerceBuyActivity

  • WebView ของ CommerceBuyActivity เป็นจุดเริ่มต้นหลักที่น่าสนใจสำหรับผู้โจมตี
    • สามารถเริ่มต้นได้ผ่าน deep link (adb shell am start kakaotalk://buy)
    • เปิดใช้งาน JavaScript (settings.setJavaScriptEnabled(true);)
    • รองรับสคีม intent:// ทำให้สามารถส่งข้อมูลไปยังคอมโพเนนต์แอปภายในที่ไม่เปิดเผยต่อสาธารณะอื่น ๆ ได้
    • มีการตรวจสอบ intent:// URI ไม่เพียงพอ จึงอาจเข้าถึงคอมโพเนนต์ของแอปได้แทบทั้งหมด
    • ทำให้ access token รั่วไหลผ่าน HTTP header Authorization

DOM XSS ผ่าน URL redirect

ยึดบัญชี Kakao Mail ผ่าน deep link

  • สามารถส่ง access token ของผู้ใช้ไปยังเซิร์ฟเวอร์ของผู้โจมตีผ่าน deep link ที่เป็นอันตรายได้
  • ใช้ access token นี้เพื่อยึดบัญชี Kakao Mail ของเหยื่อ หรือสร้างบัญชีเมลใหม่แล้วเขียนทับอีเมลเดิมได้

รีเซ็ตรหัสผ่าน KakaoTalk ด้วย Burp

  • สามารถพยายามรีเซ็ตรหัสผ่านได้หลังจากเข้าถึงบัญชี Kakao Mail ของเหยื่อ
  • เพื่อข้ามการยืนยันตัวตนสองขั้นตอน (2FA) มีการใช้ Burp เพื่อดักจับและแก้ไขคำขอ

PoC

  • ผู้โจมตีเตรียม deep link ที่เป็นอันตรายไว้ และเมื่อเหยื่อกดคลิกก็จะทำให้ access token รั่วไหล
  • จากนั้นใช้ access token ที่รั่วไหลเพื่อรีเซ็ตรหัสผ่านของเหยื่อ และลงทะเบียนอุปกรณ์ของผู้โจมตีกับบัญชี KakaoTalk ของเหยื่อ

Takeaways

  • ยังมีแอปแชตยอดนิยมที่สามารถถูกขโมยข้อความของผู้ใช้ได้ด้วยห่วงโซ่การโจมตีที่ไม่ซับซ้อนนัก
  • หากนักพัฒนาแอปทำพลาดง่าย ๆ เพียงไม่กี่จุด โมเดลความปลอดภัยอันแข็งแกร่งของ Android และการเข้ารหัสข้อความก็ไม่อาจช่วยได้
  • แอปแชตในเอเชียยังคงถูกประเมินความสำคัญต่ำเกินไปในชุมชนวิจัยด้านความปลอดภัย

ความเห็นของ GN⁺

  1. ความร้ายแรงของช่องโหว่ความปลอดภัย: ช่องโหว่ที่พบในแอปยอดนิยมอย่าง KakaoTalk ตอกย้ำอีกครั้งถึงความสำคัญของการปกป้องข้อมูลผู้ใช้
  2. ความรับผิดชอบของนักพัฒนา: นักพัฒนาควรตรวจสอบความปลอดภัยอย่างรอบคอบ และต้องใส่ใจมากเป็นพิเศษกับฟีเจอร์ที่เกี่ยวข้องกับข้อมูลอ่อนไหว
  3. การให้ความรู้ผู้ใช้: ผู้ใช้เองก็ควรระวังไม่กดลิงก์ที่น่าสงสัย และยกระดับความตระหนักด้านความปลอดภัย เช่น เปิดใช้การยืนยันตัวตนสองขั้นตอน
  4. ความจำเป็นของงานวิจัยด้านความปลอดภัย: ควรมีการวิจัยด้านความปลอดภัยของแอปแชตในเอเชียอย่างจริงจังมากขึ้น เพื่อให้ค้นพบและแก้ไขช่องโหว่ได้ล่วงหน้า
  5. การเสนอทางเลือก: นอกจาก KakaoTalk แล้ว ยังอาจพิจารณาแอปส่งข้อความที่เน้นความปลอดภัยอย่าง Signal และ Telegram ได้ด้วย

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น