CHERIOT, проект на Microsoft за подобряване на сигурността в C

CHERIOT

CHERIOT, MS опция за сигурност за вградени системи

Новините наскоро разкриха това Microsoft отвори разработките, свързани с проекта CHERIOT (Хардуерно разширение на възможностите към RISC-V за Интернет на нещата), предназначен да блокира проблеми със сигурността в C и C++ кода съществуващ. CHERIOT предлага решение за защита на съществуващи C/C++ кодови бази, без да се налага да ги преработвате.

Защитата се реализира чрез модифициран компилатор който използва специален разширен набор от процесорни инструкции (ISA), осигурен от процесора и следи достъпа до паметта на хардуерно ниво, проверява коректността на заданието с указатели и осигурява изолиране на кодов блок.

Относно CHERIOT

Проектът е създаден с разбирането, че природата на ниско ниво на езика C става източник на грешки в паметта, което води до проблеми като препълване на буфера, достъп до вече освободена памет, дерефериране на указател или двойно освобождаване.

Практиката показва, че дори големи корпорации като Google и Microsoft, които имат строга политика за преглед на промените и използват съвременни методи за разработка и инструменти за статичен анализ, не могат да гарантират безпроблемна работа с памет (например около 70% от уязвимостите в Microsoft и Google са причинени от несигурно управление на паметта).

Проблемът Може да се реши с помощта на езици за програмиране, които гарантират безопасна работа.или с памет или връзки с допълнителни контроли, например чрез използване на MiraclePtr (raw_ptr) вместо общи указатели, което изпълнява допълнителни контроли за достъп до освободени области на паметта.

Pero такива методи са по-подходящи за нов код y доста обезпокоително е да се преработват съществуващи C/C++ проекти, особено ако са предназначени да работят в среди с ограничени ресурси, като вградени системи и IoT устройства.

Лос Хардуерните компоненти на CHERIOT са проектирани като микроконтролер базиран на архитектурата RISC-V, внедряващ защитената процесорна архитектура CHERI (Capacity Hardware Extension for RISC-V), предоставящ контролиран модел за достъп до паметта.

Базиран на архитектурата на набора инструкции (Е) Предоставен в CHERIoT е изграден програмен модел, който гарантира сигурността на работата с паметта на ниво отделни обекти, осигурява защита срещу достъп до вече освободена памет и реализира олекотена изолационна система за достъп до паметта.

Този модел на програмна защита отразява директно езиковия модел C/C++, което му позволява да бъде използван за защита на съществуващи приложения (необходимо е само прекомпилиране и работа на съвместим с ISA CHERIOT хардуер).

Предложеното решение позволява да се блокират грешки, които причиняват извън границите на обект в паметта, не позволява заместване на указател (всички указатели трябва да бъдат генерирани от съществуващи указатели), следи достъпа до паметта след освобождаване (всеки достъп до паметта от лош указател или указател, препращащ към освободен обект, предизвиква изключение).

Например, използването на CHERIoT позволява, без да се правят промени в кода, да се приложи автоматична проверка на границите, да се проследи живота на областите на паметта и да се гарантира целостта на указателите в компоненти, които обработват ненадеждни данни.

Проектът включва спецификация за архитектура на набор от инструкции CHERIOT разширение, референтна реализация на съвместим с ISA CHERIOT 32-битов RISC-V процесор и модифициран набор от инструменти LLVM.

Накрая Ако се интересувате да научите повече за това, трябва да знаете, че прототипни диаграми Описанията на процесора и хардуерните блокове във Verilog се разпространяват под лиценза Apache 2.0. Ядрото Ibex на проекта lowRISC се използва като основа за CPU, а кодовият модел CHERIOT ISA е дефиниран на езика Sail и се разпространява под лиценз BSD.

Освен това се предлага прототип на операционна система в реално време CHERIoT RTOS, която осигурява възможност за изолиране на отделения (отделение) дори на вградени системи с 256 MB RAM.

Кодът CHERIOT RTOS Написан е на C++ и се разпространява под лиценза на MIT. Под формата на отделения са проектирани основните компоненти на операционната система, като зареждащото устройство, програмата за планиране и системата за разпределение на паметта.