แซนด์บ็อกซ์ที่ไม่น่าเชื่อถือต้องอาศัยเครื่องมือเมื่อคุณต้องใช้ซอฟต์แวร์ที่ได้รับการพัฒนาของบุคคลที่สามในตําแหน่งที่คุณไม่มีสิทธิ์เข้าถึงซอร์สโค้ด หรือไม่มีทรัพยากรในการประเมินซอร์สโค้ด แซนด์บ็อกซ์ยังมีประโยชน์เป็นขอบเขตความปลอดภัยเพิ่มเติมสําหรับโค้ดของคุณเอง
เครื่องมือต่างๆ ใช้สําหรับเก็บโค้ด ทั้งนี้ขึ้นอยู่กับกรณีการใช้งาน ตารางด้านล่างแสดงภาพรวมของผลิตภัณฑ์ต่างๆ และกรณีการใช้งานที่เกี่ยวข้อง ผลิตภัณฑ์เหล่านี้บางอย่างใช้ภายใน Google และพัฒนาโดยวิศวกรของ Google
Sandbox2 และ Sandboxed API เป็นผลิตภัณฑ์ 2 อย่างที่พัฒนาขึ้นโดยฝ่ายแซนด์บ็อกซ์ของทีมงานด้านความปลอดภัยของ Google
ผลิตภัณฑ์ | คำอธิบาย | กรณีการใช้งาน |
---|---|---|
แซนด์บ็อกซ์ 2 | แซนด์บ็อกซ์ของ Linux โดยใช้เนมสเปซ ขีดจํากัดทรัพยากร และตัวกรอง seccomp-bpf syscall ระบุเทคโนโลยีแซนด์บ็อกซ์ที่ใช้สําหรับ API แซนด์บ็อกซ์ | แซนด์บ็อกซ์ทั่วไป |
gVisor | ใช้การเรียกของระบบภายในเคอร์เนลแอปพลิเคชัน สกัดกั้นระบบของระบบโดยใช้ ptrace หรือด้วยระบบฮาร์ดแวร์เสมือนจริง | แซนด์บ็อกซ์ทั่วไป |
ลูกโป่งคําพูด | เครื่องมือแซนด์บ็อกซ์ใช้งานได้ด้วยเนมสเปซชุดย่อย ใช้เป็นเครื่องมือดําเนินการ ตัวอย่างเช่น Flatpak | เครื่องมือ CLI |
มิจญิล | เครื่องมือแซนด์บ็อกซ์และคอนเทนเนอร์ที่ใช้ใน ChromeOS และ Android จัดเตรียมไฟล์ปฏิบัติการและไลบรารีที่ใช้เพื่อเปิดตัวและแซนด์บ็อกซ์โปรแกรมและโค้ดอื่นๆ ได้ | เครื่องมือ CLI |
NSJail | การแยกกระบวนการสําหรับ Linux โดยใช้เนมสเปซ ขีดจํากัดทรัพยากร และตัวกรอง syscomp-bpf syscall คุณเลือกที่จะใช้ Kafel ซึ่งเป็นภาษาที่กําหนดเองของโดเมนเฉพาะสําหรับระบุนโยบาย syscall ได้ | เครื่องมือ CLI |
แซนด์บ็อกซ์ API | แซนด์บ็อกซ์ที่ใช้ซ้ําสําหรับไลบรารี C/C++ ที่ใช้ Sandbox2 ได้ | โค้ด C/C++ |
ไคลเอ็นต์เนทีฟ | เลิกใช้งานแล้ว
เทคนิคประสิทธิภาพสูงที่ใช้ไบนารี C/C++ แบบแซนด์บ็อกซ์ โดยคอมไพล์ไปยังชุดย่อยที่จํากัดของ x86 (NaCl)/LLVM ไบต์รหัส (PNaCl) ได้รับอิทธิพลต่อการออกแบบของผู้สืบทอด (WebAssembly) และส่วนใหญ่นํามาใช้แทน |
โค้ด C/C++ |
WebAssembly (WASM) | รูปแบบไบนารีสําหรับไบนารีแบบพกพา โมดูล WASM จะทํางานในสภาพแวดล้อมรันไทม์ที่แยกออกมา | โค้ด C/C++ |
พอร์ทัล | API แซนด์บ็อกซ์ (เขียนใน C++17) ซึ่งสามารถใช้แบ็กเอนด์ของการดําเนินการต่างๆ ได้แก่ Native Client, WebAssembly หรือกระบวนการระยะไกล | โค้ด C/C++ |
แฟลตแพค | ต่อยอดจาก Bubblewrap เพื่อมอบแซนด์บ็อกซ์สําหรับแอปพลิเคชัน Linux บนเดสก์ท็อป ให้ความสําคัญกับบรรจุภัณฑ์และการเผยแพร่แอปที่มาพร้อมเครื่อง | แอปพลิเคชันเดสก์ท็อป |
แซนด์บ็อกซ์ 2
Sandbox2 เป็นแซนด์บ็อกซ์การรักษาความปลอดภัย C++ แบบโอเพนซอร์สสําหรับ Linux เมื่อใช้ Sandbox2 คุณจะจํากัดสภาพแวดล้อมรันไทม์ให้น้อยที่สุดเท่าที่จําเป็นสําหรับการทํางานจริง ซึ่งจะจํากัดผลกระทบจากช่องโหว่ในการเรียกใช้โค้ดที่อาจเกิดขึ้นได้
แซนด์บ็อกซ์2 สามารถใช้เพื่อแซนด์บ็อกซ์ทั้งโปรแกรมหรือบางส่วนของโปรแกรมที่เขียนใน C/C++
Sandboxed API
แซนด์บ็อกซ์ API (SAPI) เป็นโครงการโอเพนซอร์สสําหรับไลบรารี C/C++ แซนด์บ็อกซ์ ไลบรารีที่ทําแซนด์บ็อกซ์ด้วย Sandboxed API สามารถนํามาใช้ซ้ําได้อย่างง่ายดาย ซึ่งช่วยลดภาระสําหรับโครงการในอนาคต ก่อนที่จะใช้ Sandbox API นั้น แซนด์บ็อกซ์ที่พร้อมใช้งานสําหรับ Google จะขอการติดตั้งใช้งานเพิ่มเติมกับอินสแตนซ์ใหม่ของแต่ละโปรเจ็กต์ที่มีเจตนาที่จะใช้แซนด์บ็อกซ์ แม้ว่าจะต้องใช้ไลบรารีซอฟต์แวร์เดียวกันซ้ําก็ตาม นโยบาย Sandbox2 และข้อจํากัดอื่นๆ ที่นํามาใช้กับกระบวนการแซนด์บ็อกซ์จะต้องนํามาใช้ใหม่ทุกครั้ง และกลไกการแลกเปลี่ยนข้อมูลระหว่างส่วนที่เชื่อถือได้และไม่น่าเชื่อถือของโค้ดต้องได้รับการออกแบบใหม่ตั้งแต่ต้น