Код будущего: Android становится неприступной крепостью

Как использование Rust повлияло на безопасность «зелёного робота»?


afkxdqo0i8fi1wz3z8qen9u632vq4602.jpg


Компания Google заметила значительное снижение уязвимостей в операционной системе Android благодаря переходу на более безопасные языки программирования, такие как Rust . За шесть лет количество обнаруженных уязвимостей, связанных с безопасностью памяти, сократилось с 76% до 24%. Этот шаг стал частью инициативы «Secure by Design» , которого компания сейчас активно придерживается.

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

Интересно, что снижение уязвимостей наблюдается даже на фоне увеличения объёмов нового кода, который не всегда полностью безопасен. Согласно исследованиям, большинство уязвимостей обнаруживаются в новом или недавно изменённом коде. Таким образом, чем больше код «созревает», тем меньше в нём обнаруживается уязвимостей, что подтверждает необходимость фундаментальных изменений в подходах к разработке.

Google начала поддержку языка Rust для Android в 2021 году, приоритетно продвигая переход на безопасные языки начиная с 2019 года. В результате за последние пять лет количество выявленных проблем с безопасностью памяти снизилось с 223 в 2019 году до менее 50 в 2024 году.

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

Для Google важным шагом стало создание совместимости между Rust, C++ и Kotlin. Это позволяет использовать практичный и постепенный подход к внедрению безопасных языков, избегая необходимости переписывания кода с нуля. Такой подход позволяет эффективно использовать «затухание» уязвимостей: когда прекращается добавление новых проблем, их количество стремительно уменьшается.

Недавно Google также объявила о расширении сотрудничества с командой безопасности компании Arm, направленном на усиление безопасности GPU-стека в экосистеме Android. Это позволило выявить и устранить несколько уязвимостей, включая две проблемы в кастомизации драйверов Pixel ( CVE-2023-48409 и CVE-2023-48421 ), а также уязвимость в микропрограммах Arm Valhall GPU ( CVE-2024-0153 ).

Таким образом, проактивное тестирование и новые подходы к безопасному кодированию помогают Google снижать риски и эффективно устранять уязвимости ещё до их возможной эксплуатации.