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

Published Feb 7, 2023
·
Updated

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, $parsedurl, $fullurl) { if (strtolower($name) === "image") { $attributes = arraychangekeycase($attributes, CASELOWER); $url = $attributes["xlink:href"] ?? $attributes["href"]; if (!empty($url)) { $innerfullurl = Helpers::buildurl($parsedurl["protocol"], $parsedurl["host"], $parsedurl["path"], $url); if ($innerfullurl === $fullurl) { throw new ImageException("SVG self-reference is not allowed", EWARNING); } [$resolvedurl, $type, $message] = self::resolveurl($url, $parsedurl["protocol"], $parsedurl["host"], $parsedurl["path"], $options); if (!empty($message)) { throw new ImageException("This SVG document references a restricted resource. $message", EWARNING); } } } },

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.

Other sources

Dompdf is an HTML to PDF converter written in php. Due to the difference in the attribute parser of Dompdf and php-svg-lib, an attacker can still call arbitrary URLs with arbitrary protocols. Dompdf parses the href attribute of image tags and respects xlink:href even if href is specified. However, php-svg-lib, which is later used to parse the svg file, parses the href attribute. 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. 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. This vulnerability has been addressed in commit 95009ea98 which has been included in release version 2.0.3. Users are advised to upgrade. There are no known workarounds for this vulnerability.

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

— Packagist

Affected Software

3 affected componentsFixes available
Dompdf Project Dompdf=2.0.2
composer/dompdf/dompdf=2.0.2
composer/dompdf/dompdf=2.0.2
2.0.3

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade composer/dompdf/dompdf to a version that resolves this vulnerability.

    Fixed in 2.0.3
  2. Upgrade

    Upgrade dompdf/dompdf to a version that resolves this vulnerability.

    Fixed in 2.0.3Patch 95009ea98

Event History

Feb 7, 2023
CVE Published
via MITRE·06:05 PM
Data Sourced
via MITRE·06:05 PM
DescriptionSeverityWeakness
Advisory Published
via GitHub·06:16 PM
Data Sourced
via GitHub·06:16 PM
DescriptionSeverityWeaknessAffected Software
Data Sourced
via Packagist·06:16 PM
DescriptionSeverityAffected Software
Data Sourced
via NVD·07:15 PM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is CVE-2023-24813?

CVE-2023-24813 is a critical vulnerability in Dompdf, an HTML to PDF converter written in PHP, that allows an attacker to call arbitrary URLs with arbitrary protocols.

2

How severe is CVE-2023-24813?

CVE-2023-24813 has a severity score of 9.8 (critical).

3

Which version of Dompdf is affected by CVE-2023-24813?

Dompdf version 2.0.2 is affected by CVE-2023-24813.

4

How can an attacker exploit CVE-2023-24813?

An attacker can exploit CVE-2023-24813 by manipulating the href attribute of image tags to call arbitrary URLs with arbitrary protocols.

5

Are there any references related to CVE-2023-24813?

Yes, you can find more information about CVE-2023-24813 in the following references: - [GitHub Commit](https://github.com/dompdf/dompdf/commit/95009ea98230f9b084b040c34e3869ef3dccc9aa) - [GitHub Security Advisory](https://github.com/dompdf/dompdf/security/advisories/GHSA-56gj-mvh6-rp75)

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203