Google удосконалює механізми безпеки ядра Android

Не є секретом той факт, що ядро Android багато в чому заснована на ядрі Linux і повторює його модель безпеки. Як у випадку з Linux та іншими десктопними ОС Android забезпечує свої додатки закритим віртуальним адресним простором, що дозволяє ефективно розподіляти ресурси між ними, а також керувати їх безпекою. Android також забезпечує додатки захисними технологіями DEP & ASLR, що перешкоджає експлуатації вразливостей в них. Механізм sandbox і система права (permissions) гарантують, що запущений додаток отримає доступ тільки до призначеним для нього даних і ресурсів.



Нещодавно розробники Android сообщили, що працюють над захисними заходами компонентів ядра, яке функціонує у своєму адресному просторі, недоступному для простих додатків. В опублікованих нами в цьому році бюлетенях безпеки Android не один раз вказувалися LPE-уразливість в ядрі і драйвери, які дозволяли додатком запустити свій код в режимі ядра.

За словами авторів, нові версії Android будуть пропонувати технологію DEP в режимі ядра, що утруднить експлуатацію LPE-вразливостей і розміщення там шелл-коду. Така техніка буде виконана за рахунок сегментації, тобто поділу пам'яті ядра на спеціальні розділи з установкою дозволів для них. Розділи, призначені для зберігання коду, будуть позначені як доступні тільки на читання і виконання, а розділи даних будуть помічені із забороною на виконання NX.

This feature segments kernel memory into logical sections sets and restrictive page access permissions on each section. Code is marked as read only + execute. Data sections are marked as no-execute and further segmented into read-only and read-write sections.
Інша функція безпеки схожа на використовувану десктопними мікропроцесорами Intel захисну міру Supervisor Access Mode Prevention (SMAP), яка запобігає доступ коду режиму ядра до частини адресного простору. Android вводить обмежувальне заходи, які ізолюють ядро від прямого доступу до пам'яті.

This feature improves protection of the kernel by preventing it from directly accessing userspace memory. This can make a number of attacks more difficult because attackers have significantly less control over kernel memory that is executable, particularly with CONFIG_DEBUG_RODATA enabled.
Ще одна захисна міра спрямована на запобігання атак на пам'ять стека ядра типу buffer overflow.

Much like its predecessor, stack-protector, stack-protector-strong protects against stack buffer overflows, but additionally provides coverage for more array types, as the original only protected character arrays. Stack-protector-strong was implemented by Han Shan and added to the gcc 4.9 compiler.
Перелічені захисні заходи відносяться до роботи ядра Android з пам'яттю, інша категорія нових захисних заходів називається Attack Surface Reduction (ASR), тобто в неї входять концептуальні захисні заходи, які відразу ж відсікають успішне використання цілих класів атак.

ASR за замовчуванням відключає можливість режиму налагодження пристрою, яка раніше була доступна для включення всім користувачам.

The kernel's перфорація system provides infrastructure for performance measurement and can be used for analyzing both the kernel and userspace applications. Perf is a valuable tool for developers, but adds unnecessary attack surface for the vast majority of Android users. In Android Nougat, access to perf will be blocked by default.
ASR також обмежує додаткам доступ до виконуваних IOCTL-операціями над пристроями через системний виклик ioctl(). Так як для експлуатації деяких типів вразливостей використовується саме ioctl, ASR вводить поняття білого списку (whitelist) операцій IOCTL, які будуть дозволені додатком для використання.

In Android Nougat, only a small whitelist of socket ioctl commands are available to applications. For select devices, applications' access to GPU ioctls has been similarly restricted.
ASR вводить нову функцію під назвою Seccomp, яка є додатковим налаштуванням безпеки для механізму ізоляції додатків під назвою sandbox. Seccomp дозволяє обмежити виконується в Android додаток від виконання деяких системних викликів або передачі туди певних аргументів з використанням спеціального фільтра. Варто зазначити, що дана функція схожа на зазначену нами функцію win32k syscalls filtering, яка з'явиться у користувачів Windows 10 вже наступного тижня разом з великим оновленням для цієї ОС.

Seccomp provides an additional sandboxing mechanism allowing a process to restrict the syscalls and syscall arguments available using a configurable filter. Restricting the availability of syscalls can dramatically cut down on the exposed attack surface of the kernel. Since seccomp was first introduced on Nexus devices in Lollipop, its availability across the Android ecosystem has steadily improved. With Android Nougat, seccomp support is a requirement for all devices. On Android Nougat we are using seccomp on the mediaextractor and mediacodec processes as part of the media hardening effort.
Зазначені функції безпеки повинні з'явитися в новому випуску Android 7.0 (Nougat).

image
be secure.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.