Critical

URI validation failure on SVG parsing. Bypass of CVE-2023-23924

  • Disclosed: 07.02.2023
  • Updated: 11.10.2026 10:22

Summary

Due to the difference in the attribute parser of Dompdf and php-svg-lib, an attacker can still call arbitrary URLs with arbitrary protocols.

Details

Dompdf parses the href attribute of image tags with the following code:

src/Image/Cache.php line 135-150

php
function ($parser, $name, $attributes) use ($options, $parsed_url, $full_url) {
    if (strtolower($name) === "image") {
        $attributes = array_change_key_case($attributes, CASE_LOWER);
        $url = $attributes["xlink:href"] ?? $attributes["href"];
        if (!empty($url)) {
            $inner_full_url = Helpers::build_url($parsed_url["protocol"], $parsed_url["host"], $parsed_url["path"], $url);
            if ($inner_full_url === $full_url) {
                throw new ImageException("SVG self-reference is not allowed", E_WARNING);
            }
            [$resolved_url, $type, $message] = self::resolve_url($url, $parsed_url["protocol"], $parsed_url["host"], $parsed_url["path"], $options);
            if (!empty($message)) {
                throw new ImageException("This SVG document references a restricted resource. $message", E_WARNING);
            }
        }
    }
},

As you can see from the code snippet above, it respects xlink:href even if href is specified.

php
$url = $attributes["xlink:href"] ?? $attributes["href"];

However, php-svg-lib, which is later used to parse the svg file, parses the href attribute with the following code:

src/Svg/Tag/Image.php line 51-57

php
if (isset($attributes['xlink:href'])) {
    $this->href = $attributes['xlink:href'];
}

if (isset($attributes['href'])) {
    $this->href = $attributes['href'];
}

Since href is respected if both xlink:href and href is specified, it's possible to bypass the protection on the Dompdf side by providing an empty xlink:href attribute.

Impact

An attacker can exploit the vulnerability to call arbitrary URLs with arbitrary protocols if they provide an SVG file to the Dompdf. In PHP versions before 8.0.0, it leads to arbitrary unserialize, which will lead, at the very least, to arbitrary file deletion and might lead to remote code execution, depending on available classes.

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
Composer package dompdf/dompdf >= 2.0.2, < 2.0.3 2.0.3

References

CVSS score 10/10
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Weakness (CWE)
CWE-436
Platform
Composer
Package
dompdf/dompdf
Disclosed
07.02.2023
Updated
11.10.2026 10:22

Sources and licenses

OSV / GitHub Advisory Database - GHSA-56gj-mvh6-rp75 - CC BY 4.0

Vulnerability history: dompdf/dompdf

All published vulnerabilities of this package (Composer package), newest first. Shows whether this is a one-off slip or a package that needs watching.

All (20) in the archive
Total entries
20
First → latest
04.2022 07.2026
Without a fix
0
Exploited in attacks
0

Severity breakdown

  • Critical 5
  • High 3
  • Medium 10
  • Low 2

Disclosures per year

  1. 2022: 9
  2. 2023: 3
  3. 2024: 2
  4. 2025: 0
  5. 2026: 6
Severity:
  1. Critical · 9.8 CVE-2021-3838 < 2.0.0 2.0.0
  2. URI validation failure on SVG parsing. Bypass of CVE-2023-23924 this entry
    Critical · 10.0 CVE-2023-24813 >= 2.0.2, < 2.0.3 2.0.3
  3. Critical · 10.0 CVE-2023-23924 < 2.0.2 2.0.2
  4. High · 8.8 CVE-2014-5013 >= 0.6, < 0.6.2 0.6.2
  5. High CVE-2010-4879 >= 0.6, < 0.6.1 0.6.1
  6. Critical · 9.8 CVE-2022-28368 < 1.2.1 1.2.1

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.