
CVE catalog
CVE-2026-107378
CairoSVG is an SVG converter based on Cairo, a 2D graphics library. Prior to 2.9.1, rendering an attacker-controlled SVG with a path containing many segments can cause quadratic CPU consumption in cai
- Severity
- High · CVSS 8.7
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Published
- Updated
- Source
- [NVD] · [CVE record]
- EPSS
- 0.38% · Oct 25, 2026
CairoSVG is an SVG converter based on Cairo, a 2D graphics library. Prior to 2.9.1, rendering an attacker-controlled SVG with a path containing many segments can cause quadratic CPU consumption in cairosvg/path.py. The path tokenizer repeatedly slices and rescans the remaining path data, while draw_markers drains node.vertices with node.vertices.pop(0), causing repeated linear-time work. The svg2png, svg2pdf, and svg2ps APIs reach these operations during ordinary rendering, allowing a sub-megabyte SVG to consume substantial CPU and deny service to a rendering application. This issue is fixed in version 2.9.1.
Vulnerable and fixed packages
Distribution-reported package versions and fixes. These do not depend on matching against the OpenFactory package catalog.
| Distribution | Package | Release | Version | Status |
|---|---|---|---|---|
| Debian | cairosvg | sid | 2.9.1-1 | fixed |
| Debian | cairosvg | forky | 2.9.1-1 | fixed |
| Debian | cairosvg | trixie | 2.7.1-2 | vulnerable |
| Debian | cairosvg | bookworm | 2.5.2-1.1+deb12u1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.1.1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.1.2 | vulnerable |
| PyPI | cairosvg | Not reported | 0.2 | vulnerable |
| PyPI | cairosvg | Not reported | 0.3 | vulnerable |
| PyPI | cairosvg | Not reported | 0.3.1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4.1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4.2 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4.3 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4.4 | vulnerable |
| PyPI | cairosvg | Not reported | 0.5 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.1 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.10 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.11 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.12 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.13 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.14 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.15 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.16 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.17 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.18 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.19 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.2 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.20 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.21 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.22 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.3 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.4 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.5 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.6 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.7 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.8 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.9 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc3 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc4 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc5 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc6 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.3 | vulnerable |
| PyPI | cairosvg | Not reported | 2.1.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.1.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.1.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.1.3 | vulnerable |
| PyPI | cairosvg | Not reported | 2.2.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.2.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.3.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.3.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.4.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.4.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.4.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.5.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.5.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.5.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.6.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.7.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.7.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.8.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.8.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.8.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.9.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.9.1 | fixed |
| PyPI | cairosvg | Not reported | 0.1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.1.1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.1.2 | vulnerable |
| PyPI | cairosvg | Not reported | 0.2 | vulnerable |
| PyPI | cairosvg | Not reported | 0.3 | vulnerable |
| PyPI | cairosvg | Not reported | 0.3.1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4.1 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4.2 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4.3 | vulnerable |
| PyPI | cairosvg | Not reported | 0.4.4 | vulnerable |
| PyPI | cairosvg | Not reported | 0.5 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.1 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.10 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.11 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.12 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.13 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.14 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.15 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.16 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.17 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.18 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.19 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.2 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.20 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.21 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.22 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.3 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.4 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.5 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.6 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.7 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.8 | vulnerable |
| PyPI | cairosvg | Not reported | 1.0.9 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc3 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc4 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc5 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.0rc6 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.0.3 | vulnerable |
| PyPI | cairosvg | Not reported | 2.1.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.1.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.1.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.1.3 | vulnerable |
| PyPI | cairosvg | Not reported | 2.2.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.2.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.3.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.3.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.4.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.4.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.4.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.5.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.5.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.5.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.6.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.7.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.7.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.8.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.8.1 | vulnerable |
| PyPI | cairosvg | Not reported | 2.8.2 | vulnerable |
| PyPI | cairosvg | Not reported | 2.9.0 | vulnerable |
| PyPI | cairosvg | Not reported | 2.9.1 | fixed |
| Opensuse | python-CairoSVG | tumbleweed | 2.9.1-1.1 | fixed |
Fixed-version evidence
| Distribution | Package | Type | Release | Fixed version | Urgency | Origin | Bugs |
|---|---|---|---|---|---|---|---|
| Debian | cairosvg | source | sid | 2.9.0-1 | not yet assigned | Not reported | Not reported |
| Debian | cairosvg | source | forky | 2.9.0-1 | not yet assigned | Not reported | Not reported |
| Debian | cairosvg | source | trixie | (unfixed) | not yet assigned | Not reported | Not reported |
| Debian | cairosvg | source | bookworm | (unfixed) | not yet assigned | Not reported | Not reported |
| PyPI | cairosvg | PyPI | Not reported | 2.9.1 | Not reported | PYSEC-2026-4204 | Not reported |
| PyPI | cairosvg | PyPI | Not reported | 2.9.1 | Not reported | GHSA-C3JG-QH8M-J3H2 | Not reported |
| Opensuse | python-CairoSVG | rpm | tumbleweed | 2.9.1-1.1 | Not reported | OPENSUSE-SU-2026:12111-1 | Not reported |
Notes
[trixie] cairosvg: Minor issue
OpenFactory catalog packages
[Debian 12 (Bookworm)]
- [cairosvg]Affected
Details (2)
2.5.2-1.1+deb12u1· all · bookwormAffected
nvd · cairosvg · debian · bookworm; nvd · cairosvg · debian · 12
2.5.2-1.1+deb12u1· all · bookwormAffected
nvd · cairosvg · debian · bookworm; nvd · cairosvg · debian · 12
- [python3-cairosvg]Affected
Source package: [cairosvg]
Details (2)
2.5.2-1.1+deb12u1· all · bookwormAffected
nvd · cairosvg · debian · bookworm; nvd · cairosvg · debian · 12
2.5.2-1.1+deb12u1· all · bookwormAffected
nvd · cairosvg · debian · bookworm; nvd · cairosvg · debian · 12
[Debian 13 (Trixie)]
- [cairosvg]Affected
Details (2)
2.7.1-2· all · trixieAffected
nvd · cairosvg · debian · 13
2.7.1-2· all · trixieAffected
nvd · cairosvg · debian · 13
- [python3-cairosvg]Affected
Source package: [cairosvg]
Details (2)
2.7.1-2· all · trixieAffected
nvd · cairosvg · debian · 13
2.7.1-2· all · trixieAffected
nvd · cairosvg · debian · 13
[openSUSE Tumbleweed]
- [python313-CairoSVG]Unknown
Source package: [python-CairoSVG]
Details (1)
2.9.0-1.3· noarch · tumbleweedUnknown · Fixed:
2.9.1-1.1Version impact unknown
nvd · python-CairoSVG · opensuse · tumbleweed
- [python314-CairoSVG]Unknown
Source package: [python-CairoSVG]
Details (1)
2.9.0-1.3· noarch · tumbleweedUnknown · Fixed:
2.9.1-1.1Version impact unknown
nvd · python-CairoSVG · opensuse · tumbleweed
Observed:
References
- [https://ftp.suse.com/pub/projects/security/csaf/opensuse-su-2026_12111-1.json]
- [https://github.com/advisories/GHSA-c3jg-qh8m-j3h2]
- [https://nvd.nist.gov/vuln/detail/CVE-2026-107378]
- [https://osv.dev/vulnerability/DEBIAN-CVE-2026-107378]
- [https://osv.dev/vulnerability/PYSEC-2026-4204]
- [https://osv.dev/vulnerability/openSUSE-SU-2026:12111-1]
- [https://security-tracker.debian.org/tracker/CVE-2026-107378]
- [https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-107378.json]
[Debian Security Tracker] · [FIRST EPSS] · [GitHub Advisory Database] · [National Vulnerability Database (NVD)] · [OSV Package Vulnerability Database] · [Red Hat security advisories and VEX] · [SUSE security advisories and VEX]