CVE-2018-14634
Linux Kernal
2026-01-26
Linux Kernel contains an integer overflow vulnerability in the create_elf_tables() function which could allow an unprivileged local user with access to SUID (or otherwise privileged) binary to escalate their privileges on the system.
Технический анализ и план устранения
Суть уязвимости
Уязвимость CVE-2018-14634 (также известная как Mutagen Astronomy) представляет собой целочисленное переполнение (integer overflow) в функции create_elf_tables() ядра Linux.
- При запуске ELF-файла ядро выделяет память для аргументов командной строки и переменных окружения.
- Если локальный злоумышленник передаст SUID-бинарнику огромный объем данных (более 2 ГБ аргументов или переменных окружения), происходит переполнение счетчика.
- Это приводит к тому, что ядро выделяет недостаточно памяти, что позволяет злоумышленнику перезаписать стек процесса.
- В результате атакующий может выполнить произвольный код с правами владельца SUID-файла (как правило, root), что приводит к локальному повышению привилегий (LPE).
- Уязвимости подвержены в основном ядра RHEL 6, 7 и CentOS, так как в основной ветке (mainline) ядра эта проблема была частично нивелирована предыдущими патчами, которые не были перенесены в RHEL в полном объеме.
Как исправить
Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление, с последующей перезагрузкой системы.
Для систем на базе RHEL/CentOS (наиболее подверженных данной уязвимости):
yum clean all
yum update kernel
Для систем на базе RHEL 8/CentOS 8/Fedora:
dnf update kernel
Для систем на базе Debian/Ubuntu (если используется уязвимое кастомное ядро):
apt update
apt upgrade linux-image-generic
После установки обновления необходимо перезагрузить сервер для применения нового ядра:
reboot
Временные меры
Если немедленное обновление и перезагрузка невозможны, можно применить следующие компенсирующие меры:
- Монтирование пользовательских разделов с флагом nosuid. Это предотвратит повышение привилегий при запуске SUID-бинарников из директорий, к которым имеют доступ непривилегированные пользователи (например,
/tmp,/home,/var/tmp).
mount -o remount,nosuid /tmp
mount -o remount,nosuid /home
- Снятие SUID-битов с некритичных системных утилит. Если в системе есть SUID-файлы, которые не требуются для работы обычных пользователей, у них можно отобрать этот флаг. Поиск всех SUID-файлов:
find / -type f -perm -4000 2>/dev/null
Снятие SUID-бита с конкретного файла (замените путь на нужный):
chmod u-s /path/to/binary
- Использование SystemTap (Официальный workaround от Red Hat). Если в системе установлен SystemTap и отладочные символы ядра (kernel-debuginfo), можно на лету перехватывать попытки эксплуатации, ограничивая размер аргументов. Создайте файл
cve-2018-14634.stpсо следующим содержимым:
probe kernel.function("create_elf_tables") {
if ($bprm->argc > 10000 || $bprm->envc > 10000) {
printf("CVE-2018-14634 mitigation triggered by PID %d\n", pid());
$bprm->argc = 0;
$bprm->envc = 0;
}
}
Запуск скрипта в фоновом режиме:
stap -g -F cve-2018-14634.stp