В ядре Linux исправили опасную уязвимость
Опасная Local Privilege Escalation (LPE) уязвимость в ядре Linux с идентификатором CVE-2016–5195 (Dirty COW) была исправлена в таких дистрибутивах Linux как RedHat, Ubuntu и Debian. Мы рекомендуем пользователям как можно скорее обновить свои копии Linux, поскольку уязвимость уже используется атакующими in-the-wild. Уязвимость является довольно древней, ей уже 9 лет и она появилась в ядре начиная с версии 2.6.22. Это говорит о том, что она может присутствовать и в ядре Android. Dirty COW позволяет атакующему получить максимальные права root в системе, правда для проникновения в систему, он еще должен использовать RCE-эксплойт. Получение root доступа в системе позволит атакующему выполнять в ней неограниченное количество операций.
Уязвимость присутствует в коде диспетчера виртуальной памяти ядра Linux, который отвечает за реализацию известного механизма управления общей mapped-памятью под названием copy-on-write (копирование при записи). При одновременной попытке доступа нескольких клиентов к этому коду может возникнуть состояние гонки (race condition), в результате чего поток получит доступ на запись к тем страницам памяти, которые доступны только для чтения.
A race condition was found in the way the Linux kernel’s memory subsystem handled the copy-on-write (COW) breakage of private read-only memory mappings. An unprivileged local user could use this flaw to gain write access to otherwise read-only memory mappings and thus increase their privileges on the system.
Уязвимость присутствует в коде диспетчера виртуальной памяти ядра Linux, который отвечает за реализацию известного механизма управления общей mapped-памятью под названием copy-on-write (копирование при записи). При одновременной попытке доступа нескольких клиентов к этому коду может возникнуть состояние гонки (race condition), в результате чего поток получит доступ на запись к тем страницам памяти, которые доступны только для чтения.
Механизм копирования при записи используется практически во всех современных ОС. В общем случае, он позволяет значительно экономить время загрузки кода и данных, которые используются в системе многими процессами, за счет размещения их в памяти в единственном экземпляре с присваиванием им специального атрибута доступа «copy-on-write». Таким образом, когда поток захочет что-то записать на страницу памяти с таким атрибутом, ОС заметит это и выделит потоку для этого приватную страницу физической памяти, скопирует на нее оригинальные данные и позволит их модифицировать. Прочие процессы будут видеть исходные данные на странице, в то время как указанный процесс будет иметь доступ к модифицированным данным.