XSS (Cross-Site Scripting) dans league/commonmark (CVE-2026-71478)
Résumé
XSS dans league/commonmark (CVE-2026-71478). Risque d'opérations non autorisées ou de divulgation. Exploitable via AttributesExtension. Atténuation : mise à jour vers 2.7.0 ou plus.
Description d'origine
La description telle que publiée par la source (souvent en anglais).
Summary
The AttributesExtension's href/src unsafe-link filter (AttributesHelper::filterAttributes()) can be bypassed by embedding control bytes in a javascript: URL that browsers discard before parsing the scheme. Two variants:
- Tab/newline inside the scheme — a literal ASCII TAB (0x09), CR (0x0D), or LF (0x0A), e.g.
javascript:alert(1). Per the WHATWG URL Standard's "basic URL parser" step 3, browsers "remove all ASCII tab or newline from input". - Leading C0 controls — e.g.
<0x01>javascript:alert(1). Per step 1 of the same algorithm, browsers remove any leading or trailing C0 control or space. (A leading space alone does not bypass, becauseparseAttributes()alreadytrim()s the value; other C0 bytes are not trimmed.)
The filter is a literal anchored-prefix regex (RegexHelper::isLinkPotentiallyUnsafe() / REGEX_UNSAFE_PROTOCOL) that matches neither obfuscated form, so in both cases the browser still executes javascript:alert(1).
This is confirmed reproducible even with allow_unsafe_links => false set — i.e. even applications that have followed the library's own documented hardening guidance for untrusted input remain exploitable.
This is a sibling gap in the same defense that CVE-2025-46734 (GHSA-3527-qv2q-pfvx) fixed in v2.7.0 — that fix made href/src respect allow_unsafe_links, but did not normalize control bytes before checking, so these obfuscation techniques were never covered.
Vulnerability
Files:
- `src…
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-71478 a été découverte dans league/commonmark.
Des attaquants peuvent cibler un point d'entrée spécifique comme AttributesExtension à distance pour détourner le produit.
Risque d'opérations non autorisées ou de divulgation. Score CVSS : 6.1/10.
Action : mettez à jour league/commonmark vers 2.7.0 ou supérieur.
En cas de doute, contactez votre service informatique ou cherchez « league/commonmark CVE-2026-71478 » sur le site de l'éditeur.
CVE-2026-71478 (league/commonmark) — CWE-79 / CVSS v3 6.1
Vecteur d'attaque : distant (réseau) / non authentifié
Surface d'attaque : AttributesExtension / href / src / REGEX_UNSAFE_PROTOCOL
Correctif : 2.7.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 XSS (CWE-79) affecte league/commonmark. Les attaquants atteignent le code vulnérable via AttributesExtension sans authentification.
Consultez l'avis de l'éditeur pour les versions affectées de league/commonmark. Surface d'attaque : AttributesExtension / href / src / REGEX_UNSAFE_PROTOCOL.
Gravité : Moyenne (CVSS 6.1/10). Risque d'opérations non autorisées ou de divulgation.
Mettre à jour vers 2.7.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 'league/commonmark' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
league/commonmarkを grep し、稼働しているサービス・バージョンを把握する。 -
2Apply patch patch
Upgrade league/commonmark to 2.7.0ステージング環境で 2.7.0 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。
-
3Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。
Paquets affectés
Références
- package github.com
- web github.com
- web github.com
- web github.com
- web github.com