t0ma5
21.10.2016, 14:23
В ядре Linux выявлена опасная уязвимость (https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails) CVE-2016-5195 (https://security-tracker.debian.org/tracker/CVE-2016-5195), которой присвоено кодовое имя "Dirty COW (http://dirtycow.ninja/)", позволяющая непривилегированному локальному пользователю повысить свои привилегии в системе. Проблема отмечена некоторыми экспертами как одна из наиболее опасных уязвимостей в ядре, чему способствует наличие надёжно рабочего прототипа эксплоита (https://github.com/dirtycow/dirtycow.github.io/blob/master/dirtyc0w.c), простота проведения атаки (экплоит не зависит от особенностей окружения) и сведения (https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c16) о длительном использовании данной уязвимости злоумышленниками до исправления проблемы (проблема была выявлена на основе изучения перехваченного эксплоита). Уязвимость присутствует с 2007 года и проявляется в ядрах Linux, начиная с выпуска 2.6.22.
Уязвимость вызвана состоянием гонки (https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D 0%B5_%D0%B3%D0%BE%D0%BD%D0%BA%D0%B8) при обработке copy-on-write (COW) операций в подсистеме управления памятью и позволяет нарушить работу маппинга памяти в режиме только для чтения. С практической стороны, проблема позволяет осуществить запись в области памяти, отражённые в режиме только для чтения. Например, в прототипе эксплоита показано (https://github.com/dirtycow/dirtycow.github.io/blob/master/dirtyc0w.c) как использовать данную проблему для изменения содержимого файла, принадлежащего пользователю root и доступного только на чтение. В том числе, при помощи предложенного метода атаки непривилегированный злоумышленник может изменить исполняемые системные файлы, обойдя штатные механизмы управления доступом.
Code:
$ sudo -s
# echo this is not a test > foo
# chmod 0404 foo
$ ls -lah foo
-r-----r-- 1 root root 19 Oct 20 15:23 foo
$ cat foo
this is not a test
$ gcc -lpthread dirtyc0w.c -o dirtyc0w
$ ./dirtyc0w foo m00000000000000000
mmap 56123000
madvise 0
procselfmem 1800000000
$ cat foo
m00000000000000000
Уязвимость устранена (https://git.kernel.org/linus/19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619) в выпусках ядра Linux 4.8.3, 4.7.9 и 4.4.26. Обновления пакетов с ядром уже сформированы для дистрибутивов Debian (https://security-tracker.debian.org/tracker/CVE-2016-5195), Ubuntu (https://www.ubuntu.com/usn/usn-3107-1/), Mageia (https://advisories.mageia.org/MGASA-2016-0347.html), SUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2016-5195), Fedora (https://bodhi.fedoraproject.org/updates/FEDORA-2016-c8a0c7eece). Для openSUSE (https://lists.opensuse.org/opensuse-security-announce/2016-10/), CentOS (https://lists.centos.org/pipermail/centos-announce/2016-October/thread.html) и RHEL (https://rhn.redhat.com/errata/rhel-server-7-errata.html) исправления пока не выпущены (в RHEL/CentOS 5 и 6 представленный эксплоит не работает из-за закрытия /proc/self/mem на запись, но в RHEL/CentOS 7 такого ограничения нет). Для временного блокирования уязвимости в RHEL/CentOS 7 подготовлен (https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c13) сценарий SystemTap.
источник - http://www.opennet.ru/opennews/art.shtml?num=45354
Уязвимость вызвана состоянием гонки (https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D 0%B5_%D0%B3%D0%BE%D0%BD%D0%BA%D0%B8) при обработке copy-on-write (COW) операций в подсистеме управления памятью и позволяет нарушить работу маппинга памяти в режиме только для чтения. С практической стороны, проблема позволяет осуществить запись в области памяти, отражённые в режиме только для чтения. Например, в прототипе эксплоита показано (https://github.com/dirtycow/dirtycow.github.io/blob/master/dirtyc0w.c) как использовать данную проблему для изменения содержимого файла, принадлежащего пользователю root и доступного только на чтение. В том числе, при помощи предложенного метода атаки непривилегированный злоумышленник может изменить исполняемые системные файлы, обойдя штатные механизмы управления доступом.
Code:
$ sudo -s
# echo this is not a test > foo
# chmod 0404 foo
$ ls -lah foo
-r-----r-- 1 root root 19 Oct 20 15:23 foo
$ cat foo
this is not a test
$ gcc -lpthread dirtyc0w.c -o dirtyc0w
$ ./dirtyc0w foo m00000000000000000
mmap 56123000
madvise 0
procselfmem 1800000000
$ cat foo
m00000000000000000
Уязвимость устранена (https://git.kernel.org/linus/19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619) в выпусках ядра Linux 4.8.3, 4.7.9 и 4.4.26. Обновления пакетов с ядром уже сформированы для дистрибутивов Debian (https://security-tracker.debian.org/tracker/CVE-2016-5195), Ubuntu (https://www.ubuntu.com/usn/usn-3107-1/), Mageia (https://advisories.mageia.org/MGASA-2016-0347.html), SUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2016-5195), Fedora (https://bodhi.fedoraproject.org/updates/FEDORA-2016-c8a0c7eece). Для openSUSE (https://lists.opensuse.org/opensuse-security-announce/2016-10/), CentOS (https://lists.centos.org/pipermail/centos-announce/2016-October/thread.html) и RHEL (https://rhn.redhat.com/errata/rhel-server-7-errata.html) исправления пока не выпущены (в RHEL/CentOS 5 и 6 представленный эксплоит не работает из-за закрытия /proc/self/mem на запись, но в RHEL/CentOS 7 такого ограничения нет). Для временного блокирования уязвимости в RHEL/CentOS 7 подготовлен (https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c13) сценарий SystemTap.
источник - http://www.opennet.ru/opennews/art.shtml?num=45354