Tags:
Node Thumbnail

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

Mozilla ร่วมกับทีมวิจัยจากมหาวิทยาลัย 3 แห่งคือ University of California San Diego, University of Texas Austin, Stanford University พัฒนาเทคนิคใหม่ชื่อ RLBox แก้ปัญหานี้ด้วยการแปลงโค้ด C/C++ เป็น WebAssembly ก่อน เพื่อรันใน sandbox ของ WebAssembly แทน

WebAssembly เป็นเทคนิคการแปลง C/C++ เป็นไบนารีรันในเบราว์เซอร์ เพื่อให้ประสิทธิภาพที่ดีกว่า JavaScript ส่วนเรื่องความปลอดภัย จะรันใน VM แยกเฉพาะอยู่แล้ว ปัจจุบัน WebAssembly เป็นมาตรฐานของ W3C เรียบร้อย และรองรับโดยเบราว์เซอร์ทุกตัว

ที่ผ่านมา WebAssembly ถูกใช้งานใน "เว็บเพจ" เพียงอย่างเดียว เทคนิค RLBox คือการนำโค้ดบางส่วนของตัวเบราว์เซอร์ (ในที่นี้คือ Firefox) ที่เขียนด้วย C/C++ มาแปลงเป็น WebAssembly (wasm) เพื่อใช้ประโยชน์จากฟีเจอร์ความปลอดภัย sandbox/VM นั่นเอง

No Description

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

Mozilla ระบุว่าพยายามนำโค้ดจาก WebAssembly มาใช้กับ RLBox ให้มากที่สุด แต่ในรายละเอียดก็ยังมีความต่างกันอยู่บ้าง เพราะโค้ดของเบราว์เซอร์ต้องคอมไพล์ล่วงหน้า (ahead-of-time) ตั้งแต่แรก และคอมไพล์เป็นไบนารีแล้วใช้ครั้งเดียว ไม่ต้องคอมไพล์ใหม่ทุกครั้งเหมือน WebAssembly บนเว็บเพจ

เทคนิค RLBox จะเริ่มใช้งานใน Firefox 74 (เฉพาะลินุกซ์) และ Firefox 75 (แมค) ส่วนเวอร์ชันวินโดวส์จะตามมาในระยะถัดไป

ที่มา - Mozilla

Get latest news from Blognone

Comments

By: hisoft
ContributorWindows PhoneWindows
on 9 March 2020 - 16:30 #1150592
hisoft's picture

และคอมไพล์เป็นไบนารีแล้วใช้ครั้งเดียว ไม่ต้องคอมไพล์ใหม่ทุกครั้ง

และคอมไพล์เป็นไบนารีแล้วใช้ครั้งเดียว -> และคอมไพล์เป็นไบนารีพร้อมใช้เพียงครั้งเดียว ?

edit - อ่านที่มาแล้วเหมือนว่าต้องคอมไพล์ทุกครั้งที่เปิด Firefox ใหม่หรือเปล่าครับ? เห็นบอกว่า compile แล้วแชร์ระหว่าง sandbox แทนที่จะ compile ทุกครั้งที่เปิด sandbox ใหม่

By: mr_tawan
ContributoriPhoneAndroidWindows
on 9 March 2020 - 18:08 #1150616
mr_tawan's picture

จริง ๆ ก็ไม่ค่อยเห็นคนใช้ Graphite เท่าไหร่แฮะ ส่วนใหญ่จะใช้ FreeType กัน


  • 9tawan.net บล็อกส่วนตัวฮับ