
Google сегодня подробно рассказал, как он «значительно повысил устойчивость Pixel 9 к атакам на базовый блок» и уязвимостям сотового модема.
Сотовый базовый блок — это процессор, отвечающий за управление связью LTE, 4G и 5G. Уязвимости в прошивке сотового базового блока «представляют значительную проблему из-за повышенной уязвимости этого компонента в поверхности атаки устройства».
Эта функция по своей сути включает обработку внешних входных данных, которые могут поступать из ненадежных источников. Например, злоумышленники могут использовать ложные базовые станции для внедрения сфабрикованных или измененных сетевых пакетов.
Например, Google в конце 2022/начале 2023 года обнаружил серьезные уязвимости модема Exynos, которые могли быть использованы для «удаленного компрометирования телефона на уровне базового блока без какого-либо взаимодействия с пользователем». Рекомендовалось отключить VoLTE и Wi-Fi Calling до исправления проблемы.
Несмотря на высокий риск, «большинство базовых блоков лишены средств смягчения последствий эксплуатации, обычно применяемых в других местах и считающихся лучшими практиками в разработке программного обеспечения», хотя Google признает жесткие ограничения производительности этих процессоров, которые делают «усиление безопасности затруднительным».
Зрелые методы усиления программного обеспечения, которые являются обычным явлением в операционной системе Android, например, часто отсутствуют в сотовых прошивках многих популярных смартфонов.
За годы работы Google внедрил защиты, которые могут перезапускать модем или оповещать систему о потенциальных атаках. На Pixel 9, 9 Pro, 9 Pro XL и 9 Pro Fold (Exynos 5400) реализованы следующие меры:
- Bounds Sanitizer: Переполнение буфера происходит, когда ошибка в коде позволяет злоумышленникам поместить слишком много данных в пространство, вызывая их перетекание и потенциальное повреждение других данных или выполнение вредоносного кода. Bounds Sanitizer автоматически добавляет проверки вокруг определенного подмножества обращений к памяти, чтобы гарантировать, что код не обращается к памяти за пределами выделенных областей, предотвращая повреждение памяти.
- Integer Overflow Sanitizer: Числа имеют значение, и когда они становятся слишком большими, «переполнение» может привести к их неправильной интерпретации как меньших значений. Может произойти и обратное: число может переполниться в отрицательном направлении и быть неправильно интерпретировано как большее значение. Эти переполнения могут быть использованы злоумышленниками для вызова неожиданного поведения. Integer Overflow Sanitizer добавляет проверки вокруг этих вычислений, чтобы устранить риск повреждения памяти из этого класса уязвимостей.
- Stack Canaries: Защитные флаги стека работают как растяжки, установленные для обеспечения выполнения кода в ожидаемом порядке. Если хакер пытается использовать уязвимость в стеке для изменения потока выполнения, не обращая внимания на флаг, флаг «срабатывает», оповещая систему о потенциальной атаке.
- Control Flow Integrity (CFI): Подобно защитным флагам стека, CFI гарантирует, что выполнение кода ограничено определенным набором путей. Если злоумышленник пытается отклониться от разрешенного набора путей выполнения, CFI вызывает перезапуск модема вместо выполнения недопустимого пути выполнения.
- Автоматическая инициализация переменных стека: Когда память выделяется для использования, она обычно не инициализируется в C/C++, поскольку ожидается, что разработчик правильно настроит выделенную область. Если разработчик не справляется с этим должным образом, неинициализированные значения могут привести к утечке конфиденциальных данных или быть использованы злоумышленниками для получения выполнения кода. Телефоны Pixel автоматически инициализируют переменные стека нулями, предотвращая этот класс уязвимостей для данных стека.
В целом, Google утверждает, что эти меры «значительно повышают устойчивость Pixel 9 к атакам на базовый блок».