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⁺
- ความร้ายแรงของช่องโหว่ความปลอดภัย: ช่องโหว่ที่พบในแอปยอดนิยมอย่าง KakaoTalk ตอกย้ำอีกครั้งถึงความสำคัญของการปกป้องข้อมูลผู้ใช้
- ความรับผิดชอบของนักพัฒนา: นักพัฒนาควรตรวจสอบความปลอดภัยอย่างรอบคอบ และต้องใส่ใจมากเป็นพิเศษกับฟีเจอร์ที่เกี่ยวข้องกับข้อมูลอ่อนไหว
- การให้ความรู้ผู้ใช้: ผู้ใช้เองก็ควรระวังไม่กดลิงก์ที่น่าสงสัย และยกระดับความตระหนักด้านความปลอดภัย เช่น เปิดใช้การยืนยันตัวตนสองขั้นตอน
- ความจำเป็นของงานวิจัยด้านความปลอดภัย: ควรมีการวิจัยด้านความปลอดภัยของแอปแชตในเอเชียอย่างจริงจังมากขึ้น เพื่อให้ค้นพบและแก้ไขช่องโหว่ได้ล่วงหน้า
- การเสนอทางเลือก: นอกจาก KakaoTalk แล้ว ยังอาจพิจารณาแอปส่งข้อความที่เน้นความปลอดภัยอย่าง Signal และ Telegram ได้ด้วย
ยังไม่มีความคิดเห็น