Кибербезопасность

Rust в Android: самый безопасный путь стал самым быстрым в разработке

Google заявляет, что внедрение Rust в Android снизило плотность уязвимостей, связанных с безопасностью памяти, более чем в 1000 раз по сравнению с кодом на C и C++, при этом изменения на Rust демонстрируют более низкие показатели отката и требуют меньше времени на проверку кода. В анализе также рассматривается расширение Rust на ядро, прошивки и приложения Google, а также уроки, полученные из уязвимости, которая едва не попала в публичный выпуск.

2025-11-13
6 мин. чтения
7 просмотров
فريق تحرير certi.news
Rust в Android: самый безопасный путь стал самым быстрым в разработке

Обновлённые данные Android за 2025 год показывают, что уязвимости, связанные с безопасностью памяти, впервые сократились до менее чем 20% от общего числа уязвимостей — одновременно с расширением использования Rust в новых и активно развиваемых частях платформы. Согласно анализу, опубликованному в блоге Google Security Blog 12 ноября 2025 года, переход с C и C++ на Rust не только снижает риски безопасности, но и ускоряет проверку кода и повышает стабильность изменений.

Данные основаны на изменениях в коде Android — как непосредственно разрабатываемом Google, так и в открытом исходном коде сторонних организаций, — и охватывают языки C, C++, Java, Kotlin и Rust. Поскольку анализ был опубликован за несколько месяцев до конца 2025 года, Google пояснила, что стандартное 90-дневное окно исправления делает результаты очень близкими к окончательным показателям, при этом при необходимости исправления могут выполняться быстрее.

Повышенная безопасность и более быстрая поставка

Google внедрила Rust в Android в качестве прямой альтернативы C и C++ для низкоуровневого программирования, сохранив сопоставимый уровень контроля и предсказуемости, но значительно снизив риски, связанные с безопасностью памяти. Анализ указывает на резкий рост объёма нового кода на Rust при одновременном более медленном и устойчивом снижении объёма нового кода на C++, пока объём недавно добавленного кода на Rust не приблизился к объёму кода на C++. Это позволило надёжнее сравнивать два пути разработки.

Google использовала фреймворк DORA для измерения производительности и стабильности. Чтобы уменьшить сложности сравнения языков, она сосредоточилась на изменениях сопоставимого размера и на схожих группах разработчиков, работающих над платформой Android, а также отслеживала динамику во времени по мере роста использования Rust.

Изменения на Rust сопоставимого размера требуют примерно на 20% меньше проверок, чем аналогичные изменения на C++. В настоящее время на проверку кода также тратится примерно на 25% меньше времени. Google предполагает, но не утверждает наверняка, что заметное улучшение между 2023 и 2024 годами связано с ростом опыта команды Android в работе с Rust.

Что касается стабильности, изменения на Rust среднего и большого размера демонстрируют примерно в четыре раза более низкий показатель отката, чем изменения на C++. Google подчёркивает, что сокращение числа откатов отражает не только качество изменений, но и повышает производительность, поскольку откат может привести к повторной работе, дополнительным проверкам, повторной сборке, подготовке отчётов по итогам инцидентов и нарушению работы других команд.

Расширение Rust за пределы системных служб и библиотек

Google заявляет, что поддержка Rust стала зрелой для создания системных служб и библиотек Android, поэтому компания работает над расширением его использования на другие уровни экосистемы:

  • Ядро: ядро Linux 6.12 для Android стало первым ядром Google с включённой поддержкой Rust, а также содержит первый производственный драйвер на Rust. Google продолжает сотрудничество с Arm и Collabora над драйвером графического процессора, работающим в режиме ядра.
  • Прошивки: Google считает, что повышенные привилегии, ограничения производительности и ограниченность некоторых защитных мер делают прошивки высокорисковыми и сложными для защиты. Компания говорит, что использует Rust в прошивках уже несколько лет и предоставила сообществу учебные материалы и код, уделяя особое внимание сотрудничеству с Arm в рамках Rusted Firmware-A.
  • Приложения Google: протокол Nearby Presence, используемый для безопасного и конфиденциального обнаружения локальных устройств через Bluetooth, реализован на Rust внутри Google Play Services. Протокол безопасных сообщений MLS через RCS также будет включён в приложение Google Messages в одном из будущих выпусков.
  • Chromium: парсеры PNG и JSON, а также обработчики веб-шрифтов были заменены реализациями с безопасной обработкой памяти, написанными на Rust, что упрощает для инженеров Chromium работу с данными из интернета при соблюдении Rule of 2.

Уязвимость, которая едва не дошла до пользователей

Несмотря на акцент на преимуществах Rust, Google рассматривает случай, близкий к регистрации первой уязвимости безопасности памяти на Rust в Android. Линейное переполнение буфера в CrabbyAVIF было обнаружено до выхода в публичный выпуск, а исправлению присвоили идентификатор CVE-2025-48530, чтобы обеспечить ему высокий приоритет и отслеживать его попадание в каналы выпуска.

Анализ показал, что аллокатор Scudo Hardened Allocator сделал эксплуатацию уязвимости гарантированно невозможной благодаря защитным страницам вокруг вторичных выделений. Scudo также превратил переполнение из тихого повреждения памяти в явное аварийное завершение, что помогло обнаружить проблему. Вместе с тем инцидент выявил недостаток системы отчётов о сбоях: она недостаточно чётко указывала, что сбой вызван переполнением, из-за чего сортировка и реагирование замедлились. Google сообщает, что этот недостаток был устранён и теперь система подаёт явный сигнал при переполнениях в защитные страницы Scudo.

Почему Rust остаётся важным несмотря на наличие unsafe?

Google не считает запрет небезопасного кода — будь то в C, C++ или Rust — практичным решением для разработки операционных систем из-за необходимости работать с программными интерфейсами и оборудованием. Поэтому компания разрабатывает расширенный модуль о небезопасном коде в рамках обучения Comprehensive Rust, чтобы научить разработчиков оценивать безопасность такого кода и неопределённое поведение, использовать комментарии о безопасности и заключать небезопасные части в безопасные абстракции.

Основываясь примерно на пяти миллионах строк Rust на платформе Android и одном потенциальном случае, устранённом до выпуска, Google оценивает плотность уязвимостей, связанных с безопасностью памяти, в Rust примерно в 0,2 уязвимости на миллион строк. Компания сравнивает это с исторической плотностью около 1 000 уязвимостей на миллион строк в C и C++, что, по её оценке, означает снижение более чем в 1000 раз. Также Google отмечает, что около 4% кода написано внутри блоков unsafe{}, однако утверждает, что предположение о подверженности каждой небезопасной строки тем же рискам, что существуют в C или C++, завышает оценку опасности, поскольку большинство проверок Rust продолжают действовать, небезопасный код можно инкапсулировать, а сам он подвергается дополнительному аудиту.

Google приходит к выводу, что внедрение Rust меняет традиционное уравнение, связывавшее повышение безопасности с дополнительными затратами производительности, процедур или скорости выпуска функций. При сохранении важности C и C++, а также программных и аппаратных защитных механизмов в рамках многоуровневой защиты компания считает, что переход на Rust одновременно обеспечивает более безопасный и эффективный путь вместо того, чтобы сначала ускорять разработку, а затем устранять последствия.

Источник новости
ف
Автор

فريق تحرير certi.news

В той же категории

Вам также может понравиться

Все новости