Уязвимость повышения привилегий в реализации PPPoL2TP в ядре Linux через различия структур данных между сокетами l2tp и inet
Описание
Обнаружена уязвимость в реализации PPP over L2TP в ядре Linux, связанная с тем, как функции pppol2tp_setsockopt() и pppol2tp_getsockopt() обрабатывали запросы с уровнем опций сокета, отличным от SOL_PPPOL2TP. Локальный пользователь без привилегий мог использовать эту уязвимость для повышения своих прав на системе.
Проблема затрагивает ядро Linux версий до 3.15.6 включительно.
Заявление
Данная проблема не затрагивает пакеты ядра Linux, поставляемые с Red Hat Enterprise Linux 5 и Red Hat Enterprise MRG 2.
Обратите внимание, что в Red Hat Enterprise Linux 6 модуль pppol2tp не загружается автоматически при создании сокета типа AF_PPPOX/PX_PROTO_OL2TP, так как в этой версии отсутствует коммит 9395a09d05a23bb из upstream, а также конфигурация modprobe по умолчанию не содержит псевдонимов для протокола pppol2tp. В результате модуль pppol2tp должен быть явно включен или загружен администратором системы.
Способы защиты
Для Red Hat Enterprise Linux 6 выполните:
Для Red Hat Enterprise Linux 7 выполните:
Альтернативно, если модуль pppol2tp/l2tp_ppp нельзя добавить в черный список и требуется его загрузка, можно использовать следующий скрипт SystemTap:
- На хосте сохраните следующий код в файл с расширением
.stp:
- Установите пакет
systemtapи все необходимые зависимости. Информацию о установке требуемых-debuginfoпакетов см. в главе "2. Using SystemTap" документа "SystemTap Beginners Guide" для Red Hat Enterprise Linux 6, доступного на docs.redhat.com. - Запустите команду
stap -g [filename-from-step-1].stpот имени root. Если хост перезагружается, изменения будут потеряны, и скрипт необходимо запустить повторно.
Альтернативно, соберите скрипт SystemTap на системе разработки с помощью команды:
Распространите полученный модуль ядра на все затронутые системы и запустите его с помощью staprun -L. При использовании этого подхода на затронутых системах требуется только пакет systemtap-runtime.
Обратите внимание, что версии ядра должны совпадать на всех системах.
Затронутые версии ПО
- Ядро Linux до версии 3.15.6 (включительно)
Тип уязвимости
Повышение привилегий
Затронутые пакеты
| Платформа | Пакет | Состояние | Рекомендация | Релиз |
|---|---|---|---|---|
| Red Hat Enterprise Linux 5 | kernel | Not affected | ||
| Red Hat Enterprise MRG 2 | realtime-kernel | Not affected | ||
| Red Hat Enterprise Linux 6 | kernel | Fixed | RHSA-2014:0924 | 23.07.2014 |
| Red Hat Enterprise Linux 6.2 Advanced Update Support | kernel | Fixed | RHSA-2014:1025 | 06.08.2014 |
| Red Hat Enterprise Linux 6.4 Extended Update Support | kernel | Fixed | RHSA-2014:0925 | 23.07.2014 |
| Red Hat Enterprise Linux 7 | kernel | Fixed | RHSA-2014:0923 | 23.07.2014 |
Показывать по
Дополнительная информация
Статус:
EPSS
7.2 High
CVSS2
Связанные уязвимости
The PPPoL2TP feature in net/l2tp/l2tp_ppp.c in the Linux kernel through 3.15.6 allows local users to gain privileges by leveraging data-structure differences between an l2tp socket and an inet socket.
The PPPoL2TP feature in net/l2tp/l2tp_ppp.c in the Linux kernel through 3.15.6 allows local users to gain privileges by leveraging data-structure differences between an l2tp socket and an inet socket.
The PPPoL2TP feature in net/l2tp/l2tp_ppp.c in the Linux kernel throug ...
The PPPoL2TP feature in net/l2tp/l2tp_ppp.c in the Linux kernel through 3.15.6 allows local users to gain privileges by leveraging data-structure differences between an l2tp socket and an inet socket.
ELSA-2014-3048: unbreakable enterprise kernel security update (IMPORTANT)
EPSS
7.2 High
CVSS2