CVE-2023-34429
Executive Summary
CVE-2023-34429 is a denial-of-service (DoS) vulnerability in Weintek Weincloud v0.13.6, a cloud-based remote access and HMI management platform. An unauthenticated remote attacker can forge a JSON Web Token (JWT) to trigger improper handling of structural elements, causing a denial-of-service condition that can disrupt Weincloud services for legitimate users. The vendor has released v0.13.8 addressing the issue; the patch is claimed by the CNA but not independently confirmed at the time of writing.
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
The vulnerability resides in the JWT authentication mechanism of Weincloud v0.13.6, a cloud platform used for remote HMI (Human-Machine Interface) device management, data monitoring, and EasyAccess 2.0/Dashboard services integration. The CNA title — "Improper Handling of Structural Elements" — classifies the flaw as a failure to correctly process specially crafted token structures.
The attack vector is the JWT itself. JWTs comprise three Base64URL-encoded segments (header, payload, signature) separated by periods. The "structural elements" referenced in the CNA title likely correspond to malformed header/payload fields, such as:
- A forged
alg(algorithm) header with an unexpected value (e.g.,none, or a mismatched HMAC vs. RSA asymmetric algorithm confusion). - Type confusion between JWE (encrypted) and JWS (signed) token structures.
- Excessively large, deeply nested, or malformed claims in the payload segment.
- Duplicate or conflicting structural fields (e.g., multiple
kidentries, malformed Base64URL encoding, unexpected null bytes).
When Weincloud's token parser encounters a structurally invalid or unexpected JWT (per the forged token), the parser enters an error state that is not handled gracefully, resulting in a crash of the authentication service or resource exhaustion. Because the token is processed without valid credentials, the attack is unauthenticated — an attacker needs no account on Weincloud or access to any HMI device.
The NVD description provides no function names, class names, or specific endpoint paths. The technical accuracy of the report is bounded by the description: the attack requires "sending a forged JWT token" to induce a "denial-of-service condition." The exact failure mode (segmentation fault, unbounded recursion, memory exhaustion, or an infinite loop) is not disclosed. The precision of the description is insufficient to assert a specific parser vulnerability library or code path.
Patched version v0.13.8 addresses the issue via an API update. Given the version increment is minor (0.13.6 → 0.13.8), the fix likely involves a targeted change to the JWT validation logic — e.g., strict schema validation, explicit algorithm allow-listing, or proper exception handling around the token parser.
Patch Confidence Assessment (2/4): The vendor/CNA claims the fix is fully applied in v0.13.8 and that it "does not require any action for users" — implying a server-side update. This claim is not independently confirmed by third-party security researchers or testing. No CISA KEV listing, no public exploit, and no PoC code is available for verification.
Exploitation Scenarios
The following attack chain is inferred from the vulnerability class (improper JWT structural handling) and the NVD description. No public PoC exists; the specific payload format is inferred, not confirmed.
Step 1 — Reconnaissance / Target Identification: The attacker identifies Weincloud endpoints via Shodan or by harvesting URLs from Weintek HMI documentation, mobile app configurations, or EasyAccess 2.0 client telemetry. The attack surface is the Weincloud authentication API (public-facing). No credentials or prior access are required — the attacker targets any reachable Weincloud instance.
Step 2 — Flaw Trigger (Forged JWT Construction): The attacker fabricates a JWT without possessing a valid signing key from Weintek's Key Management System. Techniques for forging include:
- Setting the
algheader tonone/None/NONE, which, if the parser accepts algorithm-less tokens, bypasses signature verification entirely. - Supplying a valid-looking token with a structurally corrupted payload segment — e.g., repeated JSON keys, duplicated header elements, or invalid UTF-8/Base64URL encoding that the parser fails to reject early.
- Using an asymmetric algorithm confusion payload (e.g.,
RS256token signed with a public key that the server trusts as an HMAC secret), producing a token that fails signature verification but triggers a parse-path anomaly before the verification step.
Step 3 — Payload Delivery / Execution: The attacker submits the forged JWT in the Authorization header (Bearer format) of an HTTP request to the Weincloud authentication endpoint. The server's JWT parser receives the malformed structure. The "improper handling" means the server does not validate structural invariants (e.g., algorithm whitelisting, claim type checks) before passing the token to core processing logic. This causes the parser or the authentication handler to crash, hang, or exhaust memory/CPU.
Step 4 — Post-Exploitation Impact: A single forged request (or a small number of repeated requests) renders the Weincloud authentication service unavailable. Legitimate users cannot log in, HMI devices fail to establish remote sessions via EasyAccess 2.0, and device monitoring dashboards go dark. Since the service is cloud-hosted, the DoS has broad geographic blast radius affecting any organization relying on Weincloud for remote HMI management.
Alternative Scenario (Resource Exhaustion): If the crash is localized (e.g., only the worker thread handling the request dies) rather than the entire service, the attacker repeats the request in parallel to exhaust connection pools, CPU cycles, or memory. This is consistent with CVSS 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) — high availability impact, no confidentiality or integrity impact.
Impact Assessment
Business Impact: Weincloud is a cloud infrastructure dependency for Weintek HMI deployments. A DoS on this service halts remote access to industrial HMIs, blocking:
- Remote diagnostics and troubleshooting of machinery (or directly to production line downtime).
- Firmware/recipe/manual pushing to field devices.
- Real-time HMI screen monitoring for supervisory staff.
- Alarming/event data collection.
The CVSS score of 7.5 (High) reflects an unauthenticated, network-reachable attack with low complexity and no user interaction. The impact is purely on availability (A:H), with no confidentiality or integrity loss (C:N/I:N). The absence of authentication requirements means an attacker can hit the service with arbitrary forged tokens from any internet-connected host.
Affected Systems: All Weintek HMIs and HMI-based control systems configured to use Weincloud online services (EasyAccess 2.0 and Dashboard). Organizations using on-premises Weintek device management without cloud integration are unaffected.
Blast Radius: The blast radius extends across the entire Weincloud tenant/user base — the DoS degrades service for all customers, not just the attacker's target. This is a "shared-infrastructure" DoS: one attacker can degrade the platform for every organization using Weincloud. The industrial context elevates severity: OT environments often lack rapid manual fallback control mechanisms when remote access is cut.
Detection Guidance
The following detections are design patterns for the attack class (forged JWT / abnormal token submissions).
Sigma Rule
title: Forged or Malformed JWT Token Sent to Authentication Endpoint
id: 1f5d3b2e-8a2c-4e4d-9f31-6e5b8a1093aa
status: experimental
description: Detects HTTP requests carrying suspicious JWT tokens (alg=none, malformed structure, or anomalous header) destined for authentication services, potentially indicating CVE-2023-34429 exploitation attempts.
logsource:
category: webserver
product: generic
detection:
selection:
cs-method: POST
cs-uri-stem:
- '*token*'
- '*auth*'
- '*login*'
- '*weincloud*'
filter_token_structure:
cs-user-agent:
- 'Mozilla/5.0*'
condition: selection and not filter_token_structure
fields:
- c-ip
- cs-uri-stem
- cs-user-agent
- cs-referer
falsepositives:
- Legitimate API clients with non-browser user agents (rare)
level: medium
YARA Rule
rule CVE_2023_34429_Forged_JWT
{
meta:
author = "valtersit.com - Threat Intel"
description = "Detects forged JWT payloads with structural anomalies (alg=none, malformed Base64, unexpected header claims)"
cve = "CVE-2023-34429"
date = "2025-01-25"
strings:
$alg_none = /\"alg\"\s*:\s*[\"\']none[\"\']/ nocase
$alg_none_upper = /\"alg\"\s*:\s*[\"\']None[\"\']/
$alg_none_caps = /\"alg\"\s*:\s*[\"\']NONE[\"\']/
$multiple_kid = /(\"kid\"[^}]*){3,}/
$jwt_segments = /[a-zA-Z0-9_-]{30,}\.[a-zA-Z0-9_-]{30,}\.[a-zA-Z0-9_-]{30,}/
$bad_base64 = /[^a-zA-Z0-9_\-\+=\/]/
condition:
uint16(0) == 0x0A0D or any of ($alg_none*) or $multiple_kid or ($jwt_segments and #bad_base64 > 10)
}
Suricata IDS Rule
alert http any any -> $EXTERNAL_NET any (msg:"CVE-2023-34429 - Weincloud Forged JWT DoS Attempt"; flow:to_server,established; http.method; content:"POST"; http.uri; content:"token"; nocase; http.header; content:"Authorization"; content:"Bearer "; http.header_names; content:"|0d 0a|Authorization|3a|"; pcre:/alg"\s*:\s*"(none|None|NONE)"/Ui; sid: 2023034429; rev: 1; metadata: created_at 2025-01-25, cve CVE-2023-34429;)
Elastic Detection
sequence by source.ip
[ network where event.action == "connection_attempt" and destination.port == 443 ]
[ http where http.request.method == "POST" and
(http.request.body.content contains "alg" and
(http.request.body.content contains "\"none\"" or
http.request.body.content contains "\"None\"" or
http.request.body.content contains "\"NONE\"")) and
wildcard(http.request.headers.authorization, "Bearer *")
] with maxspan=5s
Splunk SPL Query
index=proxy OR index=web sourcetype="access_combined"
| search method=POST
| regex uri="token|auth|login|weincloud"
| spath input=auth_header
| rename auth_header as auth_value
| regex auth_value="alg\s*:\s*\"?(none|None|NONE)\"?"
| table _time src_ip uri status auth_value user_agent
| stats count by src_ip
| where count > 5
Wazuh OSSEC Rule
<group name="weincloud,jwt,dos,">
<rule id="100344" level="10">
<decoded_as>json</decoded_as>
<field name="url">\.(token|auth|login)</field>
<match>alg\\": \\"(none|None|NONE)</match>
<description>CVE-2023-34429: Forged JWT token (alg=none) detected in Weincloud authentication attempt</description>
<mitre>
<id>T1499</id>
</mitre>
<group>attack.dos,</group>
</rule>
<rule id="100345" level="8">
<decoded_as>json</decoded_as>
<field name="url">\.(token|auth|login)</field>
<regex>^([a-zA-Z0-9_-]{20,}\.){2}[a-zA-Z0-9_-]{20,}$</regex>
<description>Multiple requests with JWT format tokens to Weincloud endpoints (possible DoS pattern)</description>
<group>attack.dos,</group>
<if_sid>100344</if_sid>
<options>no_full_log</options>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 2/4 (CLAIMED) — the vendor/CNA states v0.13.8 fixes the issue but provides no independent technical confirmation.
1) Immediate Mitigations (before/without patching):
- Network Layer: Apply egress/ingress firewalling to restrict access to Weincloud API endpoints. Allow only known HMI device IPs and corporate proxy egress IPs to reach the Weincloud service. This reduces the set of potential attackers.
- WAF Rules: Deploy a Web Application Firewall rule to block HTTP requests whose Authorization header contains a JWT with
alg: none(case-insensitive) or structurally anomalous token patterns (e.g., tokens with more than 3 segments, or with unsupported algorithm fields). - Rate Limiting: Enforce strict per-IP rate limiting on Weincloud authentication endpoints at the reverse proxy/load balancer. Even if a forged token bypasses initial filtering, rate limiting prevents connection/resource exhaustion from repeated attacks.
- Operational Kontinuität: Implement manual fallback procedures for HMI remote access — e.g., direct VPN into OT networks as a backup path — to retain operational capability if Weincloud goes down.
2) Patch/Upgrade Steps:
- Verify and confirm deployment of Weincloud v0.13.8. Contact Weintek support for the upgrade window and confirm the version is live on the account API endpoint (e.g., testing that the
/api/versionendpoint reports v0.13.8 or higher). - Since the vendor states the fix "does not require any action for users," validate that HMI devices and EasyAccess client software continue to function after the server-side update. Confirm that existing HMI firmware does not need changes.
- Independently test the patched version by submitting crafted JWT payloads (using
jwt_toolor custom Python scripts) to validate that the parser rejects malformed structures gracefully. If testing is not possible on production, request access to the Weintek staging environment. - Note: Do not disable or bypass any existing authentication layers thinking the cloud patch is sufficient — defense in depth applies.
3) Long-Term Hardening:
- HMI Offline Mode: For HMIs that do not require cloud connectivity, configure EasyAccess 2.0 and Dashboard services to offline mode using system reserved addresses, as recommended by the vendor. This reduces the cloud attack surface entirely.
- Credential Hygiene: Enforce regular password changes for Weincloud accounts — this minimizes the impact of any credential exposure that could be combined with other attack chains (not relevant to this specific DoS, but good practice).
- Network Segmentation: Ensure HMI/OT network segments have minimal internet exposure. Use proximity access (local Ethernet) as the preferred connection method; treat cloud access as convenience, not the primary channel for critical operations.
- Monitoring: Implement the detection rules above (Sigma, Splunk, Wazuh) to log and alert on anomalous token patterns. Retain authentication logs for at least 90 days for forensic purposes.
- Vendor Relationship Management: Request Weintek to publish a security advisory with the specific parser change and affected endpoint list. Ask for a root-cause statement, a CWE assignment, and an updated CVSS vector string. The CNA's "2/4 confidence" rating indicates the lack of public technical detail; push for transparency.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2023-34429 — Official NVD record, including description and CVSS 7.5 scoring. (Primary reference.)
- Weintek Security Advisory (CNA): Refer to vendor advisory issued by the CNA confirming the fix in v0.13.8 and recommended mitigations (trusted-computer usage, offline mode, password changes, network exposure minimization).
- Weintek Product Documentation (EasyAccess 2.0): https://www.weintek.com/globalw/ — Documentation on EasyAccess 2.0 cloud configuration and system reserved addresses for offline services.
- CISA KEV Database: Not applicable (NO listing) — confirms this vulnerability is not yet observed in active exploitation campaigns per CISA's Known Exploited Vulnerabilities catalog.
- MITRE ATT&CK Technique Reference: https://attack.mitre.org/techniques/T1499/ — Endpoint Denial of Service, matching the availability impact class of this CVE.
Threat Actor Campaigns / Exploit-in-the-Wild Evidence: No public reports of active exploitation, exploit code, or threat actor campaigns targeting CVE-2023-34429 exist at the time of writing. EPSS score of 0.00663 (~48.4th percentile) indicates that while this CVE has a relatively higher probability of being exploited compared to the general CVE population, the absolute probability remains low and no in-the-wild exploitation has been documented. The absence of a PoC, Nuclei template, or exploit code further suggests this vulnerability is not yet targeted by commodity cybercriminals.
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.