Microsoft открыл CHERIoT, аппаратное решение для повышения безопасности кода на языке Си
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Компания 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, эталонную реализацию 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) и запускаться в отдельном контексте безопасности. Никакой код извне не может передать управление коду в компартменте и получить доступ к объектам, за исключением обращения к специально определённым точкам входа и использования указателей на объекты, явно переданные при вызове другого компартмента. Для кода и глобальных объектов в компартменте гарантируется целостность и конфиденциальность.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://msrc.microsoft.com/blo...)
- OpenNews: Google представил открытый проект OpenTitan для создания заслуживающих доверия чипов
- OpenNews: Google открыл код защищённой операционной системы KataOS
- OpenNews: В кодовой базе Chromium разрешено использование языка Rust
- OpenNews: Google анонсировал Asylo, универсальный фреймворк для защищённых анклавов
- OpenNews: Первая открытая реализация анклава для аппаратно изолированных окружений
Похожие новости:
- Выпуск системной библиотеки Glibc 2.37
- ФСТЭК РФ опубликовал рекомендации по обеспечению безопасной настройки Linux
- Реализована возможность сборки Glibc при помощи инструментария LLVM
- В состав GCC включена поддержка языка программирования Modula-2
- Фронтэнд для языка Rust доведён до готовности для интеграции в GCC 13
- Первый стабильный релиз WSL, прослойки для запуска Linux-приложений в Windows
- Micron опубликовал движок хранения HSE 3.0, оптимизированный для SSD-накопителей
- АНБ рекомендует переходить на языки программирования, безопасно работающие с памятью
- Компания Microsoft опубликовала обновление Linux-дистрибутива CBL-Mariner
- Проект LLVM развивает средства для безопасной работы с буферами в C++
Теги для поиска: #_cheriot, #_cheri, #_microsoft, #_memory, #_security, #_gcc, #_llvm
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 02:30
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Компания 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, эталонную реализацию 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) и запускаться в отдельном контексте безопасности. Никакой код извне не может передать управление коду в компартменте и получить доступ к объектам, за исключением обращения к специально определённым точкам входа и использования указателей на объекты, явно переданные при вызове другого компартмента. Для кода и глобальных объектов в компартменте гарантируется целостность и конфиденциальность. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 02:30
Часовой пояс: UTC + 5