CVE-2014-8361

Realtek SDK

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

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

2023-09-18

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

Realtek SDK contains an improper input validation vulnerability in the miniigd SOAP service that allows remote attackers to execute malicious code via a crafted NewInternalClient request.

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

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

CVE-2014-8361 представляет собой критическую уязвимость типа Command Injection (инъекция команд) в сервисе miniigd (MiniUPnP daemon), который является частью Realtek SDK. Проблема заключается в некорректной валидации входных данных в SOAP-сервисе.

Уязвимость проявляется при обработке SOAP-запроса NewInternalClient. Злоумышленник может отправить специально сформированный HTTP-запрос, содержащий системные команды в полях аргументов. Поскольку сервис выполняет эти данные через вызов system() без надлежащей фильтрации метасимволов оболочки (shell), атакующий получает возможность удаленного выполнения произвольного кода (RCE) с правами root.

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

Основным способом устранения является обновление прошивки устройства до версии, в которой Realtek SDK был исправлен.

  1. Обновите Realtek SDK до версии, выпущенной после мая 2015 года, где внедрена фильтрация входных данных в функции SoapMethod_AddPortMapping.
  2. Если вы являетесь производителем оборудования (OEM), необходимо применить патч к исходному коду miniigd. В файле, отвечающем за обработку SOAP-запросов, замените прямые вызовы system() на безопасные аналоги или добавьте строгую фильтрацию символов ;, &, |, `, $.
  3. Пересоберите прошивку и распространите обновление среди конечных пользователей.

Для проверки версии и наличия процесса в системе:

ps | grep miniigd

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

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

  1. Заблокируйте доступ к порту UPnP SOAP (обычно TCP 52869 или 52881) из внешней сети (WAN).
  2. Отключите функцию UPnP в настройках устройства, если она не является критически важной для работы.
  3. Настройте правила межсетевого экрана для разрешения доступа к управлению устройством только из доверенных сегментов сети.

Пример блокировки порта через iptables (если доступна консоль):

iptables -A INPUT -p tcp --dport 52869 -j DROP

Для полной остановки уязвимого сервиса (до перезагрузки):

killall -9 miniigd