CVE-2021-26829
OpenPLC ScadaBR
2025-11-28
OpenPLC ScadaBR contains a cross-site scripting vulnerability via system_settings.shtm.
Технический анализ и план устранения
Суть уязвимости
Уязвимость CVE-2021-26829 представляет собой хранимый или отраженный межсайтовый скриптинг (Cross-Site Scripting, XSS) в веб-интерфейсе OpenPLC ScadaBR, конкретно в файле system_settings.shtm.
Проблема заключается в том, что приложение некорректно фильтрует и не экранирует пользовательский ввод перед его отображением на странице настроек системы.
В результате злоумышленник может внедрить вредоносный JavaScript-код. Если аутентифицированный пользователь (например, администратор АСУ ТП) откроет скомпрометированную страницу system_settings.shtm, скрипт выполнится в его браузере. Это может привести к:
* Краже сессионных файлов (Cookies) и токенов авторизации.
* Выполнению несанкционированных действий в системе ScadaBR от имени администратора (изменение конфигурации ПЛК, остановка процессов).
* Дальнейшей компрометации внутренней сети предприятия.
Как исправить
Единственным надежным способом устранения уязвимости является обновление продукта OpenPLC и компонента ScadaBR до последней версии, в которой разработчики реализовали строгую санитизацию (очистку) вводимых данных.
- Создайте резервную копию текущей конфигурации и базы данных ScadaBR перед началом обновления.
- Перейдите в директорию установки OpenPLC (путь может отличаться в зависимости от вашей ОС).
cd /opt/OpenPLC_v3
- Загрузите последние обновления из официального репозитория проекта.
git pull
- Запустите скрипт установки для пересборки и применения патчей.
./install.sh
- Перезапустите службу OpenPLC для применения изменений.
systemctl restart openplc
Временные меры
Если оперативное обновление системы невозможно в связи с непрерывностью производственных процессов, необходимо внедрить следующие компенсирующие меры:
- Сетевая сегментация и ограничение доступа. Изолируйте интерфейс управления ScadaBR. Разрешите доступ к порту веб-интерфейса (по умолчанию 8080) только с выделенных IP-адресов рабочих станций администраторов с помощью межсетевого экрана.
iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.50 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP
- Блокировка доступа к уязвимому эндпоинту через Reverse Proxy. Если ScadaBR опубликован через Nginx или Apache, ограничьте доступ к файлу
system_settings.shtmна уровне веб-сервера. Пример конфигурации для Nginx:
location = /ScadaBR/system_settings.shtm {
allow 192.168.1.50;
deny all;
proxy_pass http://127.0.0.1:8080;
}
-
Внедрение Web Application Firewall (WAF). Настройте WAF (например, ModSecurity) для инспекции HTTP-трафика, направленного к ScadaBR. Включите базовые правила (OWASP CRS) для перехвата и блокировки типичных XSS-векторов (наличие тегов
<script>, обработчиков событийonerror=,javascript:в параметрах запроса). -
Организационные меры. Запретите администраторам использовать браузер, в котором открыта сессия ScadaBR, для серфинга в интернете или чтения электронной почты, чтобы минимизировать риск эксплуатации через социальную инженерию.