Google оголосив про включення Rust в число мов програмування, які дозволені для розвитку платформи Android
Компанія Google оголосила про включення мови програмування Rust в число мов, які дозволені для розробки платформи Android. Ще в 2019 році компілятор Rust був включений в дерево джерел Android, але це була експериментальна підтримка.
Тепер в Android планується додати перші компоненти в Rust, це будуть нові реалізації сполучного механізму міжпроцесорного зв'язку і Bluetooth стека.
За словами представників Google, Rust був доданий в список мов розробки Android для посилення безпеки останнього, плюс для просування безпечних методів програмування і збільшення виявлення проблем при роботі з пам'яттю в Android. Близько 70% всіх небезпечних вразливостей, які виявляються в Android, викликані помилками при роботі з пам'яттю. Використання Rust допомагає знизити ризик вразливостей, викликаних помилками пам'яті, включаючи доступ до пам'яті після її звільнення і перевищення меж буфера.
Rust забезпечує безпечне управління пам'яттю під час компіляції за допомогою перевірки посилань, відстеження власності об'єкта та відстеження терміну служби (обсягу) об'єкта. Опціонально, оцінюючи правильність доступу до пам'яті під час виконання коду. Крім того, Rust забезпечує захист від цілочисельних переповнень і вимагає, щоб змінні значення були ініціалізовані перед використанням. І він краще обробляє помилки в стандартній бібліотеці і застосовує концепцію незмінних посилань і змінних за замовчуванням, пропонуючи сильну статичну типізацію для мінімізації логічних помилок.
Що стосується Android, то тут забезпечується безпечна робота з пам'яттю на підтримуваних мовах Kotlin і Java. Правда, вони не підходять для розробки компонентів системи через великі накладних витрат. Rust дозволяє домогтися збільшення продуктивності до близьких до мов C і C++. Це означає, що мова може бути використана для розробки низькорівневих частин платформи і компонентів для взаємодії з апаратним забезпеченням.
Безпека коду C і C++ в Android забезпечується ізоляцією пісочниці, статистичним аналізом і нечітким тестуванням. Можливості ізоляції, однак, обмежені – вони досягли межі можливостей. Це обмеження викликає збільшення накладних витрат і збільшення обсягу споживаної пам'яті, що викликано необхідністю генерувати нові процеси. Плюс є витрати, які пов'язані з використанням МПК.
Пісочниця не усуває вразливості в коді, все це працює інакше - знижує ризики і ускладнює атаку. На жаль, щоб боротися з проблемами максимально ефективно, потрібно знати всі або переважна більшість з них. А під час тестування, щоб виявити помилки, потрібно створити умови для їх появи. Відповідно, неможливо передбачити абсолютно всі умови, тому багато помилок проходять повз увагу розробників.
Google використовує так зване «правило двох», згідно з яким для системних процесів будь-який доданий код повинен підпадати не більше ніж під дві з трьох умов:
Робота з неперевіреними вхідними даними.
Використовуйте небезпечну мову програмування.
Виконуйте процес без жорсткої ізоляції пісочниці.
Відповідно, код для обробки зовнішніх даних повинен бути або усічений до мінімальних привілеїв, або написаний на захищеній мові програмування.