Google интегрировала в прошивку модема смартфонов серии Pixel DNS-парсер, написанный на языке Rust. Это важный шаг в долгосрочной стратегии компании по переходу от небезопасных с точки зрения работы с памятью языков C и C++ к memory-safe языкам, способным существенно снизить риск критических уязвимостей в низкоуровневых компонентах мобильных устройств.
Почему модемы становятся приоритетной целью для атакующих
Pixel 10 стал первым устройством линейки, в модем которого встроен компонент, реализованный на Rust. Выбор неслучаен: сотовый модем (baseband) — одна из самых уязвимых и при этом наименее заметных для пользователя частей смартфона. Кодовая база прошивки модема огромна, использует сложные стеки протоколов и постоянно обрабатывает трафик из недоверенных сетей.
На фоне усложнения защит в Android и приложениях, внимание атакующих все чаще смещается именно на baseband. Успешная эксплуатация уязвимости в модеме зачастую позволяет выполнить произвольный код на низком уровне, обойти традиционные механизмы защиты ОС и получить доступ к передаваемым голосовым данным, SMS и даже метаданным соединений.
DNS-парсер на Rust: критический компонент в цепочке безопасности
В качестве первой цели для переписывания на Rust инженеры Google выбрали DNS-парсер модема. Это ключевой элемент, потому что DNS-пакеты обрабатываются практически при каждом сетевом взаимодействии: от установки соединения до функций вроде переадресации вызовов и работы операторских сервисов.
DNS-протокол сложен, активно использует вложенные структуры и сжатие имен, а данные приходят из внешней, потенциально враждебной среды. В традиционных реализациях на C/C++ подобные парсеры исторически становились источником out-of-bounds чтения и записи, переполнений буфера и use-after-free. Один из показательных примеров — уязвимость CVE-2024-27227, связанная именно с некорректной обработкой DNS-данных.
Переход на Rust позволяет радикально сократить целый класс таких ошибок за счет строгой модели владения памятью и проверки границ. По словам инженера команды Google Pixel Цзячэна Лу (Jiacheng Lu), новый DNS-парсер на Rust значительно снижает поверхность атаки в проблемной зоне и создает основу для дальнейшего перевода модемных компонентов на memory-safe код.
Техническая реализация: hickory-proto, embedded-среда и cargo-gnaw
Адаптация Rust-библиотек для bare metal и embedded
В качестве основы для нового DNS-парсера разработчики Google выбрали популярный Rust-крейт hickory-proto, который изначально предназначен для реализации DNS-клиентов, серверов и резолверов. Однако модемная прошивка — это, по сути, bare metal / embedded-окружение, где нет привычной ОС и стандартных библиотек, а требования к размеру и предсказуемости кода крайне жесткие.
Инженерам пришлось глубоко адаптировать hickory-proto под такие условия, минимизировать зависимость от стандартной библиотеки и оптимизировать использование памяти. Дополнительную сложность внесла и экосистема Rust: за одним крейтом тянется более 30 зависимостей, каждая из которых также требует проверки и доработки под ограничения прошивки модема.
Инструмент cargo-gnaw: управление зависимостями Rust в прошивке
Для решения этой задачи Google разработала отдельный инструмент cargo-gnaw, упрощающий работу с зависимостями Rust-проектов в контексте модемной прошивки. Он помогает избирательно тянуть необходимые части библиотек, исключать лишний функционал и контролировать итоговый размер и состав бинарников. Такой подход делает использование Rust в baseband-прошивках практически применимым, а не только концептуальным.
Стратегия Google по memory-safe языкам в Android и baseband
Внедрение DNS-парсера на Rust в модеме Pixel — часть более широкой программы укрепления безопасности мобильной экосистемы Google. Ранее компания уже применяла санитайзеры Clang (IntSan и BoundSan) для поиска неопределенного поведения в коде модема, а также разворачивала дополнительные механизмы защиты от атак на 2G-сети и эксплойтов, использующих переполнения буфера в baseband.
Параллельно Rust системно внедряется в Android и связанные низкоуровневые компоненты. По данным компании, к ноябрю 2025 года доля уязвимостей, связанных с неправильной работой с памятью, в Android снизилась до менее чем 20% от всех найденных за год багов. Это подтверждает, что переход на memory-safe языки дает измеримый эффект в реальной атакующей среде.
Теперь тот же подход постепенно переносится на модемную прошивку, которая исторически была «слепой зоной» для большинства пользователей и даже многих специалистов по безопасности.
Интеграция DNS-парсера на Rust в модем Pixel 10 показывает, что защита смартфонов больше не ограничивается только обновлениями Android и приложений. По мере того как Google будет расширять использование Rust и других memory-safe решений в baseband, ожидать можно снижения числа критических уязвимостей модема и усложнения атак на сотовые сети.
Для компаний и разработчиков этот шаг — сигнал к пересмотру подхода к безопасности низкоуровневого кода: стоит планировать постепенный отказ от чистого C/C++ в пользу memory-safe языков там, где это технически возможно. Пользователям же имеет смысл обращать внимание на политику обновлений и подход к безопасности у производителей устройств: в условиях роста атак на модемы регулярные прошивки и переход на современные языки программирования становятся не просто преимуществом, а необходимым базовым требованием к защищенному смартфону.