Vulnérabilité dans sqlparse (CVE-2026-71491)
Résumé
Vulnérabilité dans sqlparse (CVE-2026-71491). Risque d'opérations non autorisées ou de divulgation. Exploitable via group_comments. Atténuation : mise à jour vers 0.6.0 ou plus.
Description d'origine
La description telle que publiée par la source (souvent en anglais).
Summary
A comment-only statement (-- c\n*n) may cause a Denial of Service (DoS).
Details
Location: sqlparse/engine/grouping.py:331-341 (group_comments), invoked first in group() at grouping.py:439. Reachable via sqlparse.parse() and sqlparse.format(sql, strip_comments=True).
A statement made of many single-line comments ('-- c\n' repeated) lexes in O(n) but group_comments is O(n²):
def group_comments(tlist):
tidx, token = tlist.token_next_by(t=T.Comment)
while token:
eidx, end = tlist.token_not_matching(
lambda tk: imt(tk, t=T.Comment) or tk.is_newline, idx=tidx)
...
tidx, token = tlist.token_next_by(t=T.Comment, idx=tidx)
The while loop runs n times and each token_next_by / token_not_matching rescans the O(n) remaining tokens. When all tokens are comments/newlines nothing ever groups, yet the full scan is repeated per token.
Two following factors increase the severity:
group_commentsruns first ingroup()(grouping.py:439), before the_group_matchingtoken-count guard (grouping.py:34-39). So the entire quadratic cost is paid even on oversized input.MAX_GROUPING_TOKENSdoes not provide protection on this vector.- It sits on the primary sanitizer path:
format(sql, strip_comments=True), used by query loggers, SQL firewalls, ORMs, and migration t…
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-71491 a été découverte dans sqlparse.
Des attaquants peuvent cibler un point d'entrée spécifique comme group_comments à distance pour détourner le produit.
Risque d'opérations non autorisées ou de divulgation.
Action : mettez à jour sqlparse vers 0.6.0 ou supérieur.
En cas de doute, contactez votre service informatique ou cherchez « sqlparse CVE-2026-71491 » sur le site de l'éditeur.
CVE-2026-71491 (sqlparse) — CWE-400
Surface d'attaque : group_comments / while / token_next_by / token_not_matching
Correctif : 0.6.0 — 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-400) affecte sqlparse. Les attaquants atteignent le code vulnérable via group_comments.
Consultez l'avis de l'éditeur pour les versions affectées de sqlparse. Surface d'attaque : group_comments / while / token_next_by / token_not_matching.
Gravité : ?. Risque d'opérations non autorisées ou de divulgation.
Mettre à jour vers 0.6.0.
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 'sqlparse' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
sqlparseを grep し、稼働しているサービス・バージョンを把握する。 -
2Apply patch patch
Upgrade sqlparse to 0.6.0ステージング環境で 0.6.0 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。
-
3Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。
Paquets affectés
Références
- advisory github.com
- advisory nvd.nist.gov
- package github.com
- package pypi.org
- web github.com
- web github.com