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 был исправлен.
- Обновите Realtek SDK до версии, выпущенной после мая 2015 года, где внедрена фильтрация входных данных в функции
SoapMethod_AddPortMapping. - Если вы являетесь производителем оборудования (OEM), необходимо применить патч к исходному коду
miniigd. В файле, отвечающем за обработку SOAP-запросов, замените прямые вызовыsystem()на безопасные аналоги или добавьте строгую фильтрацию символов;,&,|,`,$. - Пересоберите прошивку и распространите обновление среди конечных пользователей.
Для проверки версии и наличия процесса в системе:
ps | grep miniigd
Временные меры
Если обновление прошивки недоступно, необходимо ограничить эксплуатацию уязвимости на сетевом уровне:
- Заблокируйте доступ к порту UPnP SOAP (обычно TCP 52869 или 52881) из внешней сети (WAN).
- Отключите функцию UPnP в настройках устройства, если она не является критически важной для работы.
- Настройте правила межсетевого экрана для разрешения доступа к управлению устройством только из доверенных сегментов сети.
Пример блокировки порта через iptables (если доступна консоль):
iptables -A INPUT -p tcp --dport 52869 -j DROP
Для полной остановки уязвимого сервиса (до перезагрузки):
killall -9 miniigd