ช่องโหว่ด้านความปลอดภัยในเบราว์เซอร์ Comet ของ Perplexity: การโจมตีด้วยคำเชิญประชุมปฏิทินเพียงอย่างเดียวก็เพียงพอที่จะยึดครองและขโมยข้อมูลรับรอง 1Password
นักวิจัยด้านความปลอดภัยจากบริษัท Cure53 ได้ค้นพบช่องโหว่ร้ายแรงในเบราว์เซอร์ Comet ซึ่งพัฒนาโดย Perplexity AI ช่องโหว่นี้ช่วยให้ผู้โจมตีสามารถยึดครองเบราว์เซอร์และขโมยข้อมูลรับรองจากแอปพลิเคชัน 1Password ได้อย่างง่ายดาย โดยอาศัยเพียงคำเชิญประชุมปฏิทิน (calendar invite) เพียงฉบับเดียว การทดสอบแบบ proof-of-concept (POC) แสดงให้เห็นถึงความเสี่ยงที่แท้จริง โดยผู้โจมตีสามารถเข้าถึงข้อมูลที่ละเอียดอ่อนได้โดยไม่ต้องให้ผู้ใช้ดำเนินการเพิ่มเติมมากนัก
เบราว์เซอร์ Comet เป็นผลิตภัณฑ์ใหม่จาก Perplexity ซึ่งเป็นบริษัทผู้พัฒนาเครื่องมือค้นหาด้วยปัญญาประดิษฐ์ (AI) Comet สร้างบนพื้นฐานของ Electron framework ซึ่งเป็นเทคโนโลยีที่ใช้พัฒนาแอปพลิเคชันเดสก์ท็อปแบบクロスแพลตฟอร์ม โดยผสานรวมความสามารถของ AI เพื่อช่วยผู้ใช้ในการท่องเว็บ เช่น การสรุปเนื้อหาเว็บไซต์หรือการตอบคำถามโดยตรงจากหน้าเพจ อย่างไรก็ตาม การออกแบบที่มุ่งเน้นความสะดวกสบายนี้กลับเปิดช่องให้เกิดช่องโหว่ โดยเฉพาะในกระบวนการจัดการไฟล์ปฏิทิน (.ics) ซึ่ง Comet มีฟีเจอร์พิเศษในการแสดงตัวอย่าง (preview) คำเชิญประชุมโดยอัตโนมัติ
กระบวนการโจมตีเริ่มต้นด้วยการส่งคำเชิญประชุมปฏิทินที่เป็นอันตรายในรูปแบบไฟล์ .ics ไปยังผู้ใช้ เมื่อผู้ใช้เปิดอีเมลหรือแอปปฏิทินและคลิกเพื่อดูรายละเอียด คำเชิญดังกล่าวจะถูกส่งไปยัง Comet เพื่อการประมวลผล เนื่องจาก Comet ถูกตั้งค่าให้เป็นแอปหลักในการจัดการไฟล์ประเภทนี้ (default handler) เบราว์เซอร์จะเปิดหน้าต่างตัวอย่างโดยอัตโนมัติ ซึ่งโหลดเนื้อหาจาก URL ที่ฝังอยู่ในไฟล์ .ics โดยผู้โจมตีสามารถกำหนด URL นี้ให้ชี้ไปยังเซิร์ฟเวอร์ภายนอกที่ควบคุมได้
เมื่อหน้าตัวอย่างเปิดขึ้น ตัว renderer process ของ Electron (ซึ่งทำงานใน sandbox) จะโหลด JavaScript จากเซิร์ฟเวอร์ของผู้โจมตี สคริปต์นี้ใช้กลไก Inter-Process Communication (IPC) เพื่อสื่อสารกับ main process ซึ่งมีสิทธิ์เข้าถึงระบบปฏิบัติการระดับสูง IPC ใน Electron อนุญาตให้ renderer ส่งข้อความไปยัง main process ได้ หาก main process ไม่มีการตรวจสอบที่เข้มงวด สคริปต์ที่เป็นอันตรายก็สามารถเรียกใช้คำสั่ง native API ได้ เช่น การอ่านข้อมูลจาก keychain หรือ credential manager ของระบบ
จุดอ่อนหลักอยู่ที่การจัดการ IPC ใน Comet ซึ่งขาดการตรวจสอบสิทธิ์ (privilege separation) อย่างเหมาะสม สคริปต์จาก renderer สามารถส่งช่องทาง (channel) IPC พิเศษไปยัง main process เพื่อเรียกฟังก์ชันที่เข้าถึงข้อมูล 1Password โดยตรง 1Password เก็บข้อมูลรับรองในรูปแบบที่เข้ารหัสใน keychain ของ macOS (หรือ credential store ใน Windows) แต่ Comet สามารถถอดรหัสและดึงข้อมูลเหล่านี้ออกมาได้ เนื่องจาก main process มีสิทธิ์ native เต็มรูปแบบ นักวิจัยจาก Cure53 สร้าง POC ที่แสดงการขโมย vault ของ 1Password ทั้งหมด รวมถึงรหัสผ่านและข้อมูลลับอื่นๆ โดยไม่ต้องให้ผู้ใช้ป้อนรหัส master password เพิ่มเติม
นอกจากนี้ ช่องโหว่ยังขยายไปถึงการยึดครองเบราว์เซอร์ทั้งตัว ผู้โจมตีสามารถสั่ง main process ให้เปิดหน้าต่างใหม่ โหลดส่วนขยาย (extensions) ที่เป็นอันตราย หรือแม้กระทั่งบันทึกเซสชันผู้ใช้ การทดสอบ POC ใช้ไฟล์ .ics ที่มี URL ชี้ไปยังเซิร์ฟเวอร์ทดสอบ ซึ่งโหลด HTML page ง่ายๆ ที่เรียก IPC channel ชื่อ “comet://calendar-preview” เพื่อหลบเลี่ยงการตรวจจับ สคริปต์จะส่งคำสั่งให้ main process ดึงข้อมูลจากโมดูล 1Password integration ของ Comet ซึ่งออกแบบมาเพื่อความสะดวกในการล็อกอินอัตโนมัติ แต่กลับกลายเป็นจุดอ่อน
Cure53 ได้รายงานช่องโหว่นี้ต่อ Perplexity ในเดือนกรกฎาคม 2567 โดยทีมพัฒนาได้ตอบสนองอย่างรวดเร็วและปล่อยแพตช์แก้ไขในเวอร์ชัน 0.5.52 ภายใน 24 ชั่วโมงหลังการแจ้งเตือน การแก้ไขหลัก ได้แก่ การเพิ่มการตรวจสอบ IPC อย่างเข้มงวด โดยใช้ context isolation และ nodeIntegration ใน Electron เพื่อแยก renderer ออกจาก native APIs การจำกัดสิทธิ์ในการจัดการไฟล์ .ics ให้ Comet ไม่ใช่ default handler อีกต่อไป และการเพิ่ม prompt การยืนยันก่อนประมวลผลคำเชิญจากภายนอก นอกจากนี้ Perplexity ยังปรับปรุงการจัดการ permissions สำหรับการเข้าถึง keychain เพื่อป้องกันการอ่านข้อมูลโดยไม่ได้รับอนุญาต
ช่องโหว่นี้เน้นย้ำถึงความเสี่ยงในแอปพลิเคชัน Electron ที่ผสานรวมฟีเจอร์ native อย่างใกล้ชิด โดยเฉพาะเมื่อจัดการไฟล์จากภายนอก เช่น .ics ซึ่งมักถูกมองข้ามในด้านความปลอดภัย แม้ Comet จะมุ่งเน้นการใช้งาน AI เพื่อเพิ่มประสิทธิภาพ แต่การขาดการป้องกัน IPC ที่เหมาะสมทำให้ผู้ใช้ตกอยู่ในความเสี่ยงสูง โดยเฉพาะผู้ที่ใช้ 1Password หรือเครื่องมือจัดการรหัสผ่านอื่นๆ ผู้ใช้ควรอัปเดต Comet เป็นเวอร์ชันล่าสุดและหลีกเลี่ยงการเปิดคำเชิญจากแหล่งที่ไม่น่าเชื่อถือ
การค้นพบนี้มาจากการตรวจสอบด้านความปลอดภัยที่ Cure53 ดำเนินการให้ Perplexity ซึ่งครอบคลุมการทดสอบช่องโหว่หลากหลายประเภท รายงานเต็มรูปแบบเผยแพร่โดย Cure53 เพื่อให้ชุมชนนักพัฒนาเรียนรู้และปรับปรุง Perplexity ยืนยันว่าช่องโหว่ดังกล่าวไม่เคยถูกนำไปใช้จริงในโลกภายนอก แต่เหตุการณ์นี้เป็นเครื่องเตือนใจถึงความสำคัญของ security-by-design ในผลิตภัณฑ์ AI-driven
(จำนวนคำประมาณ 728 คำ)
This Article is sponsored by Gnoppix AI (https://www.gnoppix.org)