Google เปิดระบบเพื่อสร้างสภาพแวดล้อมแซนด์บ็อกซ์สำหรับ C / C ++

Google

บางวันที่ผ่านมา Google ประกาศเปิดโครงการ Sandboxed APIที่ ช่วยให้คุณสามารถสร้างกระบวนการสร้างแซนด์บ็อกซ์โดยอัตโนมัติสำหรับการดำเนินการแยกไลบรารีตามอำเภอใจใน C และ C ++

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

ความโดดเดี่ยวหรือทำได้โดยใช้ภายในรันไทม์ Sandbox2ซึ่งใช้เนมสเปซ cgroups และ seccomp-bpf

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

โปรเซสเข้าถึงได้เฉพาะความสามารถของระบบที่จำเป็นโดยตรงในการรันโค้ดแยก

Sandbox2 กำหนดส่วนประกอบเพื่อเรียกใช้กระบวนการหรือใช้กฎการแยกและสนับสนุนการดำเนินการในภายหลัง

แซนด์บ็อกซ์ 2 สามารถใช้แยกจาก Sandbox API เพื่อแยกไม่เพียง แต่ไลบรารีเท่านั้น แต่ยังรวมถึงกระบวนการโดยพลการด้วย

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

เกี่ยวกับ Sandboxed API

Sandboxed API คือปลั๊กอิน Sandbox2 ซึ่งช่วยลดความยุ่งยากในการขนส่งไลบรารีที่มีอยู่เพื่อรันในโหมดแยก

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

Se เข้าถึงไลบรารีที่แยกได้ผ่าน RPC เฉพาะตามโปรโตคอล ProtoBuffs

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

sapi- ภาพรวม

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

นอกจากนี้ API มีไว้เพื่อตรวจสอบการทำงานของกระบวนการที่แยกและเริ่มต้นใหม่ในกรณีที่เกิดความล้มเหลว

สำหรับไลบรารีที่แยกรหัสคำอธิบายประกอบของฟังก์ชันที่แยกจะถูกสร้างขึ้นโดยอัตโนมัติสำหรับระบบแอสเซมบลีของ Bazel และอินเตอร์เฟสโปรแกรม (SAPI) สำหรับการโต้ตอบระหว่างกระบวนการพื้นฐานและกระบวนการแยก

นักพัฒนาต้องสร้างไฟล์ส่วนหัวที่มีกฎการแยกซึ่งกำหนดการเรียกและการดำเนินการของระบบที่อนุญาตทั้งหมด (อ่านเขียนเปิดไฟล์เข้าถึงเวลาความสามารถในการติดตั้งตัวจัดการสัญญาณรองรับการจัดสรรหน่วยความจำผ่าน malloc ฯลฯ )

ไฟล์และไดเร็กทอรีที่ไลบรารีควรเข้าถึงจะถูกกำหนดแยกกัน

การติดตั้ง

ปัจจุบันโครงการนี้มีให้บริการสำหรับ Linux เท่านั้น แต่ในอนาคตพวกเขาสัญญาว่าจะเพิ่มการรองรับสำหรับระบบ macOS และ BSD และในระยะยาวและสำหรับ Windows ใช่ คุณต้องการติดตั้ง API แบบแซนด์บ็อกซ์คุณสามารถทำตามคำแนะนำที่กำหนด ในลิงค์นี้

นอกจากนี้ยังมีการบันทึกแผนไว้ด้วย ความสามารถในการแยกไลบรารีในภาษาอื่นที่ไม่ใช่ C และ C ++ การสนับสนุนรันไทม์เพิ่มเติมสำหรับการแยก (เช่นขึ้นอยู่กับการจำลองเสมือนของฮาร์ดแวร์) และความสามารถในการใช้ CMake และระบบประกอบอื่น ๆ (ขณะนี้การสนับสนุน จำกัด อยู่ที่ระบบบิลด์ Bazel)

Fuente: https://security.googleblog.com


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา