
Auto-vérification de 26 avis de sécurité jackson-databind + jackson-core : intersection coordonnée par coordonnée pour donner les versions réellement suffisantes (2.18.11/2.21.7/2.22.3/3.1.7/3.2.3, 2.21.6 ne suffit plus) ; analyse du code source avec réduction du bruit pour vous dire combien vous en êtes réellement affecté ; inclut 1 avis non répertorié dans la base globale GitHub et non signalé par Dependabot (celui de jackson-core, qui vous affecte même après mise à jour de databind) CVE-2026-54515 / CVE-2026-54512
Outil d'auto-vérification de 26 avis de sécurité pour jackson-databind + jackson-core. Jar unique sans dépendances, sans connexion réseau.
Il répond à trois questions auxquelles Dependabot ne peut pas répondre :
CVE-2026-68498 de jackson-core (voir la section « v0.3.0 »).@JsonView / types polymorphes / correspondance insensible à la casse……), afin de réduire le bruit de « version affectée installée » à « fonctionnalité réellement exploitée ».java -jar jackson-check.jar ./target ./src
Les 09-30 et 10-01, FasterXML a publié 4 avis de sévérité high (tous 7.5, tous des dénis de service):
| Identifiant | Coordonnée | Sujet | Condition de déclenchement |
|---|---|---|---|
| CVE-2026-91776 | jackson-databind | chaque type id inconnu laisse une entrée dans le cache pour toute la durée de vie du processus, la mémoire ne fait qu'augmenter | @JsonTypeInfo(use = Id.NAME, defaultImpl = …) + l'attaquant contrôle le type id + mapper réutilisé durablement |
| CVE-2026-91777 | jackson-databind | lors de la résolution des références avant par ordre inverse, environ N²/2 comparaisons (N=2000 → 2 003 000 comparaisons) | désérialiser du JSON non fiable dans une collection ou une Map annotée @JsonIdentityInfo |
| CVE-2026-89425 | jackson-core | un token malformé est intégralement concaténé dans le message d'exception, sans être soumis à maxErrorTokenLength | uniquement le chemin createParser(DataInput); l'avis précise qu'aucune configuration ne permet d'atténuer |
| CVE-2026-89407 | jackson-core | backtracking quadratique de la regex NumberInput.looksLikeValidNumber() (74,4 secondes mesurées sur 160 000 caractères) | lier une chaîne JSON à un champ numérique (comportement par défaut de databind); ce chemin est contraint par maxStringLength (20 millions par défaut) et non par maxNumberLength (1000 par défaut) |
Les versions corrigées sont identiques pour les deux coordonnées: 2.18.11 / 2.21.7 / 2.22.3 / 3.1.7 / 3.2.3 (toutes téléchargeables sur Central; 89407 est corrigé en 3.2.2 sur la branche 3.2, 89425 nécessite 3.2.3, on retient la plus élevée).
Par conséquent, les versions 2.18.10 / 2.21.6 / 2.22.2 / 3.1.6 / 3.2.2 imprimées par v0.2.0 / v0.3.0 ne suffisent plus depuis le 09-30. Les jars des anciennes versions ne le sauront pas — veuillez passer à v0.4.0 pour un nouveau scan.
⚠️ Ces quatre avis ne relèvent pas de l'angle mort de Dependabot: ils ont été intégrés à la base mondiale de vulnérabilités GitHub le jour même de leur publication, et Dependabot les signalera normalement. v0.4.0 les intègre uniquement pour que la réponse à « vers quelle version faut-il monter » reste correcte.
🔴 Correction simultanée d'une affirmation de v0.2.0: la section « v0.2.0 » ci-dessous indique que « ces 4 avis ne sont pas recensés dans la base mondiale de vulnérabilités GitHub, et que Dependabot ne les signalera pas » — cela était vrai jusqu'au 09-14, mais ne l'est plus depuis le 2026-09-28 — les quatre ont été intégrés à la base mondiale (nouvelle exécution de ASSERT2 dans
gen_rules.pyle 10-05: angle mort côté databind 4 → 0). Le seul avis encore introuvable est désormaisCVE-2026-68498dejackson-core.
jackson-core est une autre coordonnée, scanner databind ne le détecte pasLa table de décision de v0.2.x ne comportait qu'un seul artifactId: jackson-databind. Ainsi, les 7 avis publiés par FasterXML dans le
dépôt jackson-core n'étaient pas détectés du tout par cet outil — et il ne signalait aucune erreur pour autant, il ignorait simplement et silencieusement tous les jackson-core-*.jar.
« Non détecté » et « vous êtes en sécurité » se ressemblent à l'identique dans le rapport.
v0.3.0 fait passer la granularité de décision de advisory × groupId × intervalle à advisory × groupId × artifactId × intervalle,
la décision, le calcul d'intersection et le « coordonnée non scannée » sont tous indexés par la coordonnée complète.
L'avis le plus important — CVE-2026-68498 (high 7.5, 2026-09-12):
StreamReadConstraints.maxNameLength (50 000 caractères par défaut) ne s'applique pas sur le chemin d'entrée par caractères.
Lorsque ReaderBasedJsonParser accumule un nom d'attribut, il utilise la limite de longueur de chaîne (100 millions par défaut, environ 2000 fois plus),
la véritable validation du nom n'intervient qu'une fois toute la clé scannée — à ce moment-là, environ 200 Mo ont déjà été alloués.
Une seule clé JSON surdimensionnée suffit, la configuration par défaut est vulnérable.
>= 2.16.0, <= 2.18.9 → 2.18.10 · >= 2.19.0, <= 2.21.5 → 2.21.6 ·
>= 2.22.0, <= 2.22.1 → 2.22.2 · 3.x(tools.jackson.core)<= 3.1.5 → 3.1.6 · <= 3.2.1 → 3.2.2UTF8StreamJsonParser revalide à chaque extension de tampon.
Ceux qui parsent depuis byte[] / InputStream ne sont pas affectés; seuls ceux qui parsent depuis String / Reader / char[] le sont.validateNameLength n'existe que dans le ReaderBasedJsonParser de la version corrigée,
il est absent des versions vulnérables (2.18.9→2.18.10 · 2.21.5→2.21.6 · 3.1.5→3.1.6, reproduit sur les trois branches).⚠️ Limites de l'outil, écrites ici pour éviter tout malentendu : cet outil sait déterminer la version du jar, mais pas votre façon d'appeler — l'écriture la plus courante,
readValue(someStringVariable, …), une analyse textuelle ne permet pas de savoir si cette variable est de typeStringoubyte[]. Donc « aucune condition de déclenchement trouvée » ne signifie pas que vous n'êtes pas concerné, et c'est ainsi que le rapport l'indique.
🔴 Ne le lisez pas comme « Dependabot est totalement aveugle à jackson-core » : parmi les 7 entrées de
jackson-core, seuleCVE-2026-68498est introuvable dans la base mondiale des vulnérabilités de GitHub ; les 6 autres sont déjà répertoriées et Dependabot les signale normalement. Cette entrée est revérifiée à chaque réexécution parASSERT-C2degen_rules.py, et toute modification du chiffre bloque la génération.
🔴 Cette section est un enregistrement du 09-14, deux points sont désormais obsolètes (voir « v0.4.0 » ci-dessus) : ① ces 4 entrées ont été intégrées à la base mondiale le 2026-09-28, Dependabot les signale désormais ; ② les versions « tout corriger d'un coup » ne sont plus 2.18.10 / 2.21.6 / 3.1.6. Le texte original est conservé, sans suppression.
FasterXML a publié 4 nouvelles entrées sur la page Security de son propre dépôt :