OpenPLC Runtime bundles the snap7 library to provide an S7comm server interface
on port 102. A vulnerability in snap7's Read Variable handler allows any unauthenticated
network client to crash the snap7 server process with a single request containing
element count=0xFFFF (65535).
This has been reported upstream to the snap7 project (github.com/SCADACS/snap7).
OpenPLC will be affected until snap7 releases a patched version.
Note: this was confirmed on a test deployment running thiagoralves/OpenPLC_v3
(the archived predecessor of this repo) — since that repo is archived and can no
longer take a patch upstream, existing v3-based field deployments (a large
installed base — 1568 stars / 96 forks on the old repo) may need a migration
notice or advisory covering both codebases, since they share the vulnerable
snap7 integration.
Workaround (until patched): Firewall port 102 to trusted S7comm clients only.
In OpenPLC's settings, disabling S7comm (snap7|false in openplc.db) prevents exposure
if S7comm access is not required for the deployment.
PoC available on request (will share after coordination with snap7 maintainers).
Researcher contact: Shad Malloy, shadmalloy3@gmail.com
OpenPLC Runtime bundles the snap7 library to provide an S7comm server interface
on port 102. A vulnerability in snap7's Read Variable handler allows any unauthenticated
network client to crash the snap7 server process with a single request containing
element count=0xFFFF (65535).
This has been reported upstream to the snap7 project (github.com/SCADACS/snap7).
OpenPLC will be affected until snap7 releases a patched version.
Note: this was confirmed on a test deployment running
thiagoralves/OpenPLC_v3(the archived predecessor of this repo) — since that repo is archived and can no
longer take a patch upstream, existing v3-based field deployments (a large
installed base — 1568 stars / 96 forks on the old repo) may need a migration
notice or advisory covering both codebases, since they share the vulnerable
snap7 integration.
Workaround (until patched): Firewall port 102 to trusted S7comm clients only.
In OpenPLC's settings, disabling S7comm (
snap7|falsein openplc.db) prevents exposureif S7comm access is not required for the deployment.
PoC available on request (will share after coordination with snap7 maintainers).
Researcher contact: Shad Malloy, shadmalloy3@gmail.com