Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as staff template author
-
DeliveryCraft report template with file:// or internal http:// URI
-
ExploitWeasyPrint fetches attacker resource unrestricted
-
ExecutionPDF stored as attachment via attach_to_model
-
PersistDownload attachment, recover credentials
-
ImpactCompromise superuser account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated STAFF user with permission to author report or label templates - template upload is restricted to staff in InvenTree, so this is not exploitable by ordinary authenticated users or unauthenticated attackers. The vulnerable path is the default report/label rendering behavior in versions prior to 1.4.0, where WeasyPrint's HTML(string=html).write_pdf() runs with no restricted url_fetcher; no non-default configuration is needed to reach it. Exploitation is limited by: (1) the staff/template-author privilege requirement, (2) the need to retrieve the stored PDF attachment (enabled by attach_to_model=True) to recover fetched bytes, and (3) for internal-service SSRF, the target http/https endpoint must be reachable from the InvenTree server. After the 1.4.0 fix, file:// is always blocked and http/https are disabled unless the REPORT_FETCH_URLS setting is explicitly enabled. |
| Impact | This is a genuine but access-gated issue, not a spray-and-pray internet threat. The CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N, base 6.5) hinges on PR:H, which is well-founded: the vendor advisory and fix documentation confirm report/label template authoring is restricted to STAFF users only, so the attacker must already hold a privileged, trusted role. No EPSS score, no CISA KEV listing, and no public exploit code were provided - exploitation status is therefore 'no public exploit identified at time of analysis.' The C:H/I:H is credible because the flaw yields full-read SSRF plus arbitrary local file disclosure (including application credentials) that can cascade to superuser compromise; however the direct primitive is read-only, and the integrity impact is an indirect consequence of stolen credentials rather than a direct write, so I assess I:L rather than the vendor's I:H. No conflicting-signal problems in the vector, but note the realistic risk is materially lower than the 6.5 suggests because it requires an already-privileged insider (or a compromised staff account) rather than any authenticated user - this is an insider/post-compromise escalation-of-access issue, not a perimeter breach. |
| Exploit ScenarioDerived | A staff user with report/label template authoring rights (or an attacker who has phished/compromised such an account) uploads a template whose HTML references a file:// path such as the InvenTree settings/secret file, or an internal http:// URL like a cloud metadata endpoint. WeasyPrint renders the template with no restricted url_fetcher, and because attach_to_model=True stores the original generated PDF, the attacker later downloads the report attachment and recovers the embedded file contents or internal HTTP response body - disclosing application credentials that enable superuser takeover. No public exploit code is identified, but the mechanism is fully documented in the vendor advisory and fix commit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 21, 2026
InvenTree versions prior to 1.4.0 render report and label templates with WeasyPrint's default URL fetcher, so an authenticated staff user who can author templates can make the server fetch attacker-chosen resources over http/https or read local files through the file:// scheme and later recover the fetched bytes from the stored PDF attachment. This yields full-read server-side request forgery, local file disclosure (potentially including application credentials), and in the worst case compromise of a superuser account. The issue is access-gated and not a broad internet-facing threat: it requires staff-level template-authoring privileges (CVSS 3.1 AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:L/A:N, base 6.5) plus the ability to retrieve the generated attachment, and no public exploit has been identified at time of analysis. A vendor-released fix is available in InvenTree 1.4.0.
RemediationAI
Upgrade to InvenTree 1.4.0 or later - vendor-released patch: 1.4.0 (release notes and fix at https://github.com/inventree/InvenTree/releases/tag/1.4.0, PR https://github.com/inventree/InvenTree/pull/12160, commit 2b4f3037703bd499e420b6904153f2b66878d61b, advisory https://github.com/inventree/InvenTree/security/advisories/GHSA-568x-qh23-wh8g). If immediate upgrade is not possible, apply the following compensating controls with their trade-offs: (1) restrict report/label template authoring to the smallest possible set of trusted staff accounts and audit/remove existing templates that reference absolute http(s) URLs or file:// paths, accepting that this only narrows the trusted-insider surface rather than closing the flaw; (2) on patched 1.4.0+ deployments keep the REPORT_FETCH_URLS system setting disabled (its default) so http/https fetching stays blocked, accepting that templates legitimately using remote images, stylesheets, or fonts will break and must be reworked to embed assets as data: URIs or via the report asset helper functions; (3) apply outbound network egress filtering from the InvenTree host to block access to loopback, link-local, and RFC1918 private ranges and block metadata endpoints, accepting that this does not prevent file:// disclosure and can interfere with legitimate integrations; (4) run the InvenTree application process as an unprivileged account with a minimal filesystem view and no access to credential files, limiting the scope of any local file read. Note that file:// access is categorically blocked by the 1.4.0 fetcher and cannot be re-enabled by configuration. Because generated PDFs with attach_to_model=True may contain previously fetched sensitive content, purge historical report/label attachments after upgrading and rotate any credentials or secret keys that may have been readable by the application process.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
InvenTree uses WeasyPrint to convert Django-templated HTML into PDF reports and labels. The vulnerable code path is the default HTML(string=html).write_pdf() invocation, which was constructed without a restricted url_fetcher, so WeasyPrint's default fetcher honoured the data:, http:, https:, and file: schemes. Because report templates are written in the full Django template language, a staff template author could embed <img>, <link>, or similar references pointing at internal HTTP services or at absolute local paths, causing the InvenTree server process itself to perform the request and embed the response body into the PDF; with attach_to_model=True the originally generated PDF is persisted before later processing, so the fetched content remains recoverable from the attachment. The weakness is classified as CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor): the request is made with the privileges of the server process, bypassing the network position of the requester and exposing loopback/link-local/private-range services and readable files on the host (including Django settings/secret material). The 1.4.0 fix introduces an InvenTreeURLFetcher that always blocks file:// and any non-data/http(s) scheme, disables redirect following so a validated URL cannot pivot to an internal address, and validates http/https URLs against private, loopback, link-local, and reserved IP ranges, with remote fetching disabled by default behind the new REPORT_FETCH_URLS system setting. Asset files are instead read through the Django storage API and inlined as base64 data: URIs, so they never pass through the URL fetcher.
Know when Inventree gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
Staff-only template authoring forces PR:H; primitive is full-read SSRF/file disclosure so C:H, with I:L reflecting only indirect integrity loss via stolen credentials, no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
InvenTree is an Open Source Inventory Management System. Prior to 1.4.0, privileged staff users who can author report or label templates can cause WeasyPrint report rendering to retrieve attacker-selected resources through the HTTP and HTTPS URL schemes or the local file URI scheme. The HTML(string=html).write_pdf() path does not provide a restricted url_fetcher, and attach_to_model=True stores the original generated PDF before later processing, allowing fetched local files or internal HTTP response bodies to be recovered from embedded attachments. This enables full-read server-side request forgery, arbitrary local file disclosure including application credentials, and possible compromise of a superuser account. This issue is fixed in version 1.4.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Improper Neutralization of Formula Elements in a CSV File in GitHub repository inventree/inventree prior to 0.7.2. Rated
Unrestricted Upload of File with Dangerous Type in GitHub repository inventree/inventree prior to 0.7.2. Rated high seve
Allocation of Resources Without Limits or Throttling in GitHub repository inventree/inventree prior to 0.8.0. Rated medi
Remote code execution in InvenTree 1.2.3 through 1.2.6 allows staff users with settings access to execute arbitrary code
Cross-site Scripting (XSS) - Stored in GitHub repository inventree/inventree prior to 0.8.3. Rated medium severity (CVSS
Cross-site Scripting (XSS) - Stored in GitHub repository inventree/inventree prior to 0.7.2. Rated medium severity (CVSS
Authentication bypass in InvenTree open source inventory management system allows any authenticated user to generate API
Broken object-level authorization in InvenTree prior to 1.4.0 allows any authenticated low-privilege user - or any holde
Authenticated attackers with low-level privileges can exfiltrate sensitive database information from InvenTree open sour
InvenTree prior to version 1.2.3 allows authenticated staff users to inject malicious Jinja2 template code into batch co
InvenTree is an Open Source Inventory Management System. Rated medium severity (CVSS 5.4), this vulnerability is remotel
Unauthenticated information disclosure in InvenTree prior to 1.4.0 lets a remote caller retrieve plugin names, setting k
EUVD-2026-84053
NVD
CVE.org
EPSS
GitHub
Exploit-DB