ช่องโหว่ใน JavaScriptCore ของ Apple Safari ที่ทำให้สามารถโจมตีแบบ RCE ได้ กำลังถูกนำไปใช้ในการโจมตีจริง

ช่องโหว่ระดับ Critical หมายเลข CVE-2024-44308 กำลังถูกนำไปใช้ในการโจมตีอย่างต่อเนื่อง โดยกระทบกับ Apple Safari หลายเวอร์ชันบนแพลตฟอร์ม iOS, visionOS และ macOS

ช่องโหว่ดังกล่าวอยู่ภายในคอมไพเลอร์ DFG JIT ของ WebKit ทำให้เกิดการโจมตีในรูปแบบการเรียกใช้โค้ดที่เป็นอันตรายจากระยะไกลได้ (RCE)

ซอฟต์แวร์ และเวอร์ชันที่ได้รับผลกระทบ

ตารางสรุปซอฟต์แวร์ และเวอร์ชันที่ได้รับผลกระทบสำหรับช่องโหว่ CVE-2024-44308

Apple ได้แก้ไขช่องโหว่นี้ไปแล้วในแพตซ์อัปเดตล่าสุด ได้แก่ iOS 17.7.2, 18.1.1, visionOS 2.1.1 และ macOS Sequoia 15.1.1

การค้นพบ และการวิเคราะห์

ช่องโหว่นี้ได้รับการรายงานโดย Clément Lecigne และ Benoît Sevens จากกลุ่มวิเคราะห์ภัยคุกคามของ Google (Threat Analysis Group) และได้รับการวิเคราะห์เพิ่มเติมโดย Dohyun Lee จาก USELab, Korea University

ช่องโหว่นี้เกิดจากปัญหา register corruption ใน JavaScriptCore เนื่องจากการ allocation timing ของ scratch2GPR register ที่ไม่ถูกต้องภายในกระบวนการคอมไพล์ Speculative JIT

ช่องโหว่นี้ส่งผลกระทบต่อไฟล์ DFGSpeculativeJIT.cpp ใน WebKit โดยเฉพาะในวิธีการจัดการกับอาร์เรย์ที่มีชนิดข้อมูลเป็นจำนวนเต็ม (integer-typed arrays)

ช่องโหว่นี้จะเกิดขึ้นเมื่อ scratch2GPR register ถูก allocated หลังจากการเรียกฟังก์ชัน getIntTypedArrayStoreOperand() ซึ่งอาจทำให้เกิดการ register allocation ที่ไม่จำเป็นหากมีการเลือก slow path

การ allocated ที่ผิดพลาดนี้ สามารถสร้างสถานะ register ที่ไม่สอดคล้องกัน ซึ่งอาจก่อให้เกิดความเสี่ยงทางด้านความปลอดภัย

แพตช์ที่ได้รับการแก้ไข มีการปรับลำดับของการทำงานให้ถูกต้อง เพื่อให้มั่นใจว่า scratch2GPR register ถูกจัดการอย่างเหมาะสม และรักษาความสมบูรณ์ของสถานะ register เมื่อมีการใช้ slow path

การทำงานของโค้ดที่ทำให้เกิดช่องโหว่นี้ สามารถสรุปได้ดังนี้

  • เรียกใช้ฟังก์ชัน getIntTypedArrayStoreOperand(): ฟังก์ชันนี้ถูกเรียกใช้เพื่อจัดการ store operations ใน typed arrays
  • เพิ่ม Slow Path: อาจมีการใช้ Slow Path ซึ่งต้องมีการจัดการ registers อย่างรอบคอบ
  • การ Allocation ที่ไม่ถูกต้อง: scratch2GPR ถูก allocated อย่างไม่ถูกต้องหลัง Slow Path ซึ่งไม่ได้ถูกใช้ ทำให้เกิดความไม่สอดคล้องของสถานะที่อาจเกิดขึ้นได้

Proof-of-Concept (PoC)

PoC แม้จะยังไม่สมบูรณ์ แต่ก็ให้ข้อมูลเชิงลึกเกี่ยวกับการทริกเกอร์ช่องโหว่ โดยเกี่ยวข้องกับการจัดการกับ JavaScript objects และ arrays เพื่อเข้าถึงฟังก์ชันที่มีช่องโหว่

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

การตอบสนองของ Apple ในการจัดการกับช่องโหว่นี้อย่างรวดเร็ว แสดงให้เห็นถึงความพยายามอย่างต่อเนื่องในการรักษาความปลอดภัยแพลตฟอร์มของตนจากภัยคุกคามที่เกิดขึ้นใหม่

ที่มา : gbhackers