Summary
A heap-based buffer overflow caused by libcurl and wrong whitespace character interpretationin Javascript, both used in CodeMeter Runtime affecting multiple products by PHOENIX CONTACT.
Impact
CVE-2023-38545
In a worst-case scenario and when using a SOCKS5 proxy, a successful exploitation of the vulnerability can lead to arbitrary code execution using the privileges of the user running the affected software.
CVE-2023-24540
WIBU Systems states that WIBU Codemeter is not affected by this vulnerability.
Affected Product(s)
Model no. | Product name | Affected versions |
---|---|---|
1086889 | E-Mobility Charging Suite <=1.7.0 | E-Mobility Charging Suite <=1.7.0 |
2702889 | FL Network Manager <=7.0 | FL Network Manager <=7.0 |
1083065 | IOL Conf <=1.7.0 | IOL Conf <=1.7.0 |
1636198 | MTP DESIGNER <=1.2.0. BETA | MTP DESIGNER <=1.2.0. BETA |
1636200 | MTP DESIGNER TRIAL <=1.2.0. BETA | MTP DESIGNER TRIAL <=1.2.0. BETA |
PHOENIX CONTACT Activation Wizard <=1.6 | PHOENIX CONTACT Activation Wizard <=1.6 | |
1373917 | PHOENIX CONTACT Activation Wizard in MORYX Software Platform <=1.6 | PHOENIX CONTACT Activation Wizard in MORYX Software Platform <=1.6 |
1046008 | PLCnext Engineer <=2023.9 | PLCnext Engineer <=2023.9 |
1165889 | PLCnext Engineer EDU LIC <=2023.9 | PLCnext Engineer EDU LIC <=2023.9 |
Vulnerabilities
Expand / Collapse allNot all valid JavaScript whitespace characters are considered to be whitespace. Templates containing whitespace characters outside of the character set "\t\n\f\r\u0020\u2028\u2029" in JavaScript contexts that also contain actions may not be properly sanitized during execution.
This flaw makes curl overflow a heap based buffer in the SOCKS5 proxy
handshake.
When curl is asked to pass along the host name to the SOCKS5 proxy to allow
that to resolve the address instead of it getting done by curl itself, the
maximum length that host name can be is 255 bytes.
If the host name is detected to be longer, curl switches to local name
resolving and instead passes on the resolved address only. Due to this bug,
the local variable that means "let the host resolve the name" could get the
wrong value during a slow SOCKS5 handshake, and contrary to the intention,
copy the too long host name to the target buffer instead of copying just the
resolved address there.
The target buffer being a heap based buffer, and the host name coming from the
URL that curl has been told to operate with.
Mitigation
Disable using a SOCKS5 proxy:
The proxy environment variables HTTP_PROXY, HTTPS_PROXY and ALL_PROXYmust not be set to socks5h://
Ensure that CodeMeter is not defined to use the SOCKS5 proxy.
The variableProxyServer must not be start with socks5h://.
On Windows, the definition of that variable is in the registry (regedit) underHKLM/SOFTWARE/WIBU-SYSTEMS/CodeMeter/Server/CurrentVersion
On Mac, the definition of that variable is in the file/Library/Preferences/com.wibu.CodeMeter.Server.ini
On Linux, the definition of that variable is in the file/etc/wibu/CodeMeter/Server.ini
On Solaris, the definition of that variable is in the file/etc/opt/CodeMeter/Server.iniUse general security best practices to protect systems from local and network attacks likedescribed in the application node AH EN INDUSTRIAL SECURITY.
Remediation
PHOENIX CONTACT strongly recommends affected users to upgrade to CodeMeter V7.60d,which fixes these vulnerabilities. WIBU-SYSTEMS has already published an update forCodeMeter on their homepage. Since this current version of CodeMeter V7.60d has not yetbeen incorporated into Phoenix Contact products, we strongly recommend to download andinstall the current CodeMeter version directly from the WIBU-SYSTEMS homepage.Update Phoenix Contact Activation Wizard to version 1.7 when available. Please check the Phoenix Contact e-Shop for your related Software product regularly.
Revision History
Version | Date | Summary |
---|---|---|
1 | 21.11.2023 09:15 | Initial revision. |