CVE-2025-69873: ajv has ReDoS when using `$data` option
(updated )
ajv (Another JSON Schema Validator) through version 8.17.1 is vulnerable to Regular Expression Denial of Service (ReDoS) when the $data option is enabled. The pattern keyword accepts runtime data via JSON Pointer syntax ($data reference), which is passed directly to the JavaScript RegExp() constructor without validation. An attacker can inject a malicious regex pattern (e.g., \"^(a|a)*$\") combined with crafted input to cause catastrophic backtracking. A 31-character payload causes approximately 44 seconds of CPU blocking, with each additional character doubling execution time. This enables complete denial of service with a single HTTP request against any API using ajv with $data: true for dynamic schema validation.
References
- github.com/EthanKim88/ethan-cve-disclosures/blob/main/CVE-2025-69873-ajv-ReDoS.md
- github.com/advisories/GHSA-2g4f-4pwh-qvx6
- github.com/ajv-validator/ajv
- github.com/ajv-validator/ajv/commit/720a23fa453ffae8340e92c9b0fe886c54cfe0d5
- github.com/ajv-validator/ajv/pull/2586
- github.com/ajv-validator/ajv/pull/2588
- github.com/ajv-validator/ajv/pull/2590
- github.com/ajv-validator/ajv/releases/tag/v6.14.0
- github.com/ajv-validator/ajv/releases/tag/v8.18.0
- github.com/github/advisory-database/pull/6991
- nvd.nist.gov/vuln/detail/CVE-2025-69873
Code Behaviors & Features
Detect and mitigate CVE-2025-69873 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →