"แน่นอนว่า Firebase ก็เป็นสาเหตุด้วย (บางส่วน)"
- ระหว่างกระบวนการดาวน์โหลดไฟล์ติดตั้งของ AI editor อย่าง Cursor พบว่ามีการพยายามเชื่อมต่อไปยัง ToDesktop ผ่านไฟร์วอลล์ Lulu
- ToDesktop เป็นบริการที่ให้การแพ็กเกจแอป Electron, SDK, การอัปเดต และอื่น ๆ
- ยืนยันได้ว่าแอปใช้ Firestore จึงเริ่มสำรวจ Firebase เบื้องต้นผ่านเครื่องมือสำหรับนักพัฒนา
- Firebase: แพลตฟอร์ม backend สำหรับแอปจาก Google ที่รองรับการจัดเก็บและประมวลผลข้อมูลฝั่งไคลเอนต์ผ่านฐานข้อมูล NoSQL ชื่อ Firestore
- ใช้ DevTools และ sourcemap เพื่อตรวจดูคอลเล็กชันที่ถูกใช้งานใน Firestore
- พบคอลเล็กชันชื่อ
temporaryApplicationsแต่เป็นเพียงรายการเก่าและไม่มีข้อมูลอ่อนไหวใด ๆ (ไม่ได้อัปเดตตั้งแต่ปี 2022) - ยืนยันได้ว่าลอจิกหลักส่วนใหญ่และงาน deploy ทำผ่าน npm package
@todesktop/cli @todesktop/cliก็มี sourcemap เช่นกัน จึงใช้ sourcemapper เพื่อดูโครงสร้างซอร์สต้นฉบับ
เจาะดู ToDesktop CLI
- ToDesktop CLI: รับผิดชอบฟีเจอร์หลักอย่างการ deploy แอป การอัปโหลดซอร์สโค้ด และอื่น ๆ
- ระหว่างวิเคราะห์ sourcemap ของ CLI พบช่องโหว่ที่สามารถนำ Firebase Cloud Function
getSignedURLไปใช้ในทางที่ผิดเพื่อพยายามอัปโหลดไฟล์ไปยัง S3 ตามอำเภอใจได้ แต่ดูเหมือนจะหา file path ที่มีความหมายจริง ๆ ได้ยาก
ยึด pipeline การ deploy ผ่านสคริปต์ postinstall
- เป้าหมายคือการได้สิทธิ์รันโค้ดในคอนเทนเนอร์ (เซิร์ฟเวอร์) ที่กำลังทำการ build
- ใส่ payload แบบ reverse shell ลงในสคริปต์
postinstallของpackage.jsonแล้วรับการเชื่อมต่อจากคอนเทนเนอร์ที่ใช้ build - เข้าถึงภายในคอนเทนเนอร์ได้สำเร็จ และตรวจสอบโครงสร้างของสภาพแวดล้อม build กับไฟล์สำคัญต่าง ๆ
- พบไฟล์
config.json.encryptedและยังหาวิธีถอดรหัสได้ ทำให้ดึงข้อมูลลับจริง (config.json) ออกมาได้ - นอกจากนี้ยังพบ Firebase Admin key (คีย์ที่มีสิทธิ์กว้างขวาง) อยู่ภายในด้วย
Post-exploitation
- ช่องโหว่นี้ทำให้สามารถปล่อยอัปเดตแอปตามใจได้ และเมื่อผู้ใช้รีสตาร์ตแอปก็สามารถรันโค้ดอันตรายได้ทันที
- มีการทดสอบปล่อยอัปเดตให้แอปทดสอบจริง และสามารถทำ RCE (การรันโค้ดจากระยะไกล) ฝั่งไคลเอนต์ได้สำเร็จ
ขอบเขตผลกระทบ
- สามารถปล่อยอัปเดตอันตรายให้กับทุกแอปที่ใช้ ToDesktop ได้ จึงเป็นปัญหาที่อาจกระทบผู้ใช้มากกว่าหลายล้านคน
- แอปที่ถูกยกตัวอย่าง:
- ClickUp (https://clickup.com)
- Cursor (https://cursor.com) (ปัจจุบันย้ายไปใช้ระบบ build ของตัวเองแล้ว)
- Linear (https://linear.app)
- Notion Calendar (https://calendar.notion.so)
- โดยเฉพาะผู้ใช้ของแอปเหล่านี้จำนวนมากทำงานอยู่ในวงการ IT และเทคโนโลยี จึงมีโอกาสที่ความเสียหายจากการโจมตีจะสูง
The fix
- หลังรายงานปัญหา ก็ได้ติดต่อกับฝั่ง ToDesktop ทันทีเพื่อดำเนินการแก้ไข
- ToDesktop แก้ปัญหาได้อย่างรวดเร็วและมอบรางวัลเพิ่มเติมให้
- มีการเปลี่ยนสถาปัตยกรรมให้การเซ็น การอัปโหลด และงานสำคัญอื่น ๆ ไปรันใน sidecar container ที่มีสิทธิ์แยกจาก build container
- อ่านรายงาน security incident อย่างเป็นทางการของ ToDesktop ได้ที่นี่
- เหตุการณ์ด้านความปลอดภัยสามารถเกิดขึ้นได้กับทุกบริษัท แต่สิ่งสำคัญคือท่าทีในการรับมือ และ ToDesktop ก็จัดการได้อย่างรวดเร็วและให้ความร่วมมือดีจนทิ้งความประทับใจในแง่บวกไว้
ยังไม่มีความคิดเห็น