CVE-2013-2094

Linux Kernel

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2022-09-15

Официальное описание

Linux kernel fails to check all 64 bits of attr.config passed by user space, resulting to out-of-bounds access of the perf_swevent_enabled array in sw_perf_event_destroy(). Explotation allows for privilege escalation.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2013-2094 — это критическая уязвимость в подсистеме Performance Events (perf_events) ядра Linux, связанная с некорректной проверкой границ массива. Проблема заключается в том, что ядро проверяет только 32 бита значения attr.config, передаваемого из пользовательского пространства, в то время как переменная имеет 64-битный тип.

Из-за отсутствия полной проверки 64-битного значения злоумышленник может передать специально сформированный аргумент, который приведет к выходу за пределы массива perf_swevent_enabled в функции sw_perf_event_destroy(). Это позволяет локальному пользователю перезаписать память ядра, что ведет к повреждению данных, отказу в обслуживании (Kernel Panic) или получению прав суперпользователя (root).

Как исправить

Основным способом устранения является обновление ядра до версии, в которой этот баг исправлен (3.8.9+ или соответствующие патчи в LTS-ветках).

  1. Обновите список пакетов:
sudo apt-get update

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

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

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

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

Если немедленное обновление ядра невозможно, необходимо ограничить доступ непривилегированных пользователей к подсистеме perf_events.

  1. Установите значение perf_event_paranoid в 2. Это запретит использование perf_events для большинства операций пользователям без прав CAP_SYS_ADMIN:
sudo sysctl -w kernel.perf_event_paranoid=2

  1. Чтобы настройка сохранилась после перезагрузки, добавьте её в конфигурационный файл:
echo "kernel.perf_event_paranoid=2" | sudo tee -a /etc/sysctl.conf

  1. В критических случаях, если мониторинг производительности не требуется, можно полностью запретить доступ к системному вызову perf_event_open с помощью механизмов SELinux или AppArmor.