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-файлов.

  1. Обновите список пакетов репозитория:
sudo apt update

  1. Установите последние доступные обновления ядра:
sudo apt upgrade linux-image-generic

  1. Перезагрузите систему для применения изменений:
sudo reboot

  1. После перезагрузки проверьте версию ядра, чтобы убедиться, что исправление применено (версия должна быть выше 4.13 или содержать бэкпорт исправления от вашего дистрибьютора):
uname -r

Для систем на базе RHEL/CentOS:

sudo yum update kernel
sudo reboot

Временные меры

Если немедленное обновление ядра и перезагрузка невозможны, рекомендуется использовать следующие методы для снижения риска эксплуатации:

  1. Ограничение доступа к непривилегированным пользователям: Максимально ограничьте возможность выполнения произвольного кода локальными пользователями на критических серверах.

  2. Использование SystemTap (для продвинутых администраторов): Можно использовать скрипт SystemTap для временного изменения поведения функции load_elf_binary, однако это сложное решение, которое может привести к нестабильности системы.

  3. Использование патчей безопасности от вендоров без смены мажорной версии: Проверьте наличие "Livepatch" (например, Canonical Livepatch или kpatch), которые позволяют вносить исправления в ядро без перезагрузки системы.

  4. Настройка лимитов ресурсов: Ограничение размера стека через ulimit -s может затруднить эксплуатацию в некоторых сценариях, но не является полноценной защитой.

ulimit -s 8192