Android 14 може да добави нова бета функция, наречена „разширена защита на паметта“, която може да предпази от грешки в безопасността на паметта на съвместими устройства.
Безопасността на паметта е основен приоритет за Google напоследък, тъй като грешките в безопасността на паметта обикновено са едни от най-сериозните грешки в разработката на софтуер. Всъщност уязвимостите в безопасността на паметта, използвани за отчитане на по-голямата част от тежките Android уязвимости до 2022 г., когато Google написа значителна част от новата версия на Android код в Език за програмиране Rust вместо C/C++. Google работи върху поддържането на други средства за смекчаване на уязвимостите в безопасността на паметта в Android, едно от които се нарича маркиране на паметта. На работещи поддържани устройства Android 14, може да има нова настройка за „разширена защита на паметта“, която може да превключва тази функция.
Разширението за маркиране на паметта (MTE) е задължителна хардуерна характеристика на процесорите Arm v9, която предпазва от памет грешки в безопасността (с леки режийни разходи за изпълнение по време на изпълнение) чрез предоставяне на подробна информация за паметта нарушения.
Както обяснява Google, „на високо ниво MTE маркира всяко разпределение/освобождаване на памет с допълнителни метаданни. Той присвоява етикет на място в паметта, което след това може да бъде свързано с указатели, които препращат към това място в паметта. По време на изпълнение процесорът проверява дали указателят и маркерите за метаданни съвпадат при всяко зареждане и съхраняване.Google работи за поддръжка на MTE в целия софтуерен стек на Android вече няколко версии. В Android 12, scudo, инструментът за разпределение на степ на Android, добави поддръжка за три режима на работа MTE на съвместими устройства: синхронен режим, асинхронен режим и асиметричен режим. Google също направи възможно активирането на MTE за системни процеси по време на изграждане или чрез системни свойства и/или променливи на средата. Приложенията могат да се включат за поддръжка на MTE чрез android: memtagMode атрибут. Когато MTE е активиран за процеси в Android, цели класове грешки в безопасността на паметта, като използване след освобождаване и препълване на буфера, предизвикват срив вместо безшумна повреда на паметта.
в Android 13, Google добави ABI за потребителското пространство, за да съобщи искания режим на работа MTE на буутлоудъра. Това може да се използва за активиране на MTE на съвместими устройства, които не се доставят с активиран по подразбиране, или като алтернатива може да се използва за деактивирането му на съвместими устройства, които го активират от по подразбиране. Задаването на системното свойство ro.arm64.memtag.bootctl_supported на „true“ в Android 13 ще каже на системата, че буутлоудърът поддържа ABI и също така задейства бутон, който да се появи в менюто с опции за разработчици, което позволява на потребителя да активира MTE на следващия рестартирайте. Това беше насочено към разработчици, които искаха да тестват поведението на своите приложения с активиран MTE.
В Android 14 обаче активирането на MTE на съвместими устройства може повече да изисква гмуркане в Опции за разработчици. Ако устройството разполага с процесор Arm v8.5+ с поддръжка на MTE, внедряването на устройството поддържа ABI за съобщаване на заявения режим на работа MTE към буутлоудъра и новия системното свойство „ro.arm64.memtag.bootctl_settings_toggle“ е зададено на true, тогава може да се появи нова страница „разширена защита на паметта“ в Настройки > Сигурност и поверителност > Повече сигурност настройки. Тази страница може да се стартира и през новия ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS умишлено действие.
По-специално, чипсетът Tensor G2 в Google Pixel 7 серията използва процесорни ядра Arm v8.2, поради което не поддържат MTE. Ако предстоящата серия Google Pixel 8 използва нови CPU ядра Arm v9, както правят много други водещи устройства с Android, тогава те ще имат хардуер, способен да поддържа MTE. Остава да видим дали тази функция за „усъвършенствана защита на паметта“ наистина ще влезе в стабилната версия.
Благодарение на изследователя по сигурността @flawedworlddev за помощта им по тази статия!