-
Notifications
You must be signed in to change notification settings - Fork 0
/
content.txt
13 lines (8 loc) · 4.11 KB
/
content.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
Таким образом, те версии Android, которые используют ядро Linux указанных версий также подвержены данной уязвимости. Это относится к версиям Android KitKat (4.4-4.4.4) и выше.
<a name="habracut"></a>Уязвимость CVE-2016-0728 присутствует в подсистеме ядра Linux под названием keyring, которая предоставляет приложениям и системным компонентам ОС возможность безопасной работы с сохраненными в памяти криптографическими данными, такими как ключи шифрования. Точнее, уязвимость располагается в функции ядра <i>join_session_keyring</i>, которую приложение может вызвать с использованием API <i>keyctl</i>, указав ей константу KEYCTL_JOIN_SESSION_KEYRING. После того как к использованию объекта keyring подключаются в очередной раз из того же процесса, функция увеличивает для него счетчик ссылок, а затем забывает его уменьшить перед выходом из нее (reference leak). Таким образом, вызывая множество раз функцию <i>keyctl</i> с идентификатором KEYCTL_JOIN_SESSION_KEYRING для уже созданного объекта keyring, счетчик ссылок для него будет постоянно расти.
Эксплуатация уязвимости достигается через увеличение счетчика ссылок (поле usage объекта keyring) на максимально возможное значение таким образом, чтобы сигнализировать ядру, что его уже можно удалить. Так как само поле интерпретируется как знаковое целое (int), для этого нужно установить его старший бит. После того как ядро высвободит память для объекта, а указатель на него останется для приложения, эксплойт выделит по тому же адресу иной объект, заполнит его содержимое нужным указателем, а затем спровоцирует его вызов через один из указателей в объекте keyring, что приведет к исполнению кода по адресу, указанному эксплойтом.
<br><br>
Рис. Результат успешной работы PoC для этой уязвимости (данные Perception Point).
По подсчетам Perception Point уязвимости подвержены десятки миллионов ПК и серверов, на которых установлена Linux с уязвимым ядром, а также 66% всех устройств под управлением Android. Компания указывает, что уязвимость присутствовала в ядре с 2012 г., т. е. уже около четырех лет. Такие защитные технологии как SMEP и SMAP, которые предотвращают коду режима ядра (с максимальными привилегиями с точки зрения микропроцессора) получать доступ к страницам виртуальной памяти пользовательского режима, не позволят коду эксплойта отработать нужным образом.
Мы рекомендуем пользователям установить соответствующее исправление для ОС сразу после его выхода.
<div class="clear"></div>