Skip to main content
← Vulnerabilities

jsv treats regex match budget exhaustion as a non-match, bypassing patternProperties and not

Affects jsv from 0.1.0 before 0.26.2, only for schemas whose regex explores a catastrophic branch before the matching branch. Fixed in 0.26.2.

Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.

Published
Last modified
Published
Not listed in CISA KEV
7/100 · provisional
Specific setups only
Fix
Fixed in 0.26.2
None on Exploit-DB, Metasploit or GitHub

Summary

The jsv JSON Schema validation library for Elixir is affected. A specially crafted string can make a schema regex run out of its matching budget, which causes jsv to treat the match as a failure and accept data it should reject.

Read the original description

Improper Check for Unusual or Exceptional Conditions vulnerability in the pattern and patternProperties keywords in lud jsv allows an unauthenticated remote attacker to bypass schema validation via a string that matches a schema regex only after heavy backtracking. JSV.Helpers.RegexExt.bounded_match?/2 runs schema regexes with a backtracking budget but calls :re.run/3 without :report_errors, so a match that exhausts the budget returns the same :nomatch as a real non-match. A key that matches a patternProperties regex is then checked against additionalProperties or not at all, and a string that matches a not subschema with a pattern is accepted. Before the budget existed, Regex.match?/2 failed the same way at Erlang's default match limit. Only schemas whose regex explores a catastrophic branch before the branch that matches are affected. The attacker controls the data, not the schema, and linear patterns never exhaust the budget. This issue affects jsv: from 0.1.0 before 0.26.2.

What to do

  • Check whether your setup matches what the bug needs.

    The schema must contain a pattern or patternProperties regex that can match only after exploring a catastrophic branch first. Affects jsv from 0.1.0 before 0.26.2.
  • Upgrade to a fixed version: 0.26.2.

  • Workaround: Pair patternProperties with additionalProperties: false, so keys whose match exhausts the budget are rejected instead of accepted unchecked.

Timeline

  1. CVE published
  2. First seen by cve.now

Affected versions

  • jsv

    From 0.1.0 · fixed in 0.26.2

  • lud/jsv

    Version range not reported

Evidence 5

  1. Advisory
  2. Patch
  3. Repository
  4. Link
  5. Link

Corrections

None so far.

Something wrong on this page? Report an error. Every fix is listed here.

FAQ

Questions about CVE-2026-117680

What does this mean?

When a regex match runs out of its work budget, jsv treats the key as a non-match instead of reporting a failure. A value under a patternProperties key can then skip its subschema, and a string can pass a not deny-list pattern.Source: github.com

Am I affected, and how do I check?

jsv versions from 0.1.0 before 0.26.2 are affected, but only with schemas containing a pattern or patternProperties regex that explores a catastrophic branch before the branch that matches. Check the installed jsv version and review schemas that use such regexes.Source: github.com

What should I do about it?

Upgrade jsv to 0.26.2, the fixed version.Source: github.com

Is it being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data

Why do the sources disagree?

The description says an unauthenticated remote attacker can exploit this, but the CVSS vector records the attack vector as local (AV:L). The sources conflict on the attack vector.Source: github.com