Description
cJSON through 1.7.19 applies RFC 6902 JSON Patch operations non-atomically in apply_patch() in cJSON_Utils.c. For a replace operation that is missing its value member, or a move operation whose destination path cannot be resolved, the existing target member is detached and deleted before the operation is fully validated, so the target document is mutated while cJSONUtils_ApplyPatches() or cJSONUtils_ApplyPatchesCaseSensitive() returns a failure status. An attacker who can supply the patch document can destroy addressable members of the target document even though the API reports that the patch failed, defeating the all-or-nothing behavior callers rely on to reject bad patches.
Metrics
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:NWeakness enumeration
Affected software
| Vendor | Product | Versions |
|---|---|---|
| DaveGamble | cJSON | <= 1.7.19 |
References
- https://github.com/DaveGamble/cJSON/blob/v1.7.19/cJSON_Utils.c#L887-L948Patch
- https://joshua.hu/cjson-json-parser-cve-vulnerabilitiesExploit, Press/Media Coverage, Third Party Advisory
- https://www.vulncheck.com/advisories/cjson-json-patch-non-atomic-application-destroys-data-before-validationThird Party Advisory
- https://joshua.hu/cjson-json-parser-cve-vulnerabilitiesExploit, Press/Media Coverage, Third Party Advisory
Timeline
- Published
- Jul 29, 2026
- Last modified
- Oct 23, 2026
- NVD status
- Analyzed