Вот уже несколько месяцев, Некоторыми новостями мы поделились здесь, в блоге. основные моменты о поддержке и признании, которые он получил Ржавчина в разных проектах и разработках, из которых многие из них являются тяжеловесами, например Linux, Windows и даже Android.
Несмотря на большое признание больших парней, переход на Rust оказался непростым делом, поскольку даже для того, чтобы он был принят в качестве второго языка программирования в ядре Linux, Линусу Торвальдсу пришлось пройти немало испытаний, чтобы попробовать. одобрение.
В случае с Google это не стало исключением и вот уже несколько месяцев Google внедряет Rust во многие свои проекты и Android является одним из них и в котором был проведен достаточно контролируемый этап миграции, поскольку в рамках усилий по усилению безопасности критических программных компонентов платформы, теперь Google объявила, что завершила работу по миграции прошивки «Защищенная виртуальная машина Android Virtualization Framework (pVM)» для Rust.
Эта прошивка Используется для организации работы виртуальных машин, запускаемых гипервизором pVM из Android.. Ранее прошивки были написаны на языке C и реализованы поверх загрузчика U-Boot, в коде которого ранее были обнаружены уязвимости, вызванные проблемами с памятью.
Гипервизор pVM берет на себя управление на ранней стадии запуска y обеспечивает полную изоляцию памяти виртуальной машины от среды хоста, предотвращение доступа хост-системы к защищенным виртуальным машинам, обрабатывающим конфиденциальные данные. Прошивка pvmfm (Protected Virtual Machine Firmware) берет на себя управление сразу после загрузки виртуальной машины, проверяет созданную среду и решает прервать загрузку, если обнаружены проблемы с целостностью, или генерирует загрузочный сертификат для гостевой системы, если цепочка доверия.
Переписывание Rust упрощает и безопаснее соблюдать «правило двух» Google. для обеспечения безопасности компонентов системы Android. Согласно этому правилу, любой добавляемый код должен соответствовать не более чем двум из трёх условий: работать с непроверенными входными данными, использовать небезопасный язык программирования (C/C++) и запускаться с повышенными привилегиями. Это правило подразумевает, что код обработки внешних данных должен быть сведен к минимуму привилегий (изолирован) или написан на безопасном языке программирования. По статистике Google, примерно 70% всех выявленных опасных уязвимостей в Android связаны с ошибками при работе с памятью.
Среди трудностей, возникающих в процессе разработки низкоуровневых компонентов, таких как контроллеры, на языке Rust, упоминается необходимость работы с указателями в небезопасном режиме, поскольку Rust создается с учетом использования памяти, выделенной в языке. Ржавчина.
Среди недостатков, Также стоит выделить необходимость улучшения синтаксиса для доступа к полям структуры и индексам массива через простые указатели без создания ссылок, а также ограничения на создание безопасных ссылок на небезопасные операции, которые могут вызвать неопределенное поведение и не могут быть проверены компилятором.
Стоит отметить, что новая прошивка переписана на Rust. включен в Android 14 а универсальные библиотеки, созданные в процессе разработки прошивки, упаковываются в пакеты и портируются в сообщество Rust. Полученный размер кода по сравнению с предыдущей версией прошивки pVM, которая занимала 220 КБ, новый код занимает 460 КБ, но новые функции добавлены в переписанную версию, благодаря чему удалось избавиться от некоторых других компонентов, используемых при загрузке.
В результате суммарные размеры всех старых и новых компонентов багажника оказались сопоставимыми. Следует отметить, что когда размер важнее производительности, результатов, сравнимых с результатами на языке C, можно достичь, включив в компиляторе дополнительные режимы оптимизации размера, отбросив ненужные зависимости и не используя форматировщики строк.
В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.