Все версии ядра Linux, начиная с 3.8 и заканчивая веткой 4.5 в git, подвержены уязвимости (CVE-2016-0728), позволяющей локальному непривилегированному пользователю получить права суперпользователя.

Ошибка в коде существует с 2012 года - ей подвержены как минимум 2/3 пользователей ОС Android, которые находятся в зоне повышенного риска, так как Google не может проверить исполняемый код, собранных с использованием NDK (Native Development Kit) мобильных приложений и игр, опубликованных в Google Play. Обычные компьютеры и серверы находятся в относительной безопасности в случае, если в системе только один пользователь, пользователям запрещено исполнять код или экземпляры ОС находятся в среде виртуализации.

Уязвимость присутствует в подсистеме ядра keyrings, отвечающей за кэширование и хранение ключей аутентификации и сертификатов для шифрования. Ошибка вызвана некорректным освобождением объектов, что может привести к обращению к уже освобождённой области памяти (use-after-free) в ситуации, когда процесс пытается заменить свой текущий сессионный keyring тем же самым экземпляром. Эксплуатация уязвимости достаточно тривиальна - код эксплоита составляет всего 100 строк на языке C (эксплоит выполняется около 30 минут, так как выполняет более 4 миллиардов системных вызовов).

Состояние проблемы и её решение можно отслеживать по CVE-2016-0728. На момент написания новости только Debian выпустил обновления пакетов с ядром. Оценить появление обновлений можно на следующих страницах: openSUSE, SLES, Slackware, Gentoo, CentOS, RHEL 7 (RHEL/CentOS 5 и 6 проблеме не подвержены), Ubuntu и Fedora. Из технологий, затрудняющих эксплуатацию уязвимости, упоминаются SELinux, SMEP (Supervisor Mode Execution Protection) и SMAP (Supervisor Mode Access Protection). В качестве обходного пути защиты можно пересобрать ядро, отключив в настройках опцию CONFIG_KEYS.

Дополнение: издание The Register выяснило, что процент телефонов с Android'ом, которые подвержены этой атаке, гораздо ниже, чем заявлялось в оригинале. Так, во многих версиях Android функциональность keyrings вообще не включена, а в большом количестве сборок Android, начиная с версии 5.0, включен SeLinux, который не позволяет использовать эту уязвимость.

Источник: http://www.opennet.ru/opennews/art.shtml?num=43696