CVE-2026-117680 Evasión de validación de esquemas en jsv al agotarse el presupuesto de regex en pattern y patternProperties
En la librería jsv, las regex de los keywords pattern y patternProperties se ejecutan con un presupuesto de backtracking pero sin reporte de errores, por lo que un match que agota el presupuesto devuelve el mismo resultado que un no-match. Un atacante remoto no autenticado puede enviar una cadena que solo coincide tras backtracking intenso para evadir la validación del esquema, eludiendo patternProperties y las comprobaciones de additionalProperties y not. Solo afecta a esquemas cuyas regex exploran una rama…
CVSS 4.0
- Probabilidad de explotación · EPSS del 09/110,2 % · percentil 8
- Explotada activamenteNo confirmada
- Exploit públicoNo conocido
Afectados
lud jsv
desde 0.1.0 hasta antes de 0.26.2
lud jsv
desde 302a5d0803468f81a1cf08e3b67d8b14cee759ca hasta antes de defdb8a68ac7f218aa5dfe85190d484017cb8817
Qué hacer
- Verificá si usás jsv y en qué versión.
- Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
- Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.
Calculadora CVSS
CVSS 4.0 · 2.1 BAJA
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
- Vector de ataqueLocal
- Complejidad del ataqueBaja
- Requisitos del ataquePresentes
- Privilegios requeridosNinguno
- Interacción del usuarioNinguna
- Confidencialidad (sistema vulnerable)Ninguna
- Integridad (sistema vulnerable)Baja
- Disponibilidad (sistema vulnerable)Ninguna
- Confidencialidad (sistemas posteriores)Ninguna
- Integridad (sistemas posteriores)Ninguna
- Disponibilidad (sistemas posteriores)Ninguna
Descripción original
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.
Referencias (5)
Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.