Google опубликовала информацию о том, как компания пытается улучшить безопасность Android, и какие шаги предпринимаются для борьбы с распространенными угрозами. Отчеты об уязвимостях играют в этом значительную роль.
Отчеты об уязвимостях
Чтобы защитить мобильную операционную систему Android, Google использует многосторонний подход: ежемесячные обновления системы безопасности для исправления уязвимостей, обнаруженных в рамках программы вознаграждений за уязвимости (VRP), а также меры по усилению защиты от скрытых уязвимостей.
Все уязвимости, представленные через VRP, анализируются инженерами компании, чтобы определить основную причину каждой уязвимости и ее общую серьезность. Google также полагается на внутренние и внешние отчеты об ошибках для выявления уязвимых компонентов и методов кодирования, которые обычно приводят к ошибкам.
Однако, исследователи безопасности часто изучают те области, где другие уже обнаружили уязвимости. По этой причине внутренние Red Teams в Google анализируют менее изученные или более сложные части Android.
Кроме того, непрерывные автоматизированные фаззеры масштабно работают как на виртуальных машинах Android, так и на физических устройствах. Это дает гарантию обнаружить и исправить ошибки на ранних этапах жизненного цикла разработки. Уязвимости, обнаруженные таким образом, также анализируются на предмет первопричины и серьезности.
Ошибки памяти
Из критических уязвимостей высокой степени серьезности, исправленных в бюллетенях по безопасности Android в 2019 году, на ошибки памяти приходилось 59% всех уязвимостей. За ними следовали ошибки обхода разрешений – 21%.
Типы критических уязвимостей и уязвимостей высокой степени опасности, исправленных в бюллетенях по безопасности Android в 2019 году
Чтобы предотвратить ошибки памяти в будущем, Google поощряет разработчиков переходить на безопасные для памяти языки программирования, такие как Java, Kotlin и Rust.
Проблемы с памятью обычно являются высшей категорией недостатков безопасности на таких платформах, как Java, Windows 10 и Chrome. В прошлом году инженеры Google заявили, что 70% ошибок Chrome связаны с безопасностью памяти. До этого инженеры Microsoft заявляли, что 70% всех ошибок были проблемами памяти или программного обеспечения.
Команда безопасности Android предоставила дополнительную информацию о том, как работает переход на безопасные для памяти языки, отметив: «C и C++ не обеспечивают безопасность памяти в отличие от языков вроде Java, Kotlin и Rust. Учитывая, что большинство уязвимостей, о которых сообщается в Android, относятся к проблемам с безопасностью памяти, применяется двусторонний подход: повышение безопасности C/C ++, а также поощрение использования языков, безопасных для памяти».
Решения
По словам Google, ее усилия по укреплению инфраструктуры медиа-сервера в Android привели к тому, что в 2020 году компания не получила ни одного отчета об удаленно используемых критических уязвимостях в медиа-фреймворках Android.
Google также рассказала о компромиссах, связанных с безопасностью и производительностью, на которые идут инженеры в процессе выбора дополнительных мер защиты для Android. Выбор усложняется тем, что Android должен поддерживать большой спектр устройств от разных производителей.
Помимо безопасных для памяти языков, к средствам защиты в Android относят песочницу, рандомизацию адресного пространства (ASLR), целостность потока управления (CFI), Stack Canaries и тегирование памяти.
«Добавление больших накладных расходов к некоторым компонентам или всей системе может негативно повлиять на взаимодействие с пользователем, сократив время автономной работы и сделав устройство менее отзывчивым. Это особенно верно для устройств начального уровня, которые также должны получить выгоду от усиления защиты. Поэтому мы хотим уделить первостепенное внимание инженерным усилиям по эффективному снижению рисков с приемлемыми накладными расходами», – отмечает Google.
Напомним, что Google работает над новой мобильной операционной системой для повышения безопасности использования устройств.