[ON] Microsoft открыл CHERIoT, аппаратное решение для повышения безопасности кода на языке Си

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Ответить
Аватара пользователя
rssbot
Бот
Сообщения: 6002
ОС: gnu/linux

[ON] Microsoft открыл CHERIoT, аппаратное решение для повышения безопасности кода на языке Си

Сообщение rssbot »

Компания Microsoft открыла наработки, связанные с проектом CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things), нацеленным на блокирование проблем с безопасностью в существующем коде на языках C и С++. CHERIoT предлагает решение, позволяющее защитить существующие кодовые базы на С/C++ без необходимости их переработки. Защита реализуется через применение модифицированного компилятора, использующего специальный расширенный набор процессорных инструкций (ISA), предоставляемых процессором и на аппаратном уровне отслеживающих доступ к памяти, проверяющих корректность работы с указателями и обеспечивающих изоляцию блоков кода.



Проект создан с оглядкой на то, что низкоуровневый характер языка C становится источником ошибок при работе с памятью, приводящих к таким проблемам, как переполнение буфера, обращение к уже освобождённой памяти, разыменование указателей или двойное освобождение памяти. Практика показывает, что даже крупные корпорации, такие как Google и Microsoft, имеющие жёсткую политику рецензирования изменений и применяющие современные методы разработки и инструменты статического анализа, не могут гарантировать отсутствие ошибок при работе с памятью (например, около 70% уязвимостей в программных продуктах Microsoft и Google вызваны небезопасной работой с памятью).


Проблема может быть решена использованием языков программирования, гарантирующих безопасную работу с памятью, или обвязок с дополнительными проверками, например, через применение вместо обычных указателей типа MiraclePtr (raw_ptr), выполняющего дополнительные проверки обращения к освобождённым областям памяти. Но подобные методы больше подходят для нового кода, а уже существующие проекты на С/C++ переработать достаточно проблематично, особенно если они предназначены для выполнения в окружениях с ограниченными ресурсами, таких как встраиваемые системы и устройства интернет-вещей.



Аппаратные компоненты CHERIoT оформлены в виде микроконтроллера на базе архитектуры RISC-V, реализующего защищённую процессорную архитектуру CHERI (Capability Hardware Extension to RISC-V), предоставляющую модель управляемого доступа к памяти на основе "capability" (каждая операция чтения и записи в память авторизуется). На базе предоставляемой в CHERIoT архитектуры набора команд (ISA) построена программная модель, гарантирующая безопасность работы с памятью на уровне отдельных объектов, предоставляющая защиту от обращения к уже освобождённой памяти и реализующая легковесную систему изоляции доступа к памяти. Указанная программная модель защиты напрямую отражается в языковую модель C/C++, что позволяет применять её для защиты существующих приложений (требуется лишь перекомпиляция и запуск на оборудовании, поддерживающем ISA CHERIoT).


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



Проект включает в себя спецификацию расширенной архитектуры набора команд CHERIoT, [url=ttps://github.com/microsoft/cheriot-ibex]эталонную реализацию[/url] 32-разрядного CPU RISC-V c поддержкой ISA CHERIoT и модифицированный инструментарий LLVM. Cхемы прототипа CPU и описания аппаратных блоков на языке Verilog распространяются под лицензией Apache 2.0. В качестве основы для CPU использовано ядро Ibex от проекта lowRISC. Модель кода CHERIoT ISA определена на языке Sail и распространяется под лицензией BSD.








Дополнительно предложен прототип операционной системы реального времени CHERIoT RTOS, предоставляющей возможность изоляции компартментов (compartment) даже на встраиваемых системах с 256 МБ ОЗУ. Код CHERIoT RTOS написан на языке С++ и распространяется под лицензией MIT. В форме компартментов оформлены базовые компоненты ОС, такие как загрузчик, планировщик и система распределения памяти.


Компартмент в CHERIoT RTOS представляет собой изолированную комбинацию кода и глобальных переменных, которая напоминает разделяемую библиотеку, но в отличие от последней может менять своё состояние (mutable) и запускаться в отдельном контексте безопасности. Никакой код извне не может передать управление коду в компартменте и получить доступ к объектам, за исключением обращения к специально определённым точкам входа и использования указателей на объекты, явно переданные при вызове другого компартмента. Для кода и глобальных объектов в компартменте гарантируется целостность и конфиденциальность.





Источник: https://www.opennet.ru/opennews/art.shtml?num=58726
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 01.03.2023 13:41, всего редактировалось 1 раз.
Причина: Updated upstream
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20790
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [ON] Microsoft открыл CHERIoT, аппаратное решение для повышения безопасности кода на языке Си

Сообщение Bizdelnick »

Кажется, что-то подобное было ещё в iAPX 432?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить