CVE-2026-33347·PHP vulnerability
league/commonmark is a PHP Markdown parser. From version 2.3.0 to before version 2.8.2, 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 issue has been patched in version 2.8.2.
- Severity
- medium
- Software
- PHP
- Fixed in
- 2.8.2
- Published
How likely is exploitation
FIRST's Exploit Prediction Scoring System puts the probability of this CVE being exploited in the next 30 days at <0.1% — higher than 18% of all published CVEs. EPSS is an independent forecast of exploitation, not a severity rating: it says nothing about how much damage a successful attack does, which is what a CVSS score measures.
Affected versions
From: 2.3.0
Until: 2.8.2
Fixed in: 2.8.2
How to fix this CVE
Update the league/commonmark PHP library to version 2.8.2 or later to remediate the domain allowlist bypass vulnerability in the Embed extension. The vulnerability allows attackers to bypass domain filtering by crafting malicious domain names that pass incomplete regex validation. Ensure all PHP applications using this library are updated and tested in a staging environment before deploying to production.
sudo dnf update php php-common php-cliDefensia detects this vulnerability
WAF mitigation (if patching is not yet possible)
Add this rule to your WAF to block exploitation attempts while you schedule the patch.
Implement WAF rules to block or log HTTP requests containing suspicious domain patterns in parameters passed to endpoints using the Embed extension (e.g., pattern: /\b[a-z0-9.-]*\.(com|net|org|edu)\.(?!com|net|org|edu)[a-z0-9.-]+/i). Additionally, enforce strict Content Security Policy (CSP) headers to restrict iframe and embedded resource origins to explicitly whitelisted domains.How to check if you are affected
- Check installed PHP version: php -v
- Verify league/commonmark library installation: composer show league/commonmark or check vendor/league/commonmark/composer.json for version
- Search application logs and web server logs for requests containing suspicious domain patterns (e.g., 'youtube.com.evil', 'example.com.attacker-domain') in Embed extension parameters
- Confirm remediation by running: php -r "echo (new ReflectionClass('League\\CommonMark\\Extension\\CommonMarkCoreExtension'))->getFileName();" and verify library version is 2.8.2 or higher
FAQ
What is CVE-2026-33347?
This vulnerability affects the Embed extension's DomainFilteringAdapter in league/commonmark, where a flawed regex pattern fails to properly validate domain boundaries. Attackers can register attacker-controlled domains like youtube.com.evil to bypass allowlist checks when youtube.com is whitelisted, potentially enabling malicious content embedding.
Is CVE-2026-33347 being actively exploited?
No, this vulnerability is not listed in CISA's Known Exploited Vulnerabilities catalog and no public exploits are currently available. However, the attack is straightforward and organizations should remediate promptly to prevent opportunistic exploitation.
What versions of PHP are affected by CVE-2026-33347?
The vulnerability affects league/commonmark versions 2.3.0 through 2.8.1. The PHP language itself is not affected; rather, any application using the vulnerable library versions is at risk.
How do I check if my server is vulnerable to CVE-2026-33347?
Run: composer show league/commonmark | grep Version. If the version is between 2.3.0 and 2.8.1, your installation is vulnerable. If the Embed extension is disabled or not in use, risk is reduced but the library should still be updated.
Does Defensia detect CVE-2026-33347?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If league/commonmark is detected on a monitored server, CVE-2026-33347 will appear in your dashboard with remediation steps.
Related PHP CVEs
References
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2026-33347. Free for 1 server.
Get started free