Extension อันตรายบน Chrome สามารถขโมยรหัสผ่านแบบ plaintext จากเว็ปไซต์ได้

ทีมวิจัยจากมหาวิทยาลัย 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.org)

เอกสารทางเทคนิคที่นักวิจัยจากมหาวิทยาลัย Wisconsin-Madison ตีพิมพ์เมื่อต้นสัปดาห์นี้ระบุว่า Extension ประมาณ 17,300 รายการใน Chrome Web Store (12.5%) มีสิทธิ์ในการดึงข้อมูลสำคัญจากเว็ปไซต์

หลายรายการนั้น รวมถึงโฆษณาบล็อกเกอร์ และแอปช็อปปิ้งที่ใช้กันอย่างแพร่หลาย ซึ่งมีการดาวน์โหลดหลายล้านครั้ง

ตัวอย่างเว็ปไซต์ที่มีช่องโหว่ในเรื่องความปลอดภัยในรายงานมีดังนี้ :

gmail.com – plaintext passwords on HTML source code
cloudflare.com – plaintext passwords on HTML source code
facebook.com – input ของผู้ใช้งานสามารถดึงข้อมูลได้ผ่าน DOM API
citibank.com – input ของผู้ใช้งานสามารถดึงข้อมูลได้ผ่าน DOM API
irs.gov – SSNs จะปรากฏในรูปแบบ plaintext บน source code ของหน้าเว็ป
capitalone.com – SSNs จะปรากฏในรูปแบบ plaintext บน source code ของหน้าเว็ป
usenix.org – SSNs จะปรากฏในรูปแบบ plaintext บน source code ของหน้าเว็ป
amazon.com – ข้อมูลบัตรเครดิต (รวมถึงรหัสความปลอดภัย) และ ZIP code ถูกแสดงในรูปแบบรหัสผ่าน plaintextบน source code ของหน้าเว็ป

Gmail และ Facebook เสี่ยงต่อการดึงข้อมูล input ของผู้ใช้ (arxiv.org)

สุดท้ายนี้การวิเคราะห์แสดงให้เห็นว่า Extension 190 รายการ (บางส่วนมีการดาวน์โหลดมากกว่า 100,000 ครั้ง) เข้าถึงฟิลด์รหัสผ่านโดยตรง และเก็บค่าไว้ในตัวแปร แสดงให้เห็นว่าผู้โจมตีบางรายอาจกำลังพยายามใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยดังกล่าว

BleepingComputer ได้ขอข้อมูลไปยังบริษัทที่กล่าวถึงเพื่อสอบถามว่ามีแผนที่จะแก้ไขความเสี่ยงในบทความหรือไม่ และปัจจุบันได้รับคำตอบจาก Amazon และ Google ดังนี้

Amazon ระบุว่า ความปลอดภัยของลูกค้าเป็นสิ่งสำคัญสูงสุด และ Amazon ได้ดำเนินการหลายขั้นตอนเพื่อปกป้องข้อมูลเหล่านี้ ข้อมูลของลูกค้าที่ถูกป้อนลงในเว็ปไซต์ Amazon จะถูกเก็บรักษาอย่างปลอดภัย ขอแนะนำให้นักพัฒนาเบราว์เซอร์ และ Extension ใช้แนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุดเพื่อปกป้องผู้ใช้งานที่ใช้บริการของตนต่อไป

Google ยืนยันว่าพวกเขากำลังตรวจสอบเรื่องนี้ และชี้ไปที่คำถามที่พบบ่อยเกี่ยวกับความปลอดภัยของ Extension ใน Chrome ซึ่งไม่ถือว่าการเข้าถึงฟิลด์รหัสผ่านเป็นปัญหาความปลอดภัย ถ้าหากสิทธิ์ที่เกี่ยวข้องถูกขออนุญาตมาอย่างถูกต้อง

ที่มา : bleepingcomputer