GHSA-x5qj-865h-mgvm

Suggest an improvement
Source
https://github.com/advisories/GHSA-x5qj-865h-mgvm
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-x5qj-865h-mgvm/GHSA-x5qj-865h-mgvm.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-x5qj-865h-mgvm
Aliases
Published
2026-06-15T16:46:53Z
Modified
2026-09-10T03:50:51Z
Severity
  • 5.3 (Medium) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N CVSS Calculator
Summary
Symfony: HtmlSanitizer UrlAttributeSanitizer Misses URL Attributes
Details

Description

Symfony\Component\HtmlSanitizer\Visitor\AttributeSanitizer\UrlAttributeSanitizer::getSupportedAttributes() enumerates the attribute names whose values are scrubbed through UrlSanitizer::sanitize() (scheme and host allow-lists, javascript: rejection, BiDi check, etc.). The list is ['src', 'href', 'lowsrc', 'background', 'ping', 'action', 'formaction', 'poster', 'cite']. Other URL-bearing attributes are absent: <object data=…>, <applet codebase=…>, <applet archive=…> and <object archive=…>, <iframe longdesc=…> and <img longdesc=…>. When an integrator opts these elements/attributes in via allowElement('object', ['data']), allowElement('applet', ['codebase']), etc., or via allowAttribute(), no URL sanitization runs: data="javascript:alert(1)" and similar payloads ship through unchanged into the output, enabling stored XSS.

<meta http-equiv="refresh" content="0; url=…"> is the same class of bug routed differently: the URL is embedded inside a multi-field content attribute that the per-attribute sanitizer cannot detect from the attribute name alone. Integrators who enable <meta> with the content attribute (e.g. via allowStaticElements()) see content="0; url=javascript:alert(1)" pass through, producing a refresh-driven navigation to a javascript: URL.

Default configurations are not affected: <object>, <applet> and <iframe> are not in W3CReference::BODY_ELEMENTS and <meta> requires an explicit opt-in to <head> context. The vulnerability surface is integrators who explicitly allow any of those elements together with the listed URL-bearing attributes.

Resolution

UrlAttributeSanitizer now also routes data, codebase, archive and longdesc through UrlSanitizer::sanitize(). A new MetaRefreshAttributeSanitizer registered as a default attribute sanitizer detects the <delay>; url=<url> syntax inside <meta content>, sanitizes the embedded URL, and drops the attribute if the URL is rejected; non-refresh meta content values are passed through unchanged.

The patches for this issue are available here for branch 6.4 (and forward-ported to 7.4, 8.0 and 8.1).

Credits

Symfony would like to thank Scott Arciszewski (Trail of Bits) for reporting the issue and Nicolas Grekas for providing the fix.

