CVE-2017-1000253
Linux Kernel
2024-09-09
Linux kernel contains a position-independent executable (PIE) stack buffer corruption vulnerability in load_elf_ binary() that allows a local attacker to escalate privileges.
Технический анализ и план устранения
Суть уязвимости
CVE-2017-1000253 — это критическая уязвимость в ядре Linux, связанная с некорректной обработкой памяти при загрузке исполняемых файлов формата ELF (Position Independent Executables — PIE). Проблема локализована в функции load_elf_binary().
При запуске PIE-бинарника ядро должно выделить место под стек и сегменты программы. Из-за ошибки в расчетах размеров и смещений, стек может быть размещен слишком близко к другим сегментам памяти (например, к области отображения исполняемого файла). Это приводит к перекрытию (corruption) памяти стека. Локальный злоумышленник может использовать это состояние для повреждения данных в памяти и выполнения произвольного кода с правами суперпользователя (root), обходя механизмы защиты ASLR.
Как исправить
Основным способом устранения уязвимости является обновление ядра Linux до версии, в которой исправлена логика размещения стека для PIE-файлов.
- Обновите список пакетов репозитория:
sudo apt update
- Установите последние доступные обновления ядра:
sudo apt upgrade linux-image-generic
- Перезагрузите систему для применения изменений:
sudo reboot
- После перезагрузки проверьте версию ядра, чтобы убедиться, что исправление применено (версия должна быть выше 4.13 или содержать бэкпорт исправления от вашего дистрибьютора):
uname -r
Для систем на базе RHEL/CentOS:
sudo yum update kernel
sudo reboot
Временные меры
Если немедленное обновление ядра и перезагрузка невозможны, рекомендуется использовать следующие методы для снижения риска эксплуатации:
-
Ограничение доступа к непривилегированным пользователям: Максимально ограничьте возможность выполнения произвольного кода локальными пользователями на критических серверах.
-
Использование SystemTap (для продвинутых администраторов): Можно использовать скрипт SystemTap для временного изменения поведения функции
load_elf_binary, однако это сложное решение, которое может привести к нестабильности системы. -
Использование патчей безопасности от вендоров без смены мажорной версии: Проверьте наличие "Livepatch" (например, Canonical Livepatch или kpatch), которые позволяют вносить исправления в ядро без перезагрузки системы.
-
Настройка лимитов ресурсов: Ограничение размера стека через
ulimit -sможет затруднить эксплуатацию в некоторых сценариях, но не является полноценной защитой.
ulimit -s 8192