CVE-2026-14480
KrytyczneCVSS 9.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 45 - wyżej niż 45% wszystkich znanych CVE
Streszczenie
OpenPLC Runtime v3 zawiera uwierzytelnioną podatność na zapis dowolnych plików w starszym interfejsie webowym podczas przesyłania programu. Atakujący może dostarczyć dowolną nazwę pliku, która jest zapisywana w bazie danych i używana jako ścieżka docelowa bez walidacji, co pozwala na zapis plików w dowolnym miejscu zapisywalnym przez proces serwera WWW.
Ocena ryzyka
Ryzyko polega na możliwości eskalacji zapisu dowolnego pliku do wykonania dowolnego kodu natywnego poprzez umieszczenie złośliwego pliku .cpp w katalogu rdzenia OpenPLC, który jest automatycznie kompilowany do pliku wykonywalnego podczas normalnej kompilacji programu.
Rekomendacja
Należy natychmiast zaktualizować OpenPLC Runtime do najnowszej wersji, która usuwa tę podatność, oraz ograniczyć dostęp do interfejsu webowego tylko dla zaufanych użytkowników.
Inne podatności w OpenPLC Runtime
Zobacz wszystkie- CVE-2026-71268Krytyczne
OpenPLC Runtime v3 w funkcji compile_program (webserver/openplc.py) parsuje dyrektywy z przesłanych plików Structured Text (.st) i zapisuje odwołaną treść bez walidacji, czy ścieżka pliku pozostaje w katalogu ./core. Funkcja validate_file_path istnieje w kodzie, ale nie jest wywoływana z compile_program.
- CVE-2025-34226Wysokie
OpenPLC Runtime v3 zawiera błąd walidacji danych wejściowych w punkcie końcowym /upload-program-action: pole epoch_time dostarczane podczas przesyłania programu nie jest weryfikowane i może zostać spreparowane w celu spowodowania uszkodzenia bazy danych programów. Po nieudanym przesyłaniu runtime działa do momentu restartu; po restarcie runtime może nie wystartować z powodu uszkodzonych wpisów bazy danych, co prowadzi do trwałej odmowy usługi wymagającej całkowitego przywrócenia produktu. Podatność została naprawiona w commicie 095ee09.
Oryginalny opis (angielski, źródło NVD)
OpenPLC Runtime v3 contains an authenticated arbitrary file write vulnerability in the legacy web UI program‑upload workflow. The application stores an attacker‑supplied filename (prog_file) directly into the Programs.File database field and later uses this value as the destination path for an uploaded file without validating or restricting the path. Because Python os.path.join() honors attacker‑controlled absolute paths, an authenticated user can write arbitrary files anywhere writable by the OpenPLC webserver process. In the default build pipeline, all C++ source files within the OpenPLC runtime core directory are automatically compiled into the executable runtime binary. By writing a malicious .cpp file into this directory, an authenticated attacker can escalate the arbitrary file write into arbitrary native code execution when the operator triggers a normal program compilation and runtime start.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

