บทนำ
- โพสต์บล็อกนี้อธิบายกระบวนการค้นพบช่องโหว่ CVE-2024-6778 และ CVE-2024-5836 ในเว็บเบราว์เซอร์ Chromium
- ช่องโหว่นี้ทำให้สามารถหลุดออกจากแซนด์บ็อกซ์ผ่านส่วนขยายของเบราว์เซอร์ได้
- Google จ่ายเงินรางวัล $20,000 สำหรับรายงานบั๊กนี้
WebUI และ Chrome Sandbox
- Chromium รันโค้ดที่ไม่น่าเชื่อถือภายในสภาพแวดล้อมแซนด์บ็อกซ์ เพื่ออนุญาตให้มีการโต้ตอบได้อย่างจำกัดเท่านั้น
- WebUI ถูกใช้เพื่อแสดง GUI ของ Chromium และมีสิทธิ์ในการเข้าถึง API ภายในบางตัว
- โค้ดที่รันบนหน้า WebUI สามารถข้ามแซนด์บ็อกซ์ได้ ทำให้ผู้โจมตีสามารถนำไปใช้ประโยชน์ได้
นโยบายองค์กร
- ระบบนโยบายองค์กรของ Chromium มีไว้เพื่อบังคับใช้การตั้งค่าบางอย่างกับอุปกรณ์ที่เป็นของบริษัทหรือโรงเรียน
- นโยบายผู้ใช้จะถูกใช้กับผู้ใช้เฉพาะรายหรืออินสแตนซ์ของเบราว์เซอร์บางตัว และสามารถตั้งค่าได้จากในเครื่อง
Policy WebUI
- Chromium มี WebUI สำหรับดูนโยบายที่ถูกใช้กับอุปกรณ์ปัจจุบัน
- มีฟีเจอร์ที่ไม่เป็นทางการซึ่งสามารถแก้ไขนโยบายได้จากหน้านี้
การโจมตีผ่านหน้าทดสอบนโยบาย
- พบการกล่าวถึงหน้าทดสอบนโยบายในบันทึกประจำรุ่นของ Chrome v117
- หน้านี้มีวิธีที่ไม่เป็นทางการในการตั้งค่านโยบาย
การหลุดออกจากแซนด์บ็อกซ์
- สามารถโจมตีเพื่อหลุดออกจากแซนด์บ็อกซ์ได้โดยอาศัยฟังก์ชันที่ตั้งค่านโยบายผู้ใช้แบบใดก็ได้ตามต้องการ
- สามารถใช้ฟีเจอร์ Browser Switcher เพื่อรันคำสั่งเชลล์ตามต้องการได้
การโจมตีผ่าน DevTools API
- พบวิธีทำให้ส่วนขยาย Chrome ที่เป็นอันตรายรัน JS บนหน้า
chrome://policy ได้โดยอัตโนมัติ
- ใช้ API
chrome.devtools.inspectedWindow.reload() เพื่อรันโค้ดบนหน้า WebUI
บทสรุป
- แสดงให้เห็นว่าความผิดพลาดเล็ก ๆ หลายจุดเมื่อซ้อนกันอาจนำไปสู่ช่องโหว่ความรุนแรงสูงได้
- โค้ดเก่าไม่ได้ปลอดภัยเสมอไป และควรคำนึงถึงความเป็นไปได้ที่จะเกิดบั๊กลักษณะคล้ายกัน
สรุปโดย GN⁺
- โพสต์บล็อกนี้อธิบายอย่างละเอียดถึงกระบวนการค้นพบและรายงานช่องโหว่ใน Chromium
- ช่องโหว่นี้ทำให้สามารถหลุดออกจากแซนด์บ็อกซ์ผ่านส่วนขยายของเบราว์เซอร์ได้ และได้รับเงินรางวัล $20,000 จาก Google
- บทความนี้ให้ข้อมูลที่เป็นประโยชน์สำหรับนักวิจัยด้านความปลอดภัยและวิศวกรซอฟต์แวร์ พร้อมบทเรียนเพื่อป้องกันช่องโหว่ลักษณะคล้ายกัน
- โปรเจกต์อื่นที่มีความสามารถคล้ายกันซึ่งอาจแนะนำได้คือฟีเจอร์ด้านความปลอดภัยของ Firefox
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ทำให้นึกถึงตอนที่ดีบักเชลล์ "crosh" ของ Chrome OS แล้วใช้ API เดียวกันเพื่อหลบเลี่ยงการป้องกันของระบบปฏิบัติการและได้สิทธิ์เข้าถึงระดับรูท ผู้เขียนบทความนี้ก้าวข้ามอุปสรรคที่ยากกว่านั้นไปได้ เป็นงานที่ยอดเยี่ยม
เพื่อป้องกันไม่ให้ URL ของหน้าถูกแทนที่ด้วย ${url} สามารถใส่ไว้หลัง # เพื่อให้กลายเป็นคอมเมนต์ได้ สงสัยว่ามีตรรกะตรวจสอบหรือไม่ว่า URL ควรถูกส่งไปยัง AlternativeBrowserParameters หรือไม่
บทความและผลงานยอดเยี่ยมมาก รู้สึกถึงความตื่นเต้นร่วมไปกับกระบวนการค้นพบ เป็นรางวัลที่สมควรแล้ว
เป็นห่วงโซ่ช่องโหว่ที่ยอดเยี่ยมและบทความที่เขียนได้ดี การวิเคราะห์โค้ดที่มีช่องโหว่ก็ทำได้ดีด้วย ประทับใจกับลูกเล่นง่าย ๆ อย่าง "กด F12 แล้วลองอีกครั้ง" อยู่เสมอ
ดึกเกินกว่าจะเจาะลึกปัญหาของการตรวจสอบ WebUI แล้ว แต่ขอชื่นชมคนที่แก้ปัญหานี้ได้ ปกติเรามักตั้งข้อสงสัยและไม่ไว้วางใจ toolchain สำหรับสิ่งที่เราปล่อยออกไป แต่ขณะเดียวกันก็กลับเชื่อใจเครื่องมือนักพัฒนาที่สะดวกสบายจากบริษัทยักษ์ใหญ่อย่าง Google หรือ MS มากเกินไป เพราะส่วนใหญ่แค่อยากโฟกัสกับการเขียนและทดสอบโค้ดของตัวเอง
นี่เป็นหนึ่งในงานเขียนที่ดีที่สุดที่เคยอ่านมา เป็นงานสืบสวนที่ฉลาดมาก
Allen บอกว่าตัวเองเป็นนักเรียนมัธยมปลายที่สนใจการเขียนโปรแกรม การพัฒนาเว็บ และความมั่นคงไซเบอร์ น่าประทับใจมาก
โครงการ Chromium ตัดสินใจลบ chrome://net-internals ออกเพราะหน้ามีความซับซ้อนเกินไป แล้วก็เพิ่ม chrome://policy พร้อมรองรับการแก้ไข JSON แบบยังไม่สมบูรณ์
เป็นบทความที่เจ๋งมาก อ่านแล้วเหมือนนิยายระทึกขวัญ เป็นห่วงโซ่ช่องโหว่ที่ยอดเยี่ยม