CVE-2019-19450
ReportLab vulnerable to remote code execution via paraparser
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
9.8
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
CVE-2019-19450- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-91
- Updated
- 2026-11-02
CVE List No score
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
CVE-2019-19450- Updated
- 2026-11-02
EUVDEUVD-2023-2562 No score
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
EUVD-2023-2562- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-pj98-2xf6-cff5
9.8
ReportLab vulnerable to remote code execution via paraparser
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
GHSA-pj98-2xf6-cff5- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-91
- Updated
- 2026-11-02
OSV
9.8
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
CVE-2019-19450- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2019-19450
9.8
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
DEBIAN-CVE-2019-19450- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 12 moreShow less
OSVGHSA-pj98-2xf6-cff5
9.8
ReportLab vulnerable to remote code execution via paraparser
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
GHSA-pj98-2xf6-cff5- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-91
- Updated
- 2026-11-02
OSVPYSEC-2026-522
9.8
ReportLab vulnerable to remote code execution via paraparser
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
PYSEC-2026-522- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2023:5616
9.8
Red Hat Security Advisory: python-reportlab security update
- Record
RHSA-2023:5616- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2023:5786
9.8
Red Hat Security Advisory: python-reportlab security update
- Record
RHSA-2023:5786- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2023:5787
9.8
Red Hat Security Advisory: python-reportlab security update
- Record
RHSA-2023:5787- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2023:5788
9.8
Red Hat Security Advisory: python-reportlab security update
- Record
RHSA-2023:5788- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2023:5789
9.8
Red Hat Security Advisory: python-reportlab security update
- Record
RHSA-2023:5789- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2023:5790
9.8
Red Hat Security Advisory: python-reportlab security update
- Record
RHSA-2023:5790- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2019-19450
9.8
paraparser in ReportLab before 3.5.31 allows remote code execution because start_unichar in paraparser.py evaluates untrusted user input in a unichar element in a crafted XML document with '<unichar code="' followed by arbitrary Python code, a similar issue to CVE-2019-17626.
- Record
UBUNTU-CVE-2019-19450- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVALSA-2023:5790 No score
Important: python-reportlab security update
Python-reportlab is a library used for generation of PDF documents.
Security Fix(es):
- python-reportlab: code injection in paraparser.py allows code execution (CVE-2019-19450)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2023:5790- Updated
- 2026-11-02
OSVSUSE-SU-2023:3972-1 No score
Security update for python-reportlab
This update for python-reportlab fixes the following issues:
- CVE-2019-19450: Fixed an issue which allowed remote code execution via start_unichar in paraparser.py evaluating untrusted user input. (bsc#1215560)
- Record
SUSE-SU-2023:3972-1- Updated
- 2026-11-02
OSVSUSE-SU-2023:4048-1 No score
Security update for python-reportlab
This update for python-reportlab fixes the following issues:
- CVE-2019-19450: Fixed an issue which allowed remote code execution via start_unichar in paraparser.py evaluating untrusted user input. (bsc#1215560)
- Record
SUSE-SU-2023:4048-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
reportlabPyPI |
before 3.5.31 | 3.5.31 |
python3-reportlabAlmaLinux:8 |
before 3.4.0-8.el8_8.1.alma.1 | 3.4.0-8.el8_8.1.alma.1 |
python-reportlabDebian:12 |
before 3.5.31-1 | 3.5.31-1 |
python-reportlabDebian:13 |
before 3.5.31-1 | 3.5.31-1 |
python-reportlabDebian:14 |
before 3.5.31-1 | 3.5.31-1 |
python-reportlabDebian:10 From an advisory covering 2 CVEs |
before 3.5.13-1+deb10u2, plus listed versions 3.5.13-13.5.13-1+deb10u1 |
3.5.13-1+deb10u2 |
reportlabPyPI |
before 3.5.31, plus listed versions 2.02.32.42.52.6 Show 28 moreShow less2.73.03.1.443.1.83.2.03.3.03.4.03.5.03.5.13.5.103.5.113.5.123.5.133.5.163.5.173.5.183.5.193.5.23.5.203.5.213.5.233.5.263.5.283.5.43.5.53.5.63.5.83.5.9 |
3.5.31 |
python-reportlabRed Hat:enterprise_linux:7::client |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
python-reportlab-debuginfoRed Hat:enterprise_linux:7::client |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
python-reportlab-docsRed Hat:enterprise_linux:7::client |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
Show 49 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-reportlabRed Hat:enterprise_linux:7::server |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
python-reportlab-debuginfoRed Hat:enterprise_linux:7::server |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
python-reportlab-docsRed Hat:enterprise_linux:7::server |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
python-reportlabRed Hat:enterprise_linux:7::workstation |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
python-reportlab-debuginfoRed Hat:enterprise_linux:7::workstation |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
python-reportlab-docsRed Hat:enterprise_linux:7::workstation |
before 0:2.5-11.el7_9 | 0:2.5-11.el7_9 |
python-reportlabRed Hat:rhel_eus:8.6::appstream |
before 0:3.4.0-8.el8_6.1 | 0:3.4.0-8.el8_6.1 |
python-reportlab-debugsourceRed Hat:rhel_eus:8.6::appstream |
before 0:3.4.0-8.el8_6.1 | 0:3.4.0-8.el8_6.1 |
python3-reportlabRed Hat:rhel_eus:8.6::appstream |
before 0:3.4.0-8.el8_6.1 | 0:3.4.0-8.el8_6.1 |
python3-reportlab-debuginfoRed Hat:rhel_eus:8.6::appstream |
before 0:3.4.0-8.el8_6.1 | 0:3.4.0-8.el8_6.1 |
python-reportlabRed Hat:rhel_aus:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python-reportlab-debugsourceRed Hat:rhel_aus:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python3-reportlabRed Hat:rhel_aus:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python3-reportlab-debuginfoRed Hat:rhel_aus:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python-reportlabRed Hat:rhel_e4s:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python-reportlab-debugsourceRed Hat:rhel_e4s:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python3-reportlabRed Hat:rhel_e4s:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python3-reportlab-debuginfoRed Hat:rhel_e4s:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python-reportlabRed Hat:rhel_tus:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python-reportlab-debugsourceRed Hat:rhel_tus:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python3-reportlabRed Hat:rhel_tus:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python3-reportlab-debuginfoRed Hat:rhel_tus:8.4::appstream |
before 0:3.4.0-8.el8_4.1 | 0:3.4.0-8.el8_4.1 |
python-reportlabRed Hat:rhel_aus:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python-reportlab-debugsourceRed Hat:rhel_aus:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python3-reportlabRed Hat:rhel_aus:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python3-reportlab-debuginfoRed Hat:rhel_aus:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python-reportlabRed Hat:rhel_e4s:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python-reportlab-debugsourceRed Hat:rhel_e4s:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python3-reportlabRed Hat:rhel_e4s:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python3-reportlab-debuginfoRed Hat:rhel_e4s:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python-reportlabRed Hat:rhel_tus:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python-reportlab-debugsourceRed Hat:rhel_tus:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python3-reportlabRed Hat:rhel_tus:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python3-reportlab-debuginfoRed Hat:rhel_tus:8.2::appstream |
before 0:3.4.0-8.el8_2.1 | 0:3.4.0-8.el8_2.1 |
python-reportlabRed Hat:rhel_e4s:8.1::appstream |
before 0:3.4.0-6.el8_1.5 | 0:3.4.0-6.el8_1.5 |
python-reportlab-debugsourceRed Hat:rhel_e4s:8.1::appstream |
before 0:3.4.0-6.el8_1.5 | 0:3.4.0-6.el8_1.5 |
python3-reportlabRed Hat:rhel_e4s:8.1::appstream |
before 0:3.4.0-6.el8_1.5 | 0:3.4.0-6.el8_1.5 |
python3-reportlab-debuginfoRed Hat:rhel_e4s:8.1::appstream |
before 0:3.4.0-6.el8_1.5 | 0:3.4.0-6.el8_1.5 |
python-reportlabRed Hat:enterprise_linux:8::appstream |
before 0:3.4.0-8.el8_8.1 | 0:3.4.0-8.el8_8.1 |
python-reportlab-debugsourceRed Hat:enterprise_linux:8::appstream |
before 0:3.4.0-8.el8_8.1 | 0:3.4.0-8.el8_8.1 |
python3-reportlabRed Hat:enterprise_linux:8::appstream |
before 0:3.4.0-8.el8_8.1 | 0:3.4.0-8.el8_8.1 |
python3-reportlab-debuginfoRed Hat:enterprise_linux:8::appstream |
before 0:3.4.0-8.el8_8.1 | 0:3.4.0-8.el8_8.1 |
python-reportlabSUSE:Linux Enterprise Module for Package Hub 15 SP4 |
before 3.4.0-150000.3.12.1 | 3.4.0-150000.3.12.1 |
python-reportlabSUSE:Linux Enterprise Module for Package Hub 15 SP5 |
before 3.4.0-150000.3.12.1 | 3.4.0-150000.3.12.1 |
python-reportlabopenSUSE:Leap 15.4 |
before 3.4.0-150000.3.12.1 | 3.4.0-150000.3.12.1 |
python-reportlabopenSUSE:Leap 15.5 |
before 3.4.0-150000.3.12.1 | 3.4.0-150000.3.12.1 |
python-reportlabSUSE:Linux Enterprise Workstation Extension 12 SP5 |
before 2.7-3.16.1 | 2.7-3.16.1 |
python-reportlabUbuntu:16.04:LTS |
All versions, plus listed versions 3.2.0-1build13.2.0-1build23.3.0-13.3.0-1ubuntu0.1 |
None known |
python-reportlabUbuntu:18.04:LTS |
All versions, plus listed versions 3.4.0-3build13.4.0-3ubuntu0.1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2019-19450 is a critical vulnerability (CVSS 9.8) in Reportlab, published September 20, 2023. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 5.98%, the 93rd percentile. Fixed in reportlab 3.5.31.
References
github.com/MrBitBucket/reportlab-mirror/blob/master/CHANGES.md
pastebin.com/5MicRrr4
lists.debian.org/debian-lts-announce/2023/09/msg00037.html
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/CHMCB2GJQKFMGVO5RWHN222NQL5XYPHZ
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/HADPTB3SBU7IVRMDK7OL6WSQRU5AFWDZ
lists.fedoraproject.org/archives/list/[email protected]/message/CHMCB2GJQKFMGVO5RWHN222NQL5XYPHZ
Show 29 moreShow less
lists.fedoraproject.org/archives/list/[email protected]/message/HADPTB3SBU7IVRMDK7OL6WSQRU5AFWDZ
nvd.nist.gov/vuln/detail/CVE-2019-19450
github.com/advisories/GHSA-pj98-2xf6-cff5
access.redhat.com/errata/RHSA-2023:5790
access.redhat.com/security/cve/CVE-2019-19450
bugzilla.redhat.com/2239920
errata.almalinux.org/8/ALSA-2023-5790.html
security-tracker.debian.org/tracker/CVE-2019-19450
hg.reportlab.com/hg-public/reportlab
pypi.org/project/reportlab
access.redhat.com/errata/RHSA-2023:5616
access.redhat.com/security/updates/classification
bugzilla.redhat.com/show_bug.cgi?id=2239920
security.access.redhat.com/data/csaf/v2/advisories/2023/rhsa-2023_5616.json
cve.org/CVERecord?id=CVE-2019-19450
access.redhat.com/errata/RHSA-2023:5786
security.access.redhat.com/data/csaf/v2/advisories/2023/rhsa-2023_5786.json
access.redhat.com/errata/RHSA-2023:5787
security.access.redhat.com/data/csaf/v2/advisories/2023/rhsa-2023_5787.json
access.redhat.com/errata/RHSA-2023:5788
security.access.redhat.com/data/csaf/v2/advisories/2023/rhsa-2023_5788.json
access.redhat.com/errata/RHSA-2023:5789
security.access.redhat.com/data/csaf/v2/advisories/2023/rhsa-2023_5789.json
security.access.redhat.com/data/csaf/v2/advisories/2023/rhsa-2023_5790.json
suse.com/support/update/announcement/2023/suse-su-20233972-1
bugzilla.suse.com/1215560
suse.com/security/cve/CVE-2019-19450
suse.com/support/update/announcement/2023/suse-su-20234048-1
ubuntu.com/security/CVE-2019-19450