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.
- Определите текущую версию vBulletin. Перейдите в панель управления vBulletin (AdminCP) и проверьте версию на главной странице или в разделе "Справка" -> "О программе vBulletin".
- Обновитесь до версии 5.6.2 или выше. Это минимальная версия, содержащая необходимые исправления. Рекомендуется устанавливать последнюю стабильную версию из линейки 5.x.
- Порядок обновления:
- Сделайте полную резервную копию базы данных и файлов сайта.
- Загрузите архив с обновлением с официального сайта vBulletin.
- Отключите сайт, поместив файл
config.php.bkpв корень установки vBulletin. - Разархивируйте файлы обновления поверх существующей установки.
- Запустите скрипт обновления, перейдя по адресу
http://ваш-сайт/install/upgrade.phpи следуя инструкциям. - После завершения удалите папку
/install/и верните оригинальный файлconfig.php.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Настройка 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.
- Создайте правило для блокировки запросов к уязвимому эндпоинту. Например, в ModSecurity можно добавить правило:
-
Веб-сервер (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; }
Важно: Временные решения лишь усложняют эксплуатацию, но не устраняют корневую причину. Обновление — обязательный и приоритетный шаг.