В ядре Linux выявлена уязвимость (http://seclists.org/oss-sec/2017/q3/541) (CVE-2017-1000253 (https://security-tracker.debian.org/tracker/CVE-2017-1000253)) в реализации метода загрузки исполняемых файлов ELF, которая позволяет добиться получения root-полномочий в системе. Проблема выявлена компанией Qualys и продолжает развитие метода Stack Сlash (https://www.opennet.ru/opennews/art.shtml?num=46724), основанном на пересечении содержимого стека и кучи.
Суть уязвимости заключается в том, что исполняемый файл приложения, скомпилированного в режиме PIE (Position Independent Executable), может быть загружен таким образом, что часть информации из сегмента данных отразится на области памяти, выделенных под стек. Т.е. через манипуляции с неисполняемыми данными можно переписать часть содержимого стека. Атакующий может воспользоваться данной проблемой для повышения своих привилегий через манипуляции с находящимися в системе исполняемыми файлами с флагом SUID, собранными в режиме PIE. Например приводится пример эксплуатации через утилиту ping.
Эксплуатация сводится к передаче в качестве аргумента в execve() строки, размером около 1.5 Гб, в результате чего PIE отражается в область памяти непосредственно ниже стека и становится применим метод атаки Stack Сlash (https://www.opennet.ru/opennews/art.shtml?num=46724). Вероятность такой раскладки оценивается в 1 из 17331, что позволяет добиться успешного стечения обстоятельств в среднем за пять часов, при интенсивности пробных запусков раз в секунду. Код для атаки очень близок к эксплоиту Linux_ldso_dynamic.c, опубликованному при анонсе Stack Сlash. При помощи вызова строковых операций, использующих стек, достигается пересечение со стеком PIE секции ".dynamic", после чего в ld.so инициируется загрузка собственной разделяемой библиотеки.
В ядре Linux проблема была
исправлена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...) ещё в апреле 2015 года, без акцентирования на связь исправления с проблемами безопасности. Поэтому в LTS-ядра и пакеты с ядром некоторых дистрибутивов данное исправление не было перенесено. Уязвимости оказались подвержены все ветки RHEL/CentOS (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2017-1000253), но обновления уже включены в RHEL 7.4 и CentOS 1708, а также выпущены для прошлых веток RHEL 5.x (https://access.redhat.com/errata/RHSA-2017:2801), 6.x (https://access.redhat.com/errata/RHSA-2017:2796) и 7.x (https://access.redhat.com/errata/RHSA-2017:2793). Проблема также уже устранена в Debian (https://security-tracker.debian.org/tracker/CVE-2017-1000253). В SUSE Linux Enterprise 12 GA, SP1, SP2 и SP3 проблема не проявляется (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2017-1000253), так исправление было принято в составе одного из патчей в июне 2015 года. Подверженность уязвимости Ubuntu (https://people.canonical.com/~ubuntu-security/cve/2017/CVE-2...) и ветки SUSE Linux Enterprise 11 уточняется. В качестве обходного пути блокирования уязвимости можно установить "sysctl vm.legacy_va_layout=1" для активации устаревшей раскладки mmap.
URL: http://seclists.org/oss-sec/2017/q3/541
Новость: http://www.opennet.ru/opennews/art.shtml?num=47280