CVE-2010-3904

Linux Kernel

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

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

2023-05-12

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

Linux Kernel contains an improper input validation vulnerability in the Reliable Datagram Sockets (RDS) protocol implementation that allows local users to gain privileges via crafted use of the sendmsg and recvmsg system calls.

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

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

CVE-2010-3904 — это критическая уязвимость в реализации протокола Reliable Datagram Sockets (RDS) в ядре Linux (версии до 2.6.36). Проблема заключается в отсутствии надлежащей проверки указателей на пользовательское пространство (user-space) при выполнении системных вызовов sendmsg и recvmsg.

Функция rds_get_mr_for_dest некорректно проверяла права доступа к страницам памяти. Это позволяло локальному непривилегированному пользователю передавать специально сформированные аргументы, которые заставляли ядро копировать данные по произвольным адресам в пространстве ядра. В результате атакующий мог перезаписать структуры данных ядра (например, таблицу системных вызовов или учетные данные процесса), что приводило к полному захвату контроля над системой и повышению привилегий до уровня root.

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

Основным способом устранения является обновление ядра Linux до версии, в которой данная ошибка исправлена (2.6.36 и выше), либо применение патча от производителя вашего дистрибутива.

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

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

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

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

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

Если немедленное обновление ядра невозможно, необходимо ограничить возможность эксплуатации уязвимости путем отключения модуля rds. Если протокол RDS не используется в бизнес-процессах, его деактивация полностью блокирует вектор атаки.

  1. Выгрузите модуль RDS из оперативной памяти:
sudo modprobe -r rds

  1. Внесите модуль в черный список (blacklist), чтобы предотвратить его автоматическую загрузку:
echo "install rds /bin/true" | sudo tee /etc/modprobe.d/rds-disable.conf

  1. Для систем, использующих modprobe.conf, добавьте аналогичную запись:
echo "blacklist rds" | sudo tee -a /etc/modprobe.d/blacklist.conf