Google переносить DNS‑парсер модема Pixel на Rust: новий рівень безпеки baseband

CyberSecureFox

Google зробила помітний крок у напрямку посилення безпеки мобільних пристроїв: у модемній прошивці смартфонів лінійки Pixel інтегровано DNS‑парсер, написаний мовою Rust. Першим таким пристроєм став Pixel 10. Це частина довгострокової стратегії відмови від небезпечних з погляду роботи з пам’яттю мов C/C++ на користь memory-safe рішень, здатних суттєво зменшити ризик критичних уразливостей у низькорівневих компонентах смартфона.

Модем (baseband) як пріоритетна ціль атак на смартфони

Сотовий модем, або baseband, відповідає за всю взаємодію смартфона з мобільною мережею: голосові виклики, SMS, мобільний інтернет, службові сигнали оператора. Цей компонент працює із складними стеком протоколів, містить сотні тисяч рядків коду та безперервно обробляє трафік з недовіреного середовища — мереж операторів зв’язку.

На відміну від Android і застосунків, які отримують регулярні оновлення безпеки та мають багаторівневі механізми ізоляції, модемна прошивка традиційно залишається «за кадром» для користувача. Уразливість у baseband часто дає змогу зловмиснику виконати довільний код на низькому рівні, обійти захист ОС, перехоплювати голосові дзвінки, SMS і отримувати чутливі метадані про з’єднання.

У міру посилення захисту Android логічним наслідком стає зміщення фокуса атак саме на модем. Саме тому перехід до більш безпечних мов програмування в baseband є стратегічно важливим для всієї екосистеми Android.

DNS‑парсер на Rust: ключовий елемент ланцюга безпеки модема

Першим компонентом модемної прошивки, який Google повністю переписала на Rust, став DNS‑парсер. Це невипадковий вибір: DNS‑пакети обробляються практично за кожного мережевого запиту — від встановлення з’єднання до функцій переадресації викликів і роботи операторських сервісів.

DNS‑протокол складний: він використовує вкладені структури, стиснення імен і різні типи записів, а всі вхідні дані надходять із зовнішньої, потенційно ворожої мережі. Реалізації DNS‑парсерів на C/C++ історично були джерелом типових помилок роботи з пам’яттю: out-of-bounds читання та запис, переповнення буфера, use-after-free. Показовий приклад — уразливість CVE-2024-27227, пов’язана саме з некоректною обробкою DNS‑даних у модемі.

Rust розв’язує ці проблеми завдяки . За словами інженера команди Google Pixel Цзячэна Лу (Jiacheng Lu), новий DNS‑парсер, реалізований на Rust, суттєво зменшує площу атаки в одній із найбільш ризикованих зон модема і створює основу для подальшої міграції інших компонентів baseband на memory-safe код.

Як Google інтегрувала Rust у модем: hickory-proto та cargo-gnaw

Адаптація Rust‑стеку DNS до embedded‑середовища baseband

У якості бази для нового DNS‑парсера команда обрала відомий Rust‑крейt hickory-proto, який використовується для побудови DNS‑клієнтів, серверів і резолверів. Однак середовище модема — це по суті bare metal / embedded‑платформа, де немає повноцінної ОС, стандартної бібліотеки, а вимоги до розміру, часу виконання та передбачуваності коду надзвичайно жорсткі.

Інженерам довелося глибоко модифікувати hickory-proto під ці обмеження: мінімізувати залежність від стандартної бібліотеки, оптимізувати використання пам’яті й часу виконання. Додатковий виклик — ланцюжок із понад 30 залежностей, притаманний сучасній Rust‑екосистемі. Кожен такий крейт потребує окремого аналізу, налаштування під embedded‑профіль та, за потреби, урізання функціональності.

cargo-gnaw: контроль залежностей Rust у прошивці модема

Щоб системно вирішити проблему залежностей, Google створила інструмент cargo-gnaw. Він дає змогу вибірково підключати тільки потрібні частини Rust‑бібліотек, відмовляючись від зайвого функціоналу, і жорстко контролювати остаточний склад та розмір бінарних файлів прошивки модема.

Такий підхід робить використання Rust у baseband-прошивках не лише концептуально привабливим, а й практично здійсненним. Крім того, централізоване керування залежностями знижує ризики, пов’язані з ланцюговими уразливостями в бібліотеках третьої сторони — важливий аспект для критичної інфраструктури на кшталт модемів.

Memory-safe мови як основа стратегії безпеки Android і модема

Інтеграція DNS‑парсера на Rust у модем Pixel — це частина ширшої програми Google з переходу на memory-safe мови програмування в Android і суміжних низькорівневих компонентах. Раніше компанія вже розгортала санітайзери Clang (IntSan, BoundSan) для виявлення невизначеної поведінки в коді модема, а також впроваджувала додаткові механізми захисту від атак на 2G‑мережі та експлойтів, що використовують переповнення буфера в baseband.

Rust послідовно інтегрується в системні служби Android, драйвери та інші критичні модулі. За даними Google, станом на листопад 2025 року частка уразливостей, пов’язаних із помилками керування пам’яттю, знизилася до менше ніж 20% усіх виявлених за рік багів. Це свідчить, що перехід до memory-safe мов має вимірюваний ефект у реальному атакувальному середовищі.

Тепер аналогічний підхід поширюється на модемну прошивку, яка довгий час залишалася «сірою зоною» навіть для багатьох фахівців з кібербезпеки. Інтеграція Rust у baseband Pixel 10 демонструє, що захист смартфона більше не обмежується лише оновленнями Android і застосунків, а охоплює всю мережеву «начинку» пристрою.

Для виробників обладнання та розробників цей крок є чітким сигналом: планомірна відмова від чистого C/C++ у критичних компонентах на користь memory-safe мов стає новим стандартом безпеки. Компаніям варто вже зараз планувати поступову міграцію модемних стеків, драйверів і мережевих сервісів на Rust або інші безпечні з погляду пам’яті мови, а також посилювати контроль залежностей і використовувати санітайзери там, де повна міграція поки неможлива. Користувачам доцільно звертати увагу не лише на характеристики камери чи процесора, а й на політику оновлень прошивки та використання сучасних мов програмування — це стає базовою вимогою до по-справжньому захищеного смартфона.

Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються дані ваших коментарів.