Vulnérabilité dans nltk (CVE-2026-12876)
Résumé
Vulnérabilité dans nltk (CVE-2026-12876). Risque d'opérations non autorisées ou de divulgation. Exploitable via nltk.parse.RecursiveDescentParser. Atténuation : mise à jour vers 3.10.3 ou plus.
Description d'origine
La description telle que publiée par la source (souvent en anglais).
nltk.parse.RecursiveDescentParser (and SteppingRecursiveDescentParser) enumerate parses top-down with no bound on the number of recursive steps. A small, crafted context-free grammar makes a short input consume unbounded CPU (and/or exhaust the Python recursion stack), pinning a process indefinitely — a denial of service.
Proof of concept
Both of the following hang on a 24-token input (killed after 8s; growth is super-linear in input length), on NLTK develop:
from nltk import CFG
from nltk.parse import RecursiveDescentParser
# (a) left recursion -> unbounded recursion
g = CFG.fromstring("S -> S S | 'a'")
list(RecursiveDescentParser(g).parse(["a"] * 24)) # hangs
# (b) ambiguous grammar -> exponential number of parses
g = CFG.fromstring("S -> 'a' S | 'a' S S | 'a'")
list(RecursiveDescentParser(g).parse(["a"] * 24)) # hangs
Impact
An application that runs RecursiveDescentParser on a grammar (or an input) drawn from an untrusted source can be driven into an unbounded CPU / stack-exhaustion loop by a tiny payload. No confidentiality or integrity impact; single-process availability only.
Sibling
The RegexpTokenizer ReDoS reported alongside this (CVE-2026-12875) is a different class (caller-supplied regex) and is addressed under GHSA-w3v8-gmh9-3wv7.
Source: GitHub Security Advisories (Global) NVD GitHub Advisory
Résumé généré automatiquement
Assemblé par SecPulse à partir des données sources (CVSS, CWE, versions affectées) à l'aide de modèles, sans IA. Vérifiez la description d'origine et les références ci-dessous.
Une vulnérabilité référencée CVE-2026-12876 a été découverte dans nltk.
Des attaquants peuvent cibler un point d'entrée spécifique comme nltk.parse.RecursiveDescentParser à distance pour détourner le produit.
Risque d'opérations non autorisées ou de divulgation.
Action : mettez à jour nltk vers 3.10.3 ou supérieur.
En cas de doute, contactez votre service informatique ou cherchez « nltk CVE-2026-12876 » sur le site de l'éditeur.
CVE-2026-12876 (nltk) — CWE-407
Surface d'attaque : nltk.parse.RecursiveDescentParser / SteppingRecursiveDescentParser / RecursiveDescentParser
Correctif : 3.10.3 — appliquer immédiatement
Plan : 1) Audit SBOM, 2) Mise à jour staging→prod, 3) Surveillance WAF/proxy sur les endpoints affectés, 4) Recherche d'IOC dans les logs.
Réfs : voir GHSA / avis éditeur / version corrigée liés sur cette page.
Une vulnérabilité (CWE-407) affecte nltk. Les attaquants atteignent le code vulnérable via nltk.parse.RecursiveDescentParser.
Consultez l'avis de l'éditeur pour les versions affectées de nltk. Surface d'attaque : nltk.parse.RecursiveDescentParser / SteppingRecursiveDescentParser / RecursiveDescentParser.
Gravité : ?. Risque d'opérations non autorisées ou de divulgation.
Mettre à jour vers 3.10.3.
En attendant le correctif : désactivez la fonctionnalité concernée, appliquez des règles WAF, ou restreignez l'accès par ACL réseau.
Recherchez dans les logs des requêtes correspondant aux IOC connus de cette CVE. Auditez les SBOM/dépendances.
Actions de réponse
Étapes concrètes et exemples de commandes que les équipes SOC/SRE doivent exécuter dans l'ordre
-
1Identify exposure identify
grep -r 'nltk' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
nltkを grep し、稼働しているサービス・バージョンを把握する。 -
2Apply patch patch
Upgrade nltk to 3.10.3ステージング環境で 3.10.3 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。
-
3Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。
Paquets affectés
Références
- web github.com
- web github.com
- web github.com
- web github.com
- web github.com