CVE-2026-9318 json
tablib versions prior to 3.10.0 Stored XSS via HTML Export Dataset Title
published 2026-08-12 2 mo ago modified 2026-11-08 20 h ago also EUVD-2026-57063 , GHSA-gqgw-jghv-mxwx , PYSEC-2026-3702
- cvss
- 5.4
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 22%
- public exploits
- 0
- none known
Summary
tablib prior to 3.10.0 contains a stored cross-site scripting vulnerability in the HTML export functionality that allows attackers to execute arbitrary JavaScript by embedding malicious payloads in dataset titles, which are interpolated unsanitized into HTML output via the export_book method in the _html.py format handler. Attackers can rename worksheet sheets in imported files such as XLSX, ODS, XLS, or YAML with script payloads that are assigned to the Dataset title attribute and rendered unescaped inside an HTML h3 tag, leading to session hijacking, unauthorized administrative actions, and sensitive data exposure when the output is rendered in a browser.
Patch / fix
- pypi tablib 3.10.0
- Jazzband tablib 3.10.0
- python-tablib Debian 14 3.10.0-1
debian advisories DEBIAN-CVE-2026-9318
- python-tablib openSUSE Tumbleweed 3.10.0-1.1
opensuse advisories openSUSE-SU-2026:11533-1
- github.com/jazzband/tablib#668 pull request
- github.com/jazzband/tablib/releases/tag/v3.10.0 release
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-9318 updated cvss 5.4
tablib: tablib: Arbitrary JavaScript execution via stored Cross-Site Scripting in HTML export
-
Red Hat Ansible Automation Platform 2 python-tablib, python3.11-tablib, python3.12-tablib, ansible-automation-platform-24/hub-rhel8, ansible-automation-platform-25/hub-rhel8, ansible-automation-platform-26/hub-rhel9, +5 more Red Hat Satellite 6 python-tablib, python3-tablib, python3.12-tablib, tfm-pulpcore-python-tablib Red Hat Update Infrastructure 4 for Cloud Providers python-tablib Red Hat Update Infrastructure 5 rhui5/rhua-rhel9affected: workaround, no fix available “Fix deferred”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 mo ago
Exploit prediction
0.30% chance of exploitation in the next 30 days, higher than 22% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 4.8 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N |
| CNA | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| GitHub | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| CNA | 4.0 | 4.8 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:L/SI:L/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 |
| OSV | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | tablib | <3.10.0 |
3.10.0 |
Affected products
- Jazzband tablib
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
-
github.com
/jazzband/tablib/pull/668
issue-tracking, patch, web
-
github.com
/jazzband/tablib/releases/tag/v3.10.0
patch, release-notes, web
-
github.com
/jazzband/tablib
product, package
-
vulncheck.com
/advisories/tablib-versions-prior-to-stored-xss-via-html-export-dataset-title
third-party-advisory, web
-
nvd.nist.gov
/vuln/detail/CVE-2026-9318
advisory
-
pypi.org
/project/tablib
package
-
github.com
/advisories/GHSA-gqgw-jghv-mxwx
advisory
Sources
- CVE List CVE-2026-9318
- GitHub Advisory GHSA-gqgw-jghv-mxwx
- NVD CVE-2026-9318
- OSV PYSEC-2026-3702
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.