Компания Google поделилась опытом задействования в прошивке к baseband-модему, поставляемому в смартфонах Pixel 10, кода на языке Rust. Код для работы с протоколом DNS в прошивке заменён на Rust-библиотеку hickory-proto, развиваемую разработчиками DNS-сервера Hickory, задействованного в инфраструктуре Let's Encrypt. Интеграция hickory-proto в прошивку осуществлена в рамках инициативы по повышению защиты baseband-модема. В прошивке baseband-модема имеется обработчик DNS, так как данный протокол используется в современных сотовых сетях, среди прочего при переадресации вызовов. При этом DNS является сложным протоколом, требующим разбора данных, поступающих из вне и не заслуживающих доверия. В прошлом у Google уже был опыт выявления уязвимостей в прошивках baseband-модема устройств Pixel, например, в 2024 году была найдена уязвимость CVE-2024-27227, приводящая к переполнению буфера при обработке специально оформленных DNS-ответов. Предполагается, что использование парсера протокола DNS на языке Rust сократит поверхность атаки и уменьшит риск эксплуатации через DNS целого класса уязвимостей, вызванных ошибками при низкоуровневой работе с памятью. Проект также рассматривается как базис для более широкого внедрения в другие компоненты кода на языках, безопасно работающих с памятью. Из проблемных моментов отмечено относительно большой размер результирующего кода, так как библиотка Hickory-proto изначально не рассчитана на использование во встраиваемых устройствах. Размер интегрированных компонентов составил 371KB, из которых 350KB код Hickory-proto и зависимостей, 17KB - вспомогательные функции, выделенные из стандартной библиотеки, 4KB - прослойка для использования библиотеки для обработки ответов от DNS-серверов. Отмечается, что для модема устройств Pixel дополнительные 300KB укладываются в имеющиеся ограничения памяти, но для более требовательных встраиваемых устройств необходимо проведение оптимизации для сокращения размера кода. В будущем в Hickory-proto планируют реализовать флаги, оставляющие при компиляции только требуемую функциональность.
Источник: https://www.opennet.ru/opennews/art.shtml?num=65190
Источник: https://www.opennet.ru/opennews/art.shtml?num=65190