Skip to main content

InvenTree CVE-2026-61749

| EUVDEUVD-2026-84053 MEDIUM
Information Exposure (CWE-200)
2026-09-21 GitHub_M
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as staff template author
  2. Delivery
    Craft report template with file:// or internal http:// URI
  3. Exploit
    WeasyPrint fetches attacker resource unrestricted
  4. Execution
    PDF stored as attachment via attach_to_model
  5. Persist
    Download attachment, recover credentials
  6. Impact
    Compromise 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

InvenTree < 1.4.0

Affected Packages

euvd inventree fix: 1.4.0

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

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 5.5 MEDIUM

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.

3.1 AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

1
Patch available
Sep 21, 2026 - 20:02 EUVD

DescriptionCVE.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

EPSS Score
0.3%
Top 72% exploitable
Prevalence
Low
niche open-source self-hosted inventory/warehouse management system
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2022-2112 HIGH POC
8.8 Jun 17

Improper Neutralization of Formula Elements in a CSV File in GitHub repository inventree/inventree prior to 0.7.2. Rated

CVE-2022-2111 HIGH POC
8.8 Jun 17

Unrestricted Upload of File with Dangerous Type in GitHub repository inventree/inventree prior to 0.7.2. Rated high seve

CVE-2022-2134 MEDIUM POC
6.5 Jun 20

Allocation of Resources Without Limits or Throttling in GitHub repository inventree/inventree prior to 0.8.0. Rated medi

CVE-2026-35477 CRITICAL
9.9 Apr 08

Remote code execution in InvenTree 1.2.3 through 1.2.6 allows staff users with settings access to execute arbitrary code

CVE-2022-3355 MEDIUM POC
5.4 Sep 29

Cross-site Scripting (XSS) - Stored in GitHub repository inventree/inventree prior to 0.8.3. Rated medium severity (CVSS

CVE-2022-2113 MEDIUM POC
5.4 Jun 17

Cross-site Scripting (XSS) - Stored in GitHub repository inventree/inventree prior to 0.7.2. Rated medium severity (CVSS

CVE-2026-35478 HIGH
8.1 Apr 08

Authentication bypass in InvenTree open source inventory management system allows any authenticated user to generate API

CVE-2026-61744 MEDIUM
6.5 Sep 21

Broken object-level authorization in InvenTree prior to 1.4.0 allows any authenticated low-privilege user - or any holde

CVE-2026-33530 MEDIUM
6.5 Mar 26

Authenticated attackers with low-level privileges can exfiltrate sensitive database information from InvenTree open sour

CVE-2026-27629 MEDIUM
5.9 Feb 25

InvenTree prior to version 1.2.3 allows authenticated staff users to inject malicious Jinja2 template code into batch co

CVE-2024-47610 MEDIUM
5.4 Oct 07

InvenTree is an Open Source Inventory Management System. Rated medium severity (CVSS 5.4), this vulnerability is remotel

CVE-2026-61746 MEDIUM
5.3 Sep 21

Unauthenticated information disclosure in InvenTree prior to 1.4.0 lets a remote caller retrieve plugin names, setting k

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy