CHERIOT ซึ่งเป็นโครงการของ Microsoft เพื่อปรับปรุงความปลอดภัยใน C

เชอริออต

CHERIOT ตัวเลือก MS สำหรับการรักษาความปลอดภัยสำหรับระบบฝังตัว

ล่าสุดมีข่าวออกมาว่า Microsoft ได้เปิดการพัฒนาที่เกี่ยวข้องกับโครงการ CHERIOT (การขยายความสามารถของฮาร์ดแวร์เป็น RISC-V สำหรับ Internet of Things) มีไว้เพื่อป้องกันปัญหาด้านความปลอดภัยในโค้ด C และ C++ ที่มีอยู่เดิม. CHERIOT นำเสนอโซลูชันในการปกป้องฐานโค้ด C/C++ ที่มีอยู่โดยไม่ต้องปรับโครงสร้างใหม่

การป้องกันดำเนินการโดยใช้คอมไพเลอร์ที่แก้ไข ซึ่งใช้ชุดคำสั่งโปรเซสเซอร์เพิ่มเติมพิเศษ (ISA) ที่จัดเตรียมโดยโปรเซสเซอร์และตรวจสอบการเข้าถึงหน่วยความจำที่ระดับฮาร์ดแวร์ ตรวจสอบความถูกต้องของงานด้วยพอยน์เตอร์ และจัดให้มีการแยกบล็อกโค้ด

เกี่ยวกับ CHERIOT

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

แนวทางปฏิบัติแสดงให้เห็นว่าแม้แต่องค์กรขนาดใหญ่ เช่น Google และ Microsoft ซึ่งมีนโยบายตรวจสอบการเปลี่ยนแปลงที่เข้มงวดและใช้วิธีการพัฒนาที่ทันสมัยและเครื่องมือวิเคราะห์แบบคงที่ ก็ไม่สามารถรับประกันการทำงานโดยปราศจากข้อผิดพลาดกับหน่วยความจำได้ (เช่น ประมาณ 70% ของช่องโหว่ใน Microsoft และ Google เกิดจากการจัดการหน่วยความจำที่ไม่ปลอดภัย)

ปัญหา สามารถแก้ไขได้โดยใช้ภาษาโปรแกรมที่รับประกันการทำงานที่ปลอดภัยหรือกับหน่วยความจำหรือลิงก์ที่มีการควบคุมเพิ่มเติม ตัวอย่างเช่น โดยใช้ MiraclePtr (raw_ptr) แทนพอยน์เตอร์ทั่วไป ซึ่งดำเนินการควบคุมเพิ่มเติมเพื่อเข้าถึงพื้นที่หน่วยความจำที่ว่าง

ลูกแพร์ วิธีการดังกล่าวเหมาะสมกับโค้ดใหม่มากกว่า y ค่อนข้างลำบากในการปรับปรุงโครงการ C/C++ ที่มีอยู่ โดยเฉพาะอย่างยิ่งหากตั้งใจให้ทำงานในสภาพแวดล้อมที่จำกัดทรัพยากร เช่น ระบบฝังตัวและอุปกรณ์ IoT

ลอส ส่วนประกอบฮาร์ดแวร์ของ CHERIOT ได้รับการออกแบบเป็นไมโครคอนโทรลเลอร์ อิงตามสถาปัตยกรรม RISC-V โดยใช้สถาปัตยกรรมโปรเซสเซอร์ที่ปลอดภัย CHERI (ส่วนขยายของฮาร์ดแวร์ความจุสำหรับ RISC-V) ซึ่งจัดเตรียมโมเดลการเข้าถึงหน่วยความจำที่มีการควบคุม

ขึ้นอยู่กับ สถาปัตยกรรมชุดคำสั่ง (คือ) มีให้ใน CHERIoT โมเดลการเขียนโปรแกรมถูกสร้างขึ้นเพื่อรับประกันความปลอดภัยในการทำงานกับหน่วยความจำที่ระดับของออบเจกต์แต่ละรายการ ให้การป้องกันการเข้าถึงหน่วยความจำที่ว่างอยู่แล้ว และใช้ระบบแยกน้ำหนักเบาสำหรับการเข้าถึงหน่วยความจำ

โมเดลการป้องกันแบบเป็นโปรแกรมนี้จำลองโมเดลภาษา C/C++ โดยตรง ทำให้สามารถใช้เพื่อป้องกันแอปพลิเคชันที่มีอยู่ (ต้องคอมไพล์ใหม่และรันบนฮาร์ดแวร์ที่สอดคล้องกับ ISA CHERIoT เท่านั้น)

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

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

โครงการ รวมข้อมูลจำเพาะสำหรับสถาปัตยกรรมชุดคำสั่ง CHERIoT ส่วนขยาย การใช้งานอ้างอิงของ CPU RISC-V 32 บิตที่สอดคล้องกับ ISA CHERIoT และชุดเครื่องมือ LLVM ที่แก้ไขแล้ว

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม คุณควรรู้ว่า ไดอะแกรมต้นแบบ คำอธิบายบล็อก CPU และฮาร์ดแวร์ใน Verilog เผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 แกน Ibex ของโครงการ lowRISC ถูกใช้เป็นพื้นฐานสำหรับ CPU และโมเดลรหัส CHERIoT ISA ถูกกำหนดในภาษา Sail และเผยแพร่ภายใต้ใบอนุญาต BSD

นอกจากนี้ ยังมีการนำเสนอระบบปฏิบัติการแบบเรียลไทม์ CHERIoT RTOS ต้นแบบ ซึ่งให้ความสามารถในการแยกส่วน (ช่อง) แม้ในระบบฝังตัวที่มี RAM ขนาด 256 MB

รหัส เชอริออต RTOS เขียนด้วยภาษา C++ และเผยแพร่ภายใต้ลิขสิทธิ์ของ MIT ส่วนประกอบพื้นฐานของระบบปฏิบัติการ เช่น บูตโหลดเดอร์ ตัวกำหนดตารางเวลา และระบบจัดสรรหน่วยความจำ ได้รับการออกแบบในรูปแบบของช่อง


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

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

*

*

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