erid: 2SDnjeU7TaZ erid: 2SDnjeU7TaZ

KASan в игре: как один инструмент перевернул мир безопасности микроконтроллеров

28.03.2024
KASan в игре: как один инструмент перевернул мир безопасности микроконтроллеров

26 марта 2024 года, команда разработчиков Android, в лице Евгения Родионова и Ивана Лозано, представила новый подход к повышению безопасности прошивок - Kernel Address Sanitizer (KASan). Этот инструмент, изначально разработанный для ядра Linux, теперь адаптирован для работы с прошивками микроконтроллеров и другим низкоуровневым ПО.

KASan, использующийся на этапе тестирования и фаззинга, позволяет выявлять уязвимости, связанные с нарушением целостности памяти, еще до того, как они окажутся в конечном продукте. Использование KASan уже позволило обнаружить и устранить более 40 критических ошибок в прошивках.

Сопровождая этот анонс, команда выпустила проект, демонстрирующий применение KASan в среде QEMU для bare-metal систем, что дает разработчикам ценные направления для интеграции и адаптации инструмента под собственные нужды.

ASan - это инструмент на основе компилятора, позволяющий выявлять некорректные обращения к памяти в реальном времени. Он может обнаруживать такие ошибки, как обращение за пределы массива, использование после освобождения памяти, двойное освобождение и использование после возврата из функции. ASan работает путем встраивания специального кода проверки адресов памяти, используемых при загрузке/сохранении данных.

Для интеграции KASan в прошивку необходимо обеспечить наличие «теневой памяти» - специального участка памяти для отслеживания состояния каждого участка основной памяти. KASan перенаправляет каждый адрес из основной памяти в теневую память, позволяя контролировать доступность и состояние каждого блока памяти.

Разработчикам предстоит реализовать рутинные функции KASan, отвечающие за проверку доступности участков памяти и обработку обнаруженных нарушений, а также управление теневой памятью. Это включает в себя функции для проверки каждого обращения к памяти и функции для «отравления» или «очищения» блоков теневой памяти в зависимости от их использования.

erid: 2SDnjdbjuoP erid: 2SDnjdbjuoP
Популярные материалы