CVE-2023-6245
The Candid library causes a Denial of Service while parsing a specially crafted payload with 'empty' data type. For example, if the payload is `record { * ; empty }` and the canister interface expects `record { * }` then the Rust candid decoder treats empty as an extra field required by the type. The problem with the type empty is that the candid Rust library wrongly categorizes empty as a recoverable error when skipping the field and thus causing an infinite decoding loop. Canisters using affected versions of candid are exposed to denial of service by causing the decoding to run indefinitely until the canister traps due to reaching maximum instruction limit per execution round. Repeated exposure to the payload will result in degraded performance of the canister. Note: Canisters written in Motoko are unaffected.
Scoring
- Severity
- HIGH
- CVSS base score
- 7.5
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- EPSS probability
- 0.13%
- CWE
- CWE-835, CWE-1288, CWE-168, CWE-20
- Published
- 2023-12-08
- Last modified
- 2026-03-13
Affected products
- Internet Computer Candid
Weakness type
Related vulnerabilities
- CVE-2026-88002 — Open WebUI: Any authenticated user can hang the server via a cyclic chat message history
- CVE-2026-88000 — Open WebUI: Any authenticated user can hang the server via message deletion in a cyclic chat tree
- CVE-2026-87013 — Open WebUI: Any authenticated user can start a non-terminating request via a folder parent cycle
- CVE-2026-6554 — infinte loop in libpcap before 1.10.7
- CVE-2026-85730 — smol-toml: Denial of Service via malformed TOML documents
- CVE-2026-78543 — IBM App Connect Enterprise and IBM Integration Bus for z/OS Adapter nodes are vulnerable to multiple CVEs
- CVE-2026-84309 — pypdf: Possible infinite loop for TreeObject.insert_child
- CVE-2026-82605 — BareBones BBEdit Lasso Language Tokenizer infinite loop