ทีมวิจัยจากมหาวิทยาลัย Wisconsin-Madison ได้อัปโหลด Extension ** เพื่อทำการทดสอบลงใน Chrome Web Store ซึ่งเป็น Extension ที่สามารถขโมยรหัสผ่านแบบ plaintext จาก source code ของเว็ปไซต์ได้
โดยจากการตรวจสอบช่องป้อนข้อความในเว็ปเบราว์เซอร์พบว่า รูปแบบการอนุญาตแบบ coarse-grained ที่สนับสนุน Extension ของ Chrome ละเมิดหลักการ least privilege และ complete mediation
นอกจากนี้ นักวิจัยพบว่ามีเว็ปไซต์หลายแห่งที่มีผู้เยี่ยมชมนับล้านราย รวมถึง portal ของ Google และ Cloudflare ที่เก็บรหัสผ่านในรูปแบบข้อความภายในโค้ด HTML บนหน้าเว็ปของตน ทำให้ Extension สามารถดึงข้อมูลเหล่านี้ได้
แหล่งที่มาของปัญหา
นักวิจัยอธิบายว่าปัญหานี้เกี่ยวกับ systemic practice ที่ให้ Extension ของเบราว์เซอร์สามารถเข้าถึง DOM tree ของเว็ปไซต์ที่โหลดโดยไม่มีข้อจำกัด ซึ่งช่วยให้เข้าถึงองค์ประกอบที่อาจมีความสำคัญ เช่น ช่องป้อนข้อมูลของผู้ใช้
เนื่องจากไม่มีขอบเขตด้านความปลอดภัยระหว่าง Extension กับองค์ประกอบของไซต์ Extension จึงสามารถเข้าถึงข้อมูลใน source code และสามารถดึงข้อมูลออกมาได้
นอกจากนี้ Extension อาจนำ DOM API มาใช้เพื่อดึงข้อมูลโดยตรงในขณะที่ผู้ใช้ป้อนข้อมูล โดยการ bypass การป้องกันข้อมูลที่มีความสำคัญ และขโมยข้อมูลออกมาได้
โปรโตคอล Manifest V3 ที่ Google Chrome แนะนำ และนำมาใช้โดยเบราว์เซอร์ส่วนใหญ่ในปีนี้ จะมีการจำกัดการใช้งาน API ที่ไม่เหมาะสม โดยห้าม Extension เรียกใช้งานโค้ดจากภายนอกที่จะช่วยในการหลีกเลี่ยงการตรวจจับ และป้องกันการใช้คำสั่ง eval ที่อาจนำไปสู่การเรียกใช้โค้ดได้ตามที่ต้องการ
อย่างไรก็ตาม นักวิจัยระบุว่า Manifest V3 ไม่ได้กำหนดขอบเขตด้านความปลอดภัยระหว่าง Extension และหน้าเว็ปไซต์ ดังนั้นปัญหาที่เกี่ยวข้องกับ content scripts ยังคงอยู่
การอัปโหลด PoC บน Web Store
เพื่อทดสอบกระบวนการตรวจสอบของ Google Web Store นักวิจัยตัดสินใจสร้าง Extension บน Chrome ที่สามารถโจมตีด้วยวิธีการ password-grabbing และพยายามอัปโหลดไปยังแพลตฟอร์ม
นักวิจัยได้สร้างส่วนขยายที่สวมรอยเป็น GPT-based assistant ซึ่งสามารถ :
1. แคปเจอร์ HTML source code เมื่อผู้ใช้พยายามเข้าสู่ระบบบนเพจโดยใช้ regex
2. ละเมิด CSS selectors เพื่อเลือกช่องป้อนข้อมูลเป้าหมาย และดึงเอาข้อมูลของผู้ใช้โดยใช้ฟังก์ชัน '.value'
3. ดำเนินการแทนที่องค์ประกอบเพื่อแทนที่ฟิลด์ที่ถูกเข้ารหัสด้วย JS ด้วยฟิลด์รหัสผ่านที่ไม่ปลอดภัย
Extension นี้ไม่มีโค้ดที่เป็นอันตรายอย่างเห็นได้ชัด ดังนั้นมันจึงสามารถหลีกเลี่ยงการตรวจสอบ และไม่เรียกใช้งานโค้ดจากแหล่งภายนอก (dynamic injection) ดังนั้นจึงสอดคล้องกับ Manifest V3
จากสาเหตนี้ส่งผลให้ Extension ผ่านการตรวจสอบ และได้รับการยอมรับบน Google Chrome Web Store ดังนั้นการตรวจสอบความปลอดภัยจึงไม่สามารถตรวจจับภัยคุกคามที่อาจเกิดขึ้นได้
ทีมงานได้ปฏิบัติตามมาตรฐานเพื่อให้แน่ใจว่าไม่มีข้อมูลจริงใด ๆ ถูกเก็บรวบรวม หรือนำไปใช้โดยที่ไม่เหมาะสม โดยปิดใช้งานเซิร์ฟเวอร์ในการรับข้อมูลในขณะที่ยังคงใช้งานเซิร์ฟเวอร์ที่เน้นการเข้าถึงองค์ประกอบเท่านั้น
นอกจากนี้ Extension ถูกตั้งค่าเป็น "ไม่เผยแพร่" ตลอดเวลาเพื่อไม่ให้มีการดาวน์โหลดจำนวนมาก และถูกลบออกจาก Google Chrome Web Store ทันทีหลังจากได้รับการอนุมัติ
ศักยภาพในการใช้ประโยชน์
การวัดผลภายหลังแสดงให้เห็นว่าจากเว็ปไซต์ 10,000 อันดับแรก (ตาม Tranco) ประมาณ 1,100 เว็ปไซต์เก็บรหัสผ่านของผู้ใช้ในรูปแบบ plaintext ภายใน HTML DOM
เว็ปไซต์อีก 7,300 แห่งจากชุดเดียวถือว่ามีความเสี่ยงต่อการเข้าถึง DOM API และการดึงค่าข้อมูลของผู้ใช้โดยตรง
เว็ปไซต์ที่มีการเข้าชมสูง และมีความเสี่ยงต่อการโจมตี (arxiv.