• V8 Sandbox คือแซนด์บ็อกซ์แบบ lightweight ภายในโปรเซสสำหรับเอนจิน V8
  • ตอนนี้พ้นจากระยะทดลองแล้ว และถูกรวมเข้าในโปรแกรมรางวัลช่องโหว่ (VRP) ของ Chrome
    • ยังมีปัญหาด้านความปลอดภัยที่ต้องแก้ไขอยู่ และ Chrome เวอร์ชัน 123 อาจถือได้ว่าเป็นรุ่น "เบตา" ของแซนด์บ็อกซ์

แรงจูงใจ

  • ความปลอดภัยของหน่วยความจำยังคงเป็นปัญหาสำคัญ โดยในช่วง 3 ปีที่ผ่านมา การโจมตี Chrome ที่ค้นพบทั้งหมดเริ่มต้นจากช่องโหว่ความเสียหายของหน่วยความจำใน V8
  • ช่องโหว่เหล่านี้ 60% เกิดขึ้นใน V8 แต่ส่วนใหญ่ไม่ใช่บั๊กความเสียหายของหน่วยความจำแบบ "ทั่วไป" หากแต่เป็นปัญหาเชิงตรรกะที่ซับซ้อน
  • โซลูชันด้าน memory safety ส่วนใหญ่ในปัจจุบันใช้กับ V8 ไม่ได้ และการย้ายไปใช้ภาษาแบบ memory-safe อย่าง Rust หรือฟีเจอร์ฮาร์ดแวร์อย่าง memory tagging ก็ไม่ได้ช่วยตอบโจทย์ความท้าทายด้านความปลอดภัยของ V8

V8 (heap) sandbox

  • แนวคิดพื้นฐานของแซนด์บ็อกซ์คือการแยก heap memory ของ V8 เพื่อไม่ให้ความเสียหายของหน่วยความจำ "ลุกลาม" ไปยังส่วนอื่นของโปรเซส
  • แม้จะสามารถทำได้ด้วยการสนับสนุนจากฮาร์ดแวร์ แต่ในปัจจุบันยังไม่มีฟีเจอร์ฮาร์ดแวร์ที่เหมาะสม จึงถูกนำมาใช้ในรูปแบบซอฟต์แวร์
  • แซนด์บ็อกซ์จะแทนที่ data type ที่สามารถเข้าถึงหน่วยความจำภายนอกทั้งหมดด้วยทางเลือกแบบ "sandbox-compatible"
  • มีเพียง V8 heap ภายในแซนด์บ็อกซ์เท่านั้นที่อยู่ในแซนด์บ็อกซ์ ซึ่งคล้ายกับโมเดลการ sandboxing ของ WebAssembly

ประสิทธิภาพ

  • ข้อดีหลักของแนวทางแซนด์บ็อกซ์คือโดยพื้นฐานแล้วมีต้นทุนต่ำ
  • overhead จากแซนด์บ็อกซ์ส่วนใหญ่เกิดจากการอ้างอิงแบบอ้อมผ่านตารางพอยน์เตอร์ไปยังอ็อบเจ็กต์ภายนอก โดยปัจจุบัน overhead น้อยกว่า 1% ในเวิร์กโหลดทั่วไป

การทดสอบ

  • ความสามารถในการทดสอบขอบเขตความปลอดภัย หมายถึงความสามารถในการทดสอบทั้งแบบ manual และอัตโนมัติ ว่าการรับประกันด้านความปลอดภัยยังคงทำงานได้จริงหรือไม่
  • V8 Sandbox ตอบโจทย์ครบทั้งการมีโมเดลผู้โจมตีที่ชัดเจน วิธีเลียนแบบผู้โจมตี และวิธีตัดสินโดยอัตโนมัติเมื่อขอบเขตความปลอดภัยล้มเหลว

การใช้งาน

  • V8 Sandbox ต้องเปิดหรือปิดใช้งานตอน build time ด้วย build flag v8_enable_sandbox
  • ใช้งานได้เฉพาะบนระบบ 64 บิต และปัจจุบันต้องจอง virtual address space ขนาด 1 เทราไบต์
  • V8 Sandbox ถูกเปิดใช้งานเป็นค่าเริ่มต้นใน Chrome รุ่น 64 บิตบน Android, ChromeOS, Linux, macOS และ Windows มาตั้งแต่ราว 2 ปีก่อนแล้ว

บทสรุป

  • V8 Sandbox คือกลไกความปลอดภัยใหม่ที่ออกแบบมาเพื่อป้องกันไม่ให้ความเสียหายของหน่วยความจำใน V8 ส่งผลกระทบต่อหน่วยความจำส่วนอื่นของโปรเซส
  • เทคโนโลยี memory safety ในปัจจุบันส่วนใหญ่ยังใช้กับเอนจิน JavaScript ที่มีการปรับแต่งอย่างหนักไม่ได้ แต่ V8 Sandbox มีประสิทธิภาพในการปกป้องพื้นผิวการโจมตีของมัน
  • แซนด์บ็อกซ์เป็นก้าวสำคัญที่จำเป็นต่อการมุ่งไปสู่ memory safety

ความเห็นของ GN⁺

  • V8 Sandbox คือแนวทางรับมือสมัยใหม่ต่อช่องโหว่ความเสียหายของหน่วยความจำ และเป็นคำตอบต่อปัญหาที่เทคโนโลยี memory safety แบบเดิมยังแก้ไม่ได้
  • เมื่อพิจารณาถึงความซับซ้อนของเอนจิน JavaScript แซนด์บ็อกซ์นี้มีบทบาทสำคัญในการเสริมความแข็งแรงของขอบเขตความปลอดภัยและยกระดับ memory safety
  • การที่แซนด์บ็อกซ์มี performance overhead ต่ำ อาจเป็นจุดที่ดึงดูดนักพัฒนา และช่วยให้เกิดการนำไปใช้อย่างแพร่หลาย
  • อย่างไรก็ตาม เทคโนโลยีแซนด์บ็อกซ์ก็อาจนำมาซึ่งช่องโหว่ด้านความปลอดภัยรูปแบบใหม่ได้เช่นกัน ซึ่งต้องจัดการด้วยการติดตามและทดสอบอย่างต่อเนื่อง
  • การทำให้แซนด์บ็อกซ์ทำงานได้อย่างมีประสิทธิภาพมีบทบาทสำคัญในการป้องกันไม่ให้ผู้โจมตีทำให้ความเสียหายของหน่วยความจำลุกลามไปยังส่วนอื่นของระบบ ซึ่งจะช่วยเสริมความปลอดภัยของเว็บ

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น