Database specific
{
    "cwe_ids":  [
        "CWE-1023",
        "CWE-79"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-06-15T16:46:53Z",
    "nvd_published_at":  null,
    "severity":  "MODERATE"
}
References

Affected packages

Packagist
symfony/html-sanitizer

Package

Name
symfony/html-sanitizer
Purl
pkg:composer/symfony/html-sanitizer

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.1.0
Fixed
6.4.41

Affected versions

v6.*
v6.1.0
v6.1.9
v6.1.11
v6.2.0-BETA1
v6.2.0-RC1
v6.2.0
v6.2.2
v6.2.5
v6.2.7
v6.3.0-BETA1
v6.3.0-RC1
v6.3.0
v6.3.4
v6.3.7
v6.3.12
v6.4.0-BETA1
v6.4.0-BETA2
v6.4.0-RC1
v6.4.0
v6.4.3
v6.4.4
v6.4.7
v6.4.8
v6.4.12
v6.4.13
v6.4.17
v6.4.18
v6.4.21
v6.4.24
v6.4.25
v6.4.28
v6.4.35
v6.4.40

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-x5qj-865h-mgvm/GHSA-x5qj-865h-mgvm.json"
symfony/html-sanitizer

Package

Name
symfony/html-sanitizer
Purl
pkg:composer/symfony/html-sanitizer

Affected ranges

Type
ECOSYSTEM
Events
Introduced
7.0.0
Fixed
7.4.13

Affected versions

v7.*
v7.0.0
v7.0.3
v7.0.4
v7.0.7
v7.0.8
v7.1.0-BETA1
v7.1.0-RC1
v7.1.0
v7.1.1
v7.1.5
v7.1.6
v7.1.10
v7.1.11
v7.2.0-BETA1
v7.2.0-RC1
v7.2.0
v7.2.2
v7.2.3
v7.2.6
v7.2.9
v7.3.0-BETA1
v7.3.0-RC1
v7.3.0
v7.3.2
v7.3.3
v7.3.6
v7.4.0-BETA1
v7.4.0-BETA2
v7.4.0-RC1
v7.4.0
v7.4.7
v7.4.8
v7.4.12

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-x5qj-865h-mgvm/GHSA-x5qj-865h-mgvm.json"
symfony/html-sanitizer

Package

Name
symfony/html-sanitizer
Purl
pkg:composer/symfony/html-sanitizer

Affected ranges

Type
ECOSYSTEM
Events
Introduced
8.0.0
Fixed
8.0.13

Affected versions

v8.*
v8.0.0
v8.0.7
v8.0.8
v8.0.12

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-x5qj-865h-mgvm/GHSA-x5qj-865h-mgvm.json"
symfony/symfony

Package

Name
symfony/symfony
Purl
pkg:composer/symfony/symfony

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.1.0
Fixed
6.4.41

Affected versions

v6.*
v6.1.0
v6.1.1
v6.1.2
v6.1.3
v6.1.4
v6.1.5
v6.1.6
v6.1.7
v6.1.8
v6.1.9
v6.1.10
v6.1.11
v6.1.12
v6.2.0-BETA1
v6.2.0-BETA2
v6.2.0-BETA3
v6.2.0-RC1
v6.2.0-RC2
v6.2.0
v6.2.1
v6.2.2
v6.2.3
v6.2.4
v6.2.5
v6.2.6
v6.2.7
v6.2.8
v6.2.9
v6.2.10
v6.2.11
v6.2.12
v6.2.13
v6.2.14
v6.3.0-BETA1
v6.3.0-BETA2
v6.3.0-BETA3
v6.3.0-RC1
v6.3.0-RC2
v6.3.0
v6.3.1
v6.3.2
v6.3.3
v6.3.4
v6.3.5
v6.3.6
v6.3.7
v6.3.8
v6.3.9
v6.3.10
v6.3.11
v6.3.12
v6.4.0-BETA1
v6.4.0-BETA2
v6.4.0-BETA3
v6.4.0-RC1
v6.4.0-RC2
v6.4.0
v6.4.1
v6.4.2
v6.4.3
v6.4.4
v6.4.5
v6.4.6
v6.4.7
v6.4.8
v6.4.9
v6.4.10
v6.4.11
v6.4.12
v6.4.13
v6.4.14
v6.4.15
v6.4.16
v6.4.17
v6.4.18
v6.4.19
v6.4.20
v6.4.21
v6.4.22
v6.4.23
v6.4.24
v6.4.25
v6.4.26
v6.4.27
v6.4.28
v6.4.29
v6.4.30
v6.4.31
v6.4.32
v6.4.33
v6.4.34
v6.4.35
v6.4.36
v6.4.37
v6.4.38
v6.4.39
v6.4.40

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-x5qj-865h-mgvm/GHSA-x5qj-865h-mgvm.json"
symfony/symfony

Package

Name
symfony/symfony
Purl
pkg:composer/symfony/symfony

Affected ranges

Type
ECOSYSTEM
Events
Introduced
7.0.0
Fixed
7.4.13

Affected versions

v7.*
v7.0.0
v7.0.1
v7.0.2
v7.0.3
v7.0.4
v7.0.5
v7.0.6
v7.0.7
v7.0.8
v7.0.9
v7.0.10
v7.1.0-BETA1
v7.1.0-RC1
v7.1.0
v7.1.1
v7.1.2
v7.1.3
v7.1.4
v7.1.5
v7.1.6
v7.1.7
v7.1.8
v7.1.9
v7.1.10
v7.1.11
v7.2.0-BETA1
v7.2.0-BETA2
v7.2.0-RC1
v7.2.0
v7.2.1
v7.2.2
v7.2.3
v7.2.4
v7.2.5
v7.2.6
v7.2.7
v7.2.8
v7.2.9
v7.3.0-BETA1
v7.3.0-BETA2
v7.3.0-RC1
v7.3.0
v7.3.1
v7.3.2
v7.3.3
v7.3.4
v7.3.5
v7.3.6
v7.3.7
v7.3.8
v7.3.9
v7.3.10
v7.3.11
v7.4.0-BETA1
v7.4.0-BETA2
v7.4.0-RC1
v7.4.0-RC2
v7.4.0-RC3
v7.4.0
v7.4.1
v7.4.2
v7.4.3
v7.4.4
v7.4.5
v7.4.6
v7.4.7
v7.4.8
v7.4.9
v7.4.10
v7.4.11
v7.4.12

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-x5qj-865h-mgvm/GHSA-x5qj-865h-mgvm.json"
symfony/symfony

Package

Name
symfony/symfony
Purl
pkg:composer/symfony/symfony

Affected ranges

Type
ECOSYSTEM
Events
Introduced
8.0.0
Fixed
8.0.13

Affected versions

v8.*
v8.0.0
v8.0.1
v8.0.2
v8.0.3
v8.0.4
v8.0.5
v8.0.6
v8.0.7
v8.0.8
v8.0.9
v8.0.10
v8.0.11
v8.0.12

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-x5qj-865h-mgvm/GHSA-x5qj-865h-mgvm.json"