CVE-2013-2596

Linux Kernel

ВЕРОЯТНОСТЬ 2.7%

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

2022-09-15

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

Linux kernel fb_mmap function in drivers/video/fbmem.c contains an integer overflow vulnerability that allows for privilege escalation.

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

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

CVE-2013-2596 представляет собой уязвимость типа «целочисленное переполнение» (integer overflow) в функции fb_mmap, расположенной в файле drivers/video/fbmem.c ядра Linux.

Проблема заключается в некорректной проверке границ при вычислении смещения памяти в кадровом буфере (framebuffer). При выполнении системного вызова mmap на устройстве /dev/fb0, злоумышленник может передать специально сформированные значения аргументов offset и len. В результате арифметического переполнения проверка if (off > info->fix.smem_len) обходится, что позволяет отобразить произвольные участки физической памяти в адресное пространство пользователя.

Это дает локальному пользователю возможность чтения и записи физической памяти с правами ядра, что ведет к полному захвату системы (Privilege Escalation).

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

Основной способ исправления — обновление ядра Linux до версии, в которой присутствует патч, добавляющий корректную проверку переполнения с использованием макроса PAGE_SHIFT и проверку диапазона доступной памяти.

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

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

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

  1. Если вы используете специфическую сборку ядра, необходимо применить патч в исходном коде. В функции fb_mmap следует добавить проверку, предотвращающую переполнение при вычислении конечного адреса:
/* Пример логики исправления в fbmem.c */
unsigned long len;
len = (info->fix.smem_len + (info->fix.smem_start & ~PAGE_MASK) + PAGE_SIZE - 1) >> PAGE_SHIFT;
if (vma->vm_pgoff >= len)
    return -EINVAL;

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

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

  1. Ограничьте права доступа к файлам устройств /dev/fb*, чтобы непривилегированные пользователи не могли взаимодействовать с драйвером:
sudo chmod 600 /dev/fb*

  1. Если функциональность графического вывода через framebuffer не критична для работы сервера, можно выгрузить соответствующий модуль (если он скомпилирован как модуль):
sudo modprobe -r fbcon

sudo modprobe -r fbdev

  1. Используйте механизмы принудительного контроля доступа (например, SELinux или AppArmor), чтобы запретить подозрительным процессам доступ к устройствам вывода видео.