Столкновение стека является использованием на основе довольно старой техники. Память, используемая процессом, разделена на два региона - стек и "куча". Каждый обычно воображает стек как растущий вниз и "кучу" как растущий вверх. Что происходит, когда любой растет достаточно для столкновения с другим? В более общем плане, что происходит, когда стек растет достаточно для вторжения в несвязанные пространства памяти? Исходной уязвимости 12 лет, и разработчики ядра Linux зафиксировали ее временно при помощи защитной страницы. Однако исследователям в Qualys удалось использовать это несмотря на защитную страницу.
Ars Technica сообщает:
Уязвимости Столкновения стека медленно получали широко распространенную осведомленность, сначала в 2005 с результатами исследователя в области безопасности Gaël Delalleau и пять лет спустя с выпуском уязвимости Linux исследователем Rafal Wojtczuk. Разработчики Linux представили защиту, которая была предназначена для предотвращения столкновений стека, но сегодняшнее исследование демонстрирует, что для взломщиков относительно легко обойти ту меру.
Основное нападение подтверждения концепции, разработанное Qualys, использует уязвимость, индексированную как CVE-2017-1000364. Исследователи Qualys также разработали нападения, которые используют Столкновение Стека для использования отдельных уязвимостей, включая CVE-2017-1000365 и CVE-2017-1000367. Например, в сочетании с CVE-2017-1000367, недавно фиксированным дефектом в Sudo, также обнаруженном Qualys, локальные пользователи могут использовать Sudo для получения полных полномочий пользователя root на намного более широком диапазоне Ose. Qualys до сих пор не могла заставить использование удаленно выполнить код. Единственное удаленное приложение, которое они исследовали, было почтовым сервером Exim, который по совпадению оказался негодным для использования. Qualys заявила, что не может исключить возможность, что существует такое удаленное использование выполнения кода. Qualys заявила, что выпустит использование подтверждения концепции позднее, после того как у людей было время для защиты от уязвимостей.
[...] Намного больше информации доступно в этой подробной технической консультации от Qualys и этом техническом анализе от grsecurity.
Заключение в кавычки статьи LWN об исходной фиксации с 2010:
Поскольку Linux не разделяет стек процесса и страницы "кучи", превышение страницы стека в смежную страницу "кучи" возможно. Это означает, что достаточно глубокий стек (от рекурсивного вызова, например) мог закончить тем, что использовал память в "куче". Программа, которая может записать в ту страницу "кучи" (например, X-клиент) могла затем управлять обратным адресом одного из вызовов для перехода к месту его выбора. Это означает, что клиент может заставить сервер выполнять код своего выбора — выполнения произвольного кода — который может быть усилен для получения полномочий пользователя root.
Вышеупомянутое описание относится к различным подобным Unix ядрам.
В то время как Ars Technica действительно отмечает временное обходное решение, упомянутое в отчете Qualys ("устанавливает твердую СТОПКУ RLIMIT и RLIMIT_AS локальных пользователей и удаленных сервисов к низкой стоимости"), нужно отметить, что это не обязательно охраняет против этого использования. Единственный безопасный выход в настоящее время должен обновлять. Согласно grsecurity анализу:
Должно быть ясно, что попытки только для ядра решить эту проблему обязательно всегда будут неполными, поскольку реальная проблема находится в отсутствии зондирования стека. Так как альтернативное действительное решение зависит от восстановления всего пространства пользователя, это вероятно единственное выполнимое решение для обозримого будущего.
Лучшим, которое мы можем сделать теперь, является обновление ядро к исправленной версии.
Использование 2010 года использовало X-сервер, этот использовал sudo, следующий мог быть любым множеством программ пространства пользователя, которые, в какой-то момент, работают под поднятыми полномочиями.
Qualys не опубликовала кода подтверждения концепции для использования пока еще (они планируют сделать так позднее).
Существует несколько Уведомлений о безопасности Ubuntu, связанных с CVE-2017-1000364:
Также обратите внимание, что средство отслеживания CVE перечисляет несколько комбинаций выпуска/ядра, поскольку ожидание фиксирует.
Обычно самая простая фиксация должна обновить Ваши системы к последнему пакету ядра как можно скорее.
Соответствующие версии ядра от USNs (отобранное использование for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'
):
-
Ubuntu 17.04:
- linux-image-4.10.0-24-lowlatency 4.10.0-24.28
- linux-image-generic-lpae 4.10.0.24.26
- linux-image-generic 4.10.0.24.26
- linux-image-4.10.0-24-generic-lpae 4.10.0-24.28
- linux-image-4.10.0-24-generic 4.10.0-24.28
- linux-image-lowlatency 4.10.0.24.26
-
Ubuntu 17.04:
- linux-image-4.10.0-1008-raspi2 4.10.0-1008.11
- linux-image-raspi2 4.10.0.1008.10
-
Ubuntu 16.10:
- linux-image-powerpc-smp 4.8.0.56.69
- linux-image-powerpc-e500mc 4.8.0.56.69
- linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61
- linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61
- linux-image-4.8.0-56-lowlatency 4.8.0-56.61
- linux-image-generic 4.8.0.56.69
- linux-image-4.8.0-56-generic 4.8.0-56.61
- linux-image-powerpc64-emb 4.8.0.56.69
- linux-image-virtual 4.8.0.56.69
- linux-image-powerpc64-smp 4.8.0.56.69
- linux-image-4.8.0-56-generic-lpae 4.8.0-56.61
- linux-image-generic-lpae 4.8.0.56.69
- linux-image-lowlatency 4.8.0.56.69
- linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61
-
Ubuntu 16.10:
- linux-image-4.8.0-1040-raspi2 4.8.0-1040.44
- linux-image-raspi2 4.8.0.1040.44
-
Ubuntu 16.04 LTS:
- linux-image-powerpc64-smp-lts-utopic 4.4.0.81.87
- linux-image-generic-lts-wily 4.4.0.81.87
- linux-image-generic-lts-utopic 4.4.0.81.87
- linux-image-4.4.0-81-generic-lpae 4.4.0-81.104
- linux-image-powerpc64-emb-lts-vivid 4.4.0.81.87
- linux-image-powerpc-e500mc 4.4.0.81.87
- linux-image-generic-lpae-lts-xenial 4.4.0.81.87
- linux-image-generic-lpae-lts-utopic 4.4.0.81.87
- linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.87
- linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104
- linux-image-powerpc-e500mc-lts-wily 4.4.0.81.87
- linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104
- linux-image-generic-lpae-lts-wily 4.4.0.81.87
- linux-image-virtual-lts-vivid 4.4.0.81.87
- linux-image-virtual-lts-utopic 4.4.0.81.87
- linux-image-virtual 4.4.0.81.87
- linux-image-powerpc64-emb-lts-wily 4.4.0.81.87
- linux-image-lowlatency-lts-vivid 4.4.0.81.87
- linux-image-powerpc-e500mc-lts-vivid 4.4.0.81.87
- linux-image-powerpc64-emb 4.4.0.81.87
- linux-image-powerpc-smp-lts-xenial 4.4.0.81.87
- linux-image-4.4.0-81-generic 4.4.0-81.104
- linux-image-powerpc64-smp-lts-vivid 4.4.0.81.87
- linux-image-lowlatency-lts-wily 4.4.0.81.87
- linux-image-4.4.0-81-lowlatency 4.4.0-81.104
- linux-image-generic 4.4.0.81.87
- linux-image-lowlatency-lts-xenial 4.4.0.81.87
- linux-image-powerpc64-smp-lts-xenial 4.4.0.81.87
- linux-image-powerpc64-emb-lts-utopic 4.4.0.81.87
- linux-image-generic-lts-xenial 4.4.0.81.87
- linux-image-generic-lts-vivid 4.4.0.81.87
- linux-image-powerpc-e500mc-lts-utopic 4.4.0.81.87
- linux-image-powerpc-smp 4.4.0.81.87
- linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104
- linux-image-generic-lpae-lts-vivid 4.4.0.81.87
- linux-image-generic-lpae 4.4.0.81.87
- linux-image-powerpc64-smp-lts-wily 4.4.0.81.87
- linux-image-powerpc64-emb-lts-xenial 4.4.0.81.87
- linux-image-powerpc-smp-lts-wily 4.4.0.81.87
- linux-image-virtual-lts-wily 4.4.0.81.87
- linux-image-powerpc64-smp 4.4.0.81.87
- linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104
- linux-image-powerpc-smp-lts-utopic 4.4.0.81.87
- linux-image-powerpc-smp-lts-vivid 4.4.0.81.87
- linux-image-lowlatency 4.4.0.81.87
- linux-image-virtual-lts-xenial 4.4.0.81.87
- linux-image-lowlatency-lts-utopic 4.4.0.81.87
-
Ubuntu 16.04 LTS:
- linux-image-4.4.0-1016-gke 4.4.0-1016.16
-
Ubuntu 16.04 LTS:
- львиный зев изображения Linux 4.4.0.1061.54
- linux-image-4.4.0-1061-snapdragon 4.4.0-1061.66
-
Ubuntu 16.04 LTS:
- linux-image-4.4.0-1020-aws 4.4.0-1020.29
-
Ubuntu 16.04 LTS:
- linux-image-raspi2 4.4.0.1059.60
- linux-image-4.4.0-1059-raspi2 4.4.0-1059.67
-
Ubuntu 16.04 LTS:
- linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61~16.04.1
- linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61~16.04.1
- linux-image-4.8.0-56-lowlatency 4.8.0-56.61~16.04.1
- linux-image-4.8.0-56-generic 4.8.0-56.61~16.04.1
- linux-image-generic-hwe-16.04 4.8.0.56.27
- linux-image-lowlatency-hwe-16.04 4.8.0.56.27
- linux-image-4.8.0-56-generic-lpae 4.8.0-56.61~16.04.1
- linux-image-virtual-hwe-16.04 4.8.0.56.27
- linux-image-generic-lpae-hwe-16.04 4.8.0.56.27
- linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61~16.04.1
-
Ubuntu 14.04 LTS:
- linux-image-powerpc-smp-lts-xenial 4.4.0.81.66
- linux-image-lowlatency-lts-xenial 4.4.0.81.66
- linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104~14.04.1
- linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104~14.04.1
- linux-image-4.4.0-81-lowlatency 4.4.0-81.104~14.04.1
- linux-image-4.4.0-81-generic-lpae 4.4.0-81.104~14.04.1
- linux-image-generic-lpae-lts-xenial 4.4.0.81.66
- linux-image-powerpc64-smp-lts-xenial 4.4.0.81.66
- linux-image-4.4.0-81-generic 4.4.0-81.104~14.04.1
- linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104~14.04.1
- linux-image-generic-lts-xenial 4.4.0.81.66
- linux-image-powerpc64-emb-lts-xenial 4.4.0.81.66
- linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.66
- linux-image-virtual-lts-xenial 4.4.0.81.66
- linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104~14.04.1
-
Ubuntu 14.04 LTS:
- linux-image-powerpc-e500mc 3.13.0.121.131
- linux-image-lowlatency-pae 3.13.0.121.131
- linux-image-3.13.0-121-powerpc64-emb 3.13.0-121.170
- linux-image-generic-pae 3.13.0.121.131
- linux-image-3.13.0-121-powerpc-smp 3.13.0-121.170
- linux-image-3.13.0-121-powerpc-e500mc 3.13.0-121.170
- linux-image-3.13.0-121-powerpc-e500 3.13.0-121.170
- linux-image-3.13.0-121-generic-lpae 3.13.0-121.170
- linux-image-generic-lts-quantal 3.13.0.121.131
- linux-image-virtual 3.13.0.121.131
- linux-image-powerpc-e500 3.13.0.121.131
- linux-image-generic-lts-trusty 3.13.0.121.131
- linux-image-3.13.0-121-generic 3.13.0-121.170
- linux-image-omap 3.13.0.121.131
- linux-image-powerpc64-emb 3.13.0.121.131
- linux-image-3.13.0-121-powerpc64-smp 3.13.0-121.170
- linux-image-generic 3.13.0.121.131
- linux-image-highbank 3.13.0.121.131
- linux-image-generic-lts-saucy 3.13.0.121.131
- linux-image-powerpc-smp 3.13.0.121.131
- linux-image-3.13.0-121-lowlatency 3.13.0-121.170
- linux-image-generic-lpae-lts-saucy 3.13.0.121.131
- linux-image-generic-lts-raring 3.13.0.121.131
- linux-image-powerpc64-smp 3.13.0.121.131
- linux-image-generic-lpae-lts-trusty 3.13.0.121.131
- linux-image-generic-lpae 3.13.0.121.131
- linux-image-lowlatency 3.13.0.121.131
-
Ubuntu 12.04 ESM:
- linux-image-powerpc-smp 3.2.0.128.142
- linux-image-3.2.0-128-virtual 3.2.0-128.173
- linux-image-3.2.0-128-generic-pae 3.2.0-128.173
- linux-image-generic 3.2.0.128.142
- linux-image-generic-pae 3.2.0.128.142
- linux-image-highbank 3.2.0.128.142
- linux-image-3.2.0-128-highbank 3.2.0-128.173
- linux-image-3.2.0-128-powerpc-smp 3.2.0-128.173
- linux-image-virtual 3.2.0.128.142
- linux-image-powerpc64-smp 3.2.0.128.142
- linux-image-3.2.0-128-omap 3.2.0-128.173
- linux-image-3.2.0-128-powerpc64-smp 3.2.0-128.173
- linux-image-omap 3.2.0.128.142
- linux-image-3.2.0-128-generic 3.2.0-128.173
-
Ubuntu 12.04 LTS:
- 3.13.0-121.170~precise1 linux-image-3.13.0-121-generic
- linux-image-generic-lpae-lts-trusty 3.13.0.121.112
- linux-image-generic-lts-trusty 3.13.0.121.112
- 3.13.0-121.170~precise1 linux-image-3.13.0-121-generic-lpae
Sudo
Вышеупомянутая sudo ошибка покрыта USN-3304-1 с 30 мая 2017:
-
Ubuntu 17.04:
- sudo-ldap 1.8.19p1-1ubuntu1.1
- sudo 1.8.19p1-1ubuntu1.1
-
Ubuntu 16.10:
- 1.8.16-0ubuntu3.2 sudo-ldap
- 1.8.16-0ubuntu3.2 sudo
-
Ubuntu 16.04 LTS:
- 1.8.16-0ubuntu1.4 sudo-ldap
- 1.8.16-0ubuntu1.4 sudo
-
Ubuntu 14.04 LTS:
- sudo-ldap 1.8.9p5-1ubuntu1.4
- sudo 1.8.9p5-1ubuntu1.4