FICHE CVE

CVE-2026-117680

Publiée le 2026-11-01 · Dernière modification le 2026-11-02

🇫🇷 EN BREF

La bibliothèque `jsv` (versions 0.1.0 à 0.26.1), utilisée pour la validation de schémas JSON, contient une faille dans sa manière de gérer les expressions régulières complexes. Lorsqu'une chaîne fournie amène le moteur de regex à atteindre sa limite de retour en arrière (backtracking), la bibliothèque traite incorrectement ce délai d'attente comme une « absence de correspondance » plutôt que comme une erreur. Cela permet à des chaînes spécifiquement conçues de contourner les règles de validation définies par les mots-clés `pattern` ou `patternProperties`.

Un attaquant peut utiliser cela pour soumettre des données qui violent votre schéma, compromettant potentiellement l'intégrité des données d'entrée de votre application. Il s'agit d'un problème de faible gravité car il nécessite que l'attaquant fournisse une entrée très spécifique capable de déclencher un événement de retour en arrière « catastrophique » dans un schéma préexistant. Bien que cela ne nécessite ni authentification ni interaction de l'utilisateur, cela ne fonctionne que si votre schéma spécifique utilise des modèles de regex complexes et vulnérables.

CVSS 4.02.1 FAIBLE
Type de faiblesse
Publiée2026-11-01
Dernière modification2026-11-02

DÉTAIL DU VECTEUR CVSS

Vecteur d'attaqueLocal
Complexité d'attaqueFaible
Prérequis d'attaquePrésent
Privilèges requisAucun
Interaction utilisateurAucune
Confidentialité (système vulnérable)Aucune
Intégrité (système vulnérable)Faible
Disponibilité (système vulnérable)Aucune
Confidentialité (système subséquent)Aucune
Intégrité (système subséquent)Aucune
Disponibilité (système subséquent)Aucune

RÉFÉRENCES

Description officielle du NVD (en anglais)

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.