CVE-2014-3931
Looking Glass Multi-Router Looking Glass (MRLG)
2025-07-07
Multi-Router Looking Glass (MRLG) contains a buffer overflow vulnerability that could allow remote attackers to cause an arbitrary memory write and memory corruption.
Технический анализ и план устранения
Суть уязвимости
CVE-2014-3931 представляет собой критическую уязвимость типа «переполнение буфера» (Buffer Overflow) в программном обеспечении Multi-Router Looking Glass (MRLG). Проблема локализована в механизме обработки входных данных, передаваемых через CGI-скрипт.
Из-за отсутствия надлежащей проверки длины аргументов, передаваемых в параметры (например, в параметре router), злоумышленник может отправить специально сформированный HTTP-запрос. Это приводит к перезаписи смежных областей памяти, повреждению структур данных и потенциальному выполнению произвольного кода (RCE) с привилегиями веб-сервера.
Как исправить
Основным способом устранения является обновление исходного кода и пересборка бинарного файла (если используется скомпилированная версия) или переход на актуальную версию ПО, где реализована проверка границ (bounds checking).
- Перейдите в директорию с исходным кодом MRLG:
cd /path/to/mrlg/source
-
Примените патч, ограничивающий длину принимаемых аргументов в функции обработки параметров (используйте функции
strncpyвместоstrcpyили добавьте проверкуstrlenперед копированием в буфер). -
Выполните пересборку проекта:
make clean && make
- Замените старый CGI-бинарный файл в директории веб-сервера на новый:
cp mrlg.cgi /usr/lib/cgi-bin/mrlg.cgi
- Установите корректные права доступа:
chmod 755 /usr/lib/cgi-bin/mrlg.cgi
Временные меры
Если немедленное обновление или правка кода невозможны, необходимо минимизировать риск эксплуатации следующими методами:
-
Настройка Web Application Firewall (WAF): Создайте правило, ограничивающее длину GET/POST параметров для скрипта
mrlg.cgi(например, не более 64 символов для параметра router). -
Ограничение доступа на уровне веб-сервера (Apache/Nginx): Разрешите доступ к Looking Glass только с доверенных IP-адресов администраторов. Пример для Apache (.htaccess):
<Files "mrlg.cgi">
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24
</Files>
- Использование защитных механизмов ОС: Убедитесь, что в системе включены механизмы ASLR (Address Space Layout Randomization) и DEP/NX, чтобы затруднить эксплуатацию переполнения буфера.
sysctl -w kernel.randomize_va_space=2
- Запуск в изолированной среде: Разместите MRLG в изолированном контейнере или chroot-окружении с минимальными привилегиями, чтобы ограничить возможности атакующего в случае успешного взлома.