GitHub Advisoryadvisory · Packagist

GHSA-hh8v-hgvp-g3f5 league/commonmark has an embed extension allowed_domains bypass

MEDIUM Published 2026-03-19 Modified 2026-03-27 Official page ↗
Aliases
CVE-2026-33347
Ecosystem
Packagist
Packages
league/commonmark
Severity
Moderate
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N
Weaknesses
CWE-185, CWE-79, CWE-918
Reviewed
2026-03-19

Affected packages

• Packagist league/commonmark: >= 2.3.0, < 2.8.2 → fixed in 2.8.2

Description

Impact The `DomainFilteringAdapter` in the Embed extension is vulnerable to an allowlist bypass due to a missing hostname boundary assertion in the domain-matching regex. An attacker-controlled domain like `youtube.com.evil` passes the allowlist check when `youtube.com` is an allowed domain. This enables two attack vectors: • SSRF: The `OscaroteroEmbedAdapter` makes server-side HTTP requests to the embed URL via the `embed/embed` library. A bypassed domain filter causes the server to make outbound requests to an attacker-controlled host, potentially probing internal services or exfiltrating request metadata. • XSS: `EmbedRenderer` outputs the oEmbed response HTML directly into the page with no sanitization. An attacker controlling the bypassed domain can return arbitrary HTML/JavaScript in their oEmbed response, which is rendered verbatim. Any application using the `Embed` extension and relying on `allowed_domains` to restrict domains when processing untrusted Markdown input is affected. Patches This has been patched in version 2.8.2. The fix replaces the regex-based domain check with explicit hostname parsing using `parse_url()`, ensuring exact domain and subdomain matching only. Workarounds • Disable the `Embed` extension, or restrict its use to trusted users • Provide your own domain-filtering implementation of `EmbedAdapterInterface` • Enable a Content Security Policy (CSP) and outbound firewall restrictions

Related

Alias · CVE (1)

  • CVE-2026-33347 league/commonmark is a PHP Markdown parser. vulnerability

Weakness · CWE (3)

  • CWE-185 Incorrect Regular Expression weakness
  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness
  • CWE-918 Server-Side Request Forgery weakness

References