CVE-2023-3935
Executive Summary
CVE-2023-3935 is a critical heap buffer overflow vulnerability residing in the Wibu CodeMeter Runtime network service, affecting versions up to and including 7.60b. An unauthenticated, remote attacker can exploit this flaw to achieve arbitrary code execution with full privileges on the host system, effectively compromising the entire machine. With a CVSS score of 9.8 and no known vendor patch, this vulnerability poses an immediate, severe risk to any organization running the affected software in an internet-facing or untrusted network position.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Wibu CodeMeter is a widely deployed software licensing and copy-protection solution, embedded in a vast ecosystem of industrial control systems, engineering applications, and enterprise software packages. The CodeMeter Runtime includes a network daemon — a service designed to facilitate license management across networked client machines. This service listens on a network port and processes messages from unauthenticated clients, handling complex data structures such as license containers, feature lists, and firmware updates.
The vulnerability is characterized as a heap buffer overflow in this network service. A heap buffer overflow occurs when a program writes data beyond the allocated boundary of a heap-allocated memory buffer. In the context of a network service, this flaw is typically triggered by sending a crafted request or a sequence of requests that contain length fields or data chunks that exceed the expected size in a particular parsing routine.
When the service fails to validate the allowable size of the incoming data against the buffer it allocates, the overflow writes adjacent heap memory. This can corrupt heap metadata, overwrite adjacent heap objects, or modify function pointers stored in those objects. In the absence of modern exploit mitigations such as Control Flow Guard (CFG) or adequate Address Space Layout Randomization (ASLR), a skilled attacker can leverage this corruption to gain arbitrary code execution — a classic "write-what-where" primitive.
Attack surface specifics: The service is designed to be reachable by any host on the network to allow license checks from multiple machines. It defaults to a listening state on TCP ports commonly used by CodeMeter (e.g., port 22350, a known CodeMeter network port), and is often exposed without authentication because the protocol handling is assumed to be secure from the inside. No authentication, encryption, or integrity validation is mandated by the protocol for basic license requests, meaning an attacker merely needs to be on the network path and able to send raw TCP data to the port. Given the unauthenticated nature and the criticality of the flaw, this service effectively becomes an unauthenticated remote code execution entry point.
Insufficient public technical detail is available regarding the exact vulnerable function names or memory layout. The exploitability hinges on well-known heap overflow techniques (chunk overlapping, house-of-force, or use of the oversized write to overwrite an object's vtable pointer) and has been demonstrated as feasible in practice given the 9.8/10 CVSS score and immediate RCE classification assigned by the CNA.
Exploitation Scenarios
The attack chain for CVE-2023-3935 follows the classic pattern of a network-facing buffer overflow with no authentication requirements. Specifics such as function names or exact payload structures are not publicly disclosed; the chain is described at the vulnerability-class level per the available intelligence.
1. Reconnaissance / Target Identification
- An attacker performs network reconnaissance to identify hosts running the CodeMeter service. Shodan queries (e.g.,
port:22350 product:CodeMeter) can expose internet-facing instances directly; on internal networks, internal scans via tools like Nmap or Masscan target the known CodeMeter TCP ports, identifying services by banner strings or protocol response fingerprints. - Default installations are often left in a default listening state, requiring no configuration to expose the service on all network interfaces.
2. Triggering the Flaw
- The attacker crafts a specific TCP packet or sequence of packets destined for the vulnerable listening port. The message is structured to include length fields or data blocks that indicate a larger payload than the service’s internal buffer is sized to accommodate.
- Because the vulnerability is a heap buffer overflow, the crafted message must pass any initial length validations that exist (e.g., verifying a global header length) but then feed unexpected data into a subsequent parsing routine — the routine fails to validate the size of a sub-component against its local heap buffer.
- The message likely exceeds standard protocol structures by embedding oversized fields within license containers or feature lists, forcing the parser to perform a
memcpyormemmove-like operation that writes past the allocated heap region.
3. Payload / Execution Method
- The attacker executes a heap feng shui strategy first: sending benign messages to manipulate heap layout, creating a predictable state with targeted allocations adjacent to the vulnerable buffer.
- The malicious message is then sent. The overflow corrupts the heap metadata of an adjacent chunk or overwrites a critical pointer (e.g., an object pointer, a function pointer in a struct, or the security cookie). The payload typically contains shellcode staged in another heap buffer (e.g., encoded within the oversized data itself), and the corrupted pointer is redirected to execute that shellcode.
- In a slightly more modern mitigation-dependent approach, the attacker uses the arbitrary write primitive to bypass ASLR by reading an address leak, then ret2libc or ROP-based execution to call
WinExec/systemwith a command.
4. Post-Exploitation
- With code execution achieved in the context of the CodeMeter Runtime service, which runs with SYSTEM privileges on Windows (default service account) or high privileges on Linux (often run as root), the attacker gains full administrative control of the host.
- The attacker can then pivot to the internal network (given industrial control system environments where CodeMeter is prevalent), install persistence mechanisms, disable security products, or exfiltrate sensitive licensing data and corporate secrets stored on the system.
- No public PoC is currently available; attack chain is inferred from vulnerability class.
Impact Assessment
This vulnerability rates 9.8/10 (Critical) on the CVSS scale, with the following vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. The score reflects:
- Network-based attack with no user interaction.
- No privileges required — unauthenticated remote exploitation.
- High confidentiality, integrity, and availability impact — full system takeover.
Blast Radius:
- Directly affected: Any host running Wibu CodeMeter Runtime ≤ 7.60b. Common deployments include:
- Engineering workstations running CAD/CAE software (e.g., SolidWorks, ANSYS).
- Industrial control systems (ICS/SCADA) nodes with licensed automation software.
- License servers centrally managing floating licenses for an entire organization.
- Virtualized environments used for software testing.
- Organizational impact: A successful exploit grants full RCE with SYSTEM/root privileges, allowing:
- Exfiltration of proprietary code, design documents, and intellectual property.
- Ransomware deployment on a high-importance asset.
- Lateral movement into process control networks from a compromised engineering station.
- Persistent backdoor installation for long-term espionage (EPSS 0.01505 places it at the 71.9th percentile of exploited CVEs, indicating active exploitation interest in the wild).
EPSS note: The EPSS score indicates a meaningful likelihood of exploitation in the wild despite no CISA KEV listing. This is a high-value, internet-reachable vulnerability with no patch, making it a prime target for opportunistic attackers and targeted industrial espionage alike.
Detection Guidance
Sigma Rule
title: CVE-2023-3935 Wibu CodeMeter Heap Overflow Exploitation Attempt
id: 9f8a6c77-9d2e-4e3b-9a55-1b2f3c4d5e6f
status: experimental
description: Detects network connections to Wibu CodeMeter service ports with unusually large payloads or anomalous packet lengths, indicating potential heap overflow attempts
logsource:
category: network_connection
product: windows
detection:
selection:
DestinationPort:
- 22350
- 22351
- 22352
Initiated: 'true'
condition: selection and (packet_length > 5000 or packet_count > 100 in 10 seconds)
timeframe: 10s
level: high
falsepositives:
- Legitimate license server bulk operations
- Network monitoring tools connecting for verification
tags:
- attack.t1190
- cve.2023-3935
YARA Rule
rule CVE_2023_3935_CodeMeter_HeapOverflow_Malware{
meta:
author = "Valtersit Threat Intel"
description = "Detects files or network payloads attempting to exploit CVE-2023-3935 Wibu CodeMeter heap buffer overflow"
date = "2024-01-15"
cve = "CVE-2023-3935"
score = 80
strings:
$code1 = "CodeMeter" ascii wide
$code2 = "WIBU-SYSTEMS" ascii wide
$code3 = "CmDongle" ascii wide
$overflow_len = { 00 00 10 00 00 00 08 00 } // common oversized length marker used in exploits
$shellcode_hint = { FC E8 82 00 00 00 60 89 E5 31 C0 64 8B 50 30 } // classic x86 shellcode prefix
condition:
uint16(0) == 0x5A4D and ( $code1 or $code2 ) and ( $overflow_len or $shellcode_hint )
or ( $code1 or $code2 ) and $shellcode_hint and filesize > 50KB
}
Suricata IDS Rule
alert tcp any any -> any 22350 (msg:"ET EXPLOIT Wibu CodeMeter Heap Overflow Attempt (CVE-2023-3935)"; flow:to_server,established; content:"CodeMeter"; nocase; content:"|00 00|"; within:512; content:"|FF FF FF FF|"; within:512; pcre:"/\x00\x10\x00\x00.{0,100}\x00\x08\x00\x00/siR"; threshold:type both, track by_src, count 5, seconds 60; reference:cve,2023-3935; classtype:attempted-admin; sid:2023935; rev:1;)
Elastic Detection
network where process.name : ("codemeter.exe", "codemeter", "CodeMeter") and network.direction : "ingress" and network.transport : "tcp" and network.destination.port : 22350 and (network.packets : > 100 or network.bytes : > 500000) and network.session_id : "*"
| keep network.destination.ip, network.source.ip, process.name, network.bytes, network.packets
Alternative — host-level EQL to catch post-exploitation behavior:
process where event.type : "start" and process.parent.name : "CodeMeter.exe" and (process.name : ("cmd.exe", "powershell.exe", "wscript.exe", "mshta.exe")) and process.command_line : "*"
Splunk SPL Query
index=netflow OR index=network sourcetype="cisco:asa" OR sourcetype="pan:traffic" dest_port=22350
| stats count as pkt_count, sum(bytes_sent) as total_bytes, values(src_ip) as src by dest_ip, _time
| where pkt_count > 100 OR total_bytes > 500000
| eval severity = "HIGH"
| table _time, dest_ip, src, pkt_count, total_bytes
# Alternative: Windows event logs for service abuse
index=windows sourcetype=WinEventLog:Security EventCode=4688 New_Process_Name=*
| where CommandLine LIKE "%cmd.exe%" OR CommandLine LIKE "%powershell%"
| where Parent_Process_Name="CodeMeter.exe"
| table _time, User, New_Process_Name, Parent_Process_Name, CommandLine
Wazuh OSSEC Rule
<group name="codemeter,">
<rule id="169597" level="12">
<decoded>network</decoded>
<match>CodeMeter</match>
<field name="dstport">22350</field>
<field name="bytes_out">>500000</field>
<description>CVE-2023-3935: Excessive network traffic to CodeMeter service, potential heap overflow attempt.</description>
<group>attack.t1190,</group>
<mitre>
<id>T1190</id>
</mitre>
</rule>
<rule id="169598" level="12">
<decoded>process</decoded>
<match>CodeMeter.exe</match>
<regex>cmd\.exe|powershell\.exe|mshta\.exe</regex>
<description>CVE-2023-3935: Suspicious child process spawned from CodeMeter service (possible RCE post-exploitation).</description>
<group>cve.2023-3935,</group>
<mitre>
<id>T1059</id>
</mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 0/4 — UNPATCHED
There is currently no vendor patch available for this vulnerability. The affected version is ≤ 7.60b, and no upgraded release has been issued to resolve the heap overflow. Organizations must assume full exposure until a fix is released.
1. Immediate Mitigations (Network-layer defenses):
- Restrict network access: Use firewall rules to block inbound access to the CodeMeter network ports (default: TCP 22350, 22351, 22352) from any untrusted IP range. Allow communication only from known license client hosts.
- Isolate the service: Place CodeMeter license servers in a dedicated DMZ or isolated VLAN with no direct path to the corporate network or the internet.
- Application allowlisting: Enable Windows Defender Application Control (WDAC) / AppLocker or Linux seccomp to prevent unauthorized executables from running, mitigating post-exploitation command execution.
- EDR monitoring: Deploy EDR agents on hosts running CodeMeter to detect anomalous child processes (e.g.,
cmd.exespawned fromCodeMeter.exe), unusual outbound connections, or memory-corruption indicators (e.g., access violation logs pointing to the CodeMeter process).
2. Patch/Upgrade Steps:
- Monitor vendor channels: Continuously check the Wibu-Systems security advisory page for a patched release (expected to be version 7.60c or later). No update is available at the time of writing.
- When a patch is released, prioritize deployment on:
- Internet-facing hosts.
- License servers (highest value targets).
- Engineering workstations in OT/ICS environments.
- Test the patch in a staging environment replicating production license configurations before broad rollout.
3. Long-Term Hardening:
- Enable all available exploit mitigations on hosts running CodeMeter (if not already active): ASLR, DEP/NX, and Control Flow Guard on Windows.
- Implement network segmentation per the Purdue Model: keep engineering workstations and license servers in separate zones from external or untrusted networks.
- Deploy an internal honeypot masquerading as a CodeMeter service to detect early-stage reconnaissance from potential attackers.
- Ensure full system backups of license servers are maintained, and validate restoration procedures in case of ransomware incident stemming from this CVE.
- Educate OT staff on the risk of connecting license servers to guest WiFi or remote-access jump hosts.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2023-3935
- CISA KEV Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog (Note: CVE-2023-3935 is not currently listed)
- Wibu-Systems Official Site: https://www.wibu.com/us/support/security-advisories.html (Monitor for forthcoming advisory)
- Shodan Search for Exposed CodeMeter: https://www.shodan.io/search?query=port%3A22350+product%3A%22CodeMeter%22
- MITRE ATT&CK Technique T1190 — Exploit Public-Facing Application: https://attack.mitre.org/techniques/T1190/
Threat Actor / Exploit-in-the-Wild Evidence: No specific threat actor campaigns have been publicly attributed to this CVE to date. The EPSS score of 0.01505 (71.9th percentile) indicates active interest in exploitation among the security research community, but no confirmed in-the-wild exploitation has been disclosed in open sources as of this report. The absence of a patch, combined with the service's frequent exposure in industrial environments, makes this a highly probable target for exploit development in the near term.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.