Środowisko uruchomieniowe OpenPLC w wersji 3 zawiera lukę w zabezpieczeniach umożliwiającą uwierzytelniony zapis dowolnego pliku w starszym przepływie pracy przesyłania programów w interfejsie internetowym. Aplikacja zapisuje nazwę pliku dostarczoną przez atakującego (prog_file) bezpośrednio w polu bazy danych Programs.File, a następnie używa tej wartości jako ścieżki docelowej dla przesyłanego pliku bez sprawdzania poprawności ani ograniczania ścieżki. Ponieważ funkcja os.path.join() języka Python respektuje ścieżki bezwzględne kontrolowane przez atakującego, uwierzytelniony użytkownik może zapisać dowolne pliki w dowolnym miejscu, w którym proces serwera WWW OpenPLC może je zapisać. W domyślnym procesie kompilacji wszystkie pliki źródłowe C++ w katalogu głównym środowiska uruchomieniowego OpenPLC są automatycznie kompilowane do wykonywalnego pliku binarnego. Zapisując złośliwy plik .cpp w tym katalogu, uwierzytelniony atakujący może eskalować zapis dowolnego pliku do wykonania dowolnego kodu natywnego, gdy operator wyzwoli normalną kompilację programu i uruchomienie środowiska uruchomieniowego.