CVE-2020-17496

vBulletin vBulletin

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

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

2021-11-03

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

The PHP module within vBulletin contains an unspecified vulnerability that allows for remote code execution via crafted subWidgets data in an ajax/render/widget_tabbedcontainer_tab_panel request. This CVE ID resolves an incomplete patch for CVE-2019-16759.

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

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

Уязвимость в модуле PHP системы vBulletin позволяет удаленному злоумышленнику выполнить произвольный код на сервере без аутентификации. Для этого отправляется специально сформированный HTTP-запрос к эндпоинту /ajax/render/widget_tabbedcontainer_tab_panel, содержащий вредоносные данные в параметре subWidgets.

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

Установите последнюю безопасную версию vBulletin, содержащую полный патч для CVE-2019-16759 и CVE-2020-17496.

  1. Определите текущую версию vBulletin. Перейдите в панель управления vBulletin (AdminCP) и проверьте версию на главной странице или в разделе "Справка" -> "О программе vBulletin".
  2. Обновитесь до версии 5.6.2 или выше. Это минимальная версия, содержащая необходимые исправления. Рекомендуется устанавливать последнюю стабильную версию из линейки 5.x.
  3. Порядок обновления:
    • Сделайте полную резервную копию базы данных и файлов сайта.
    • Загрузите архив с обновлением с официального сайта vBulletin.
    • Отключите сайт, поместив файл config.php.bkp в корень установки vBulletin.
    • Разархивируйте файлы обновления поверх существующей установки.
    • Запустите скрипт обновления, перейдя по адресу http://ваш-сайт/install/upgrade.php и следуя инструкциям.
    • После завершения удалите папку /install/ и верните оригинальный файл config.php.

Временное решение

Если немедленное обновление невозможно, примените следующие меры:

  1. Настройка WAF (Web Application Firewall):

    • Создайте правило для блокировки запросов к уязвимому эндпоинту. Например, в ModSecurity можно добавить правило: apache SecRule REQUEST_URI "@contains /ajax/render/widget_tabbedcontainer_tab_panel" \ "id:1000,phase:1,deny,status:403,msg:'Block CVE-2020-17496 exploitation attempt'"
    • В облачных WAF (например, Cloudflare) создайте правило Firewall, блокирующее путь, содержащий /ajax/render/widget_tabbedcontainer_tab_panel.
  2. Веб-сервер (Apache/Nginx):

    • Добавьте правило на уровне веб-сервера для возврата ошибки 403 (Forbidden) при обращении к опасному пути.
    • Для Apache.htaccess или конфиге виртуального хоста): apache <LocationMatch "/ajax/render/widget_tabbedcontainer_tab_panel"> Require all denied </LocationMatch>
    • Для Nginx (в конфиге server): nginx location ~* ^/ajax/render/widget_tabbedcontainer_tab_panel { return 403; }

Важно: Временные решения лишь усложняют эксплуатацию, но не устраняют корневую причину. Обновление — обязательный и приоритетный шаг.