ช่องโหว่การประมวลผลโค้ดระยะไกล (RCE) ที่ร้ายแรงใน Mozilla Firefox เกิดจากการพิมพ์ผิดพลาดเพียงอักขระตัวเดียวในโค้ดการจัดการหน่วยความจำขยะ (garbage collection) ของ WebAssembly ในเอนจิ้น JavaScript SpiderMonkey โดยนักพัฒนาได้พิมพ์ ‘&’ (bitwise AND) แทนที่จะเป็น ‘|’ (bitwise OR) โดยไม่ได้ตั้งใจ นักวิจัยด้านความปลอดภัยชื่อ Erge ได้ค้นพบข้อบกพร่องนี้ใน Firefox 149 Nightly และสามารถใช้ประโยชน์จากช่องโหว่ดังกล่าวเพื่อรันโค้ดในกระบวนการเรนเดอร์ของ Firefox ได้สำเร็จ

     

Severity: วิกฤต

      
     

System Impact:

     

  • Mozilla Firefox (เฉพาะเวอร์ชัน 149 Nightly builds)
  • SpiderMonkey JavaScript engine
  • WebAssembly garbage collection code
  • Firefox renderer process

      
     

Technical Attack Steps:

     

  1. ช่องโหว่เกิดจากความผิดพลาดของโค้ดที่ตั้งใจเก็บค่า forwarding pointer ด้วยการดำเนินการ bitwise OR แต่กลับใช้ bitwise AND ด้วย 1 ทำให้ค่าที่เก็บเป็น 0 เสมอ
  2. เมื่อ garbage collector ย้าย Wasm arrays แต่ค่า forwarding pointer ไม่ถูกต้อง ทำให้ Ion (JIT compiler ของ SpiderMonkey) ระบุว่า array ยังคงอยู่ในตำแหน่งเดิม (inline) แทนที่จะเป็นตำแหน่งใหม่ (out-of-line)
  3. ส่งผลให้ฟังก์ชัน `wasm::Instance::updateFrameForMovingGC` ของ Ion ส่งคืนที่อยู่ array เก่าที่ถูกย้ายไปแล้ว แทนที่จะเป็นที่อยู่ใหม่ ซึ่งนำไปสู่เงื่อนไข Use-After-Free (UAF)
  4. นักวิจัยใช้เทคนิค heap spraying ด้วยค่าเฉพาะเพื่อเข้าควบคุมหน่วยความจำที่ถูกปลดปล่อย
  5. จากนั้นจึงสามารถอ่านและเขียนข้อมูลในหน่วยความจำได้ตามอำเภอใจ (arbitrary read/write primitives)
  6. หลีกเลี่ยง ASLR (Address Space Layout Randomization) โดยการฉีดวัตถุที่มีตัวชี้แบบ binary-relative
  7. เขียนทับตาราง vtable เพื่อควบคุมการไหลของโปรแกรม (hijack RIP) และสั่งรันคำสั่งระบบ (เช่น `/bin/sh`)
  8. ผลสำเร็จคือสามารถเปิดเชลล์ (shell) ได้

      
     

Recommendations:

     

Short Term:

     

  • ตรวจสอบและอัปเดต Firefox Nightly builds เป็นเวอร์ชันล่าสุดโดยทันทีหากใช้งานอยู่ เพื่อรับการแก้ไขช่องโหว่

     

Long Term:

     

  • ใช้งานซอฟต์แวร์เวอร์ชันที่เสถียรและได้รับการเผยแพร่สู่สาธารณะเท่านั้น หลีกเลี่ยงการใช้เวอร์ชันทดลอง (Nightly builds) ในสภาพแวดล้อมการทำงานที่สำคัญ
  • เปิดใช้งานการอัปเดตอัตโนมัติสำหรับเบราว์เซอร์และระบบปฏิบัติการทั้งหมด เพื่อให้มั่นใจว่าได้รับแพตช์ความปลอดภัยล่าสุดทันที
  • ติดตามข่าวสารและประกาศด้านความปลอดภัยจากผู้พัฒนาซอฟต์แวร์อย่างสม่ำเสมอ

      
     

Source: https://cybersecuritynews.com/firefox-0-day-rce/

   

Share this content:

Leave a Reply

Your email address will not be published. Required fields are marked *