CVE-2026-117680 PUBLISHED

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

Assigner: EEF
Reserved: 30.10.2026 Published: 01.11.2026 Updated: 01.11.2026

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.

Metrics

CVSS Vector: CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
CVSS Score: 2.1

Product Status

Vendor lud
Product jsv
Versions Default: unaffected
  • affected from 0.1.0 to 0.26.2 (excl.)
Vendor lud
Product jsv
Versions Default: unaffected
  • affected from 302a5d0803468f81a1cf08e3b67d8b14cee759ca to defdb8a68ac7f218aa5dfe85190d484017cb8817 (excl.)

Affected Configurations

The schema must contain a pattern or patternProperties regex that PCRE can match only after exploring a catastrophic branch first, such as a nested quantifier in an earlier alternative. Linear patterns never exhaust the budget. The attacker controls the validated data but not the schema.

Workarounds

Pair patternProperties with additionalProperties: false. A key whose match exhausts the budget is then rejected instead of accepted unchecked. Valid keys that need heavy backtracking are rejected as well.

Write schema regexes without nested quantifiers or overlapping alternatives, and do not express deny-lists as a not subschema with a pattern on untrusted input.

Credits

  • Lars Hesel Christensen finder
  • Lars Hesel Christensen reporter
  • Ludovic Dem remediation developer
  • Jonatan Männchen / EEF coordinator

References

Problem Types

  • CWE-754 Improper Check for Unusual or Exceptional Conditions CWE

Impacts

  • An attacker pads a string until its match exhausts the budget, so a value under a patternProperties key skips its subschema or a string passes a not deny-list. The application then accepts input its schema should reject.