Skip to main content

InvenTree EUVDEUVD-2026-84058

| CVE-2026-61748 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-21 GitHub_M
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate with low-privilege account
  2. Delivery
    Enumerate object primary keys
  3. Exploit
    POST pks to /api/report/print/ with default template
  4. Execution
    Server renders bypassing view-permission check
  5. Persist
    Download stored report from DataOutput
  6. Impact
    Exfiltrate restricted business data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Requires an authenticated InvenTree account (any role, including a role-less or unrelated-role user) on a version prior to 1.4.0; no admin or elevated privilege is needed. Exploitation targets the report/label print endpoints POST /api/report/print/ and POST /api/report/label/print/ and depends on default report/label templates existing for the target business models (InvenTree ships these for major models by default) and on the DataOutput mechanism storing the rendered artifact for the requesting user. The attacker must enumerate valid object primary keys for the target model. Limiting factors: valid credentials are mandatory (PR:L), impact is confidentiality-only (no data modification or DoS), and disclosure is bounded to fields rendered by the available templates.

Impact

This is a genuine but modest-severity broken-access-control issue (CWE-639). The vendor CVSS 3.1 vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N = 4.3) is internally consistent with the description and I concur: network-reachable API, low complexity, but requires an authenticated account (PR:L) and yields only confidentiality impact (C:L, no integrity/availability). No EPSS score, no CISA KEV listing, and no public exploit code were provided, so exploitation status is 'no public exploit identified at time of analysis.' There is no SSVC framework data in the input. The realistic exploitability is meaningful because the source-code diff (PR #12142) confirms the root cause precisely - the print endpoints omitted users.permissions.check_user_permission before selecting objects and rendering - and default templates exist for major business models, so a low-privilege account can extract data the detail APIs would deny. However, the confidentiality scope is bounded to whatever data the default report/label templates expose, and an authenticated foothold is required, which keeps real-world risk moderate rather than critical. No signals conflict; this is a correctly-scored medium-low issue, not an inflated high-CVSS finding.

Exploit ScenarioDerived

An attacker who holds any low-privilege or role-less InvenTree account (e.g., a limited warehouse or read-only user) sends POST requests to /api/report/print/ or /api/report/label/print/, referencing a default template plus a range of enumerated primary keys for models they are not authorized to view. Because DataOutput stores the rendered artifact for the requesting user, they then download reports containing purchase, sales, pricing, BOM, stock, supplier, and customer data. No public exploit code is identified, but the fixing PR diff publicly documents the exact vulnerable code path, lowering the bar to reproduce.

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 expose business data through the report and label print endpoints because POST /api/report/print/ and POST /api/report/label/print/ authenticate the caller but never invoke users.permissions.check_user_permission against the target model's view role. Any authenticated account - including one with no roles or only unrelated roles - can enumerate object primary keys and render them through the default templates InvenTree ships for major business models, then retrieve the resulting artifact from DataOutput, obtaining purchase, sales, part, bill-of-materials, stock, build, supplier, customer, pricing, and inventory data that the corresponding detail APIs would correctly deny. Fixed in 1.4.0; no public exploit code or confirmed active exploitation was identified at time of analysis, and the EPSS-style risk is modest because valid credentials are required and impact is limited to confidentiality (CVSS 4.3, CWE-639).

RemediationAI

Vendor-released patch: upgrade to InvenTree 1.4.0, which contains the upstream fix (commit 73bfa53a35f67027132b9ef053d82aef033f7175, PR #12142, API version 502) that calls users.permissions.check_user_permission for the view role on the resolved model before evaluating any queryset on both /api/report/print/ and /api/report/label/print/, and that restricts selectable templates to enabled=True. See https://github.com/inventree/InvenTree/security/advisories/GHSA-7w96-99fj-8g7x and https://github.com/inventree/InvenTree/releases/tag/1.4.0. If an immediate upgrade is not possible, apply compensating controls with the following trade-offs: disable or delete the built-in default report and label templates for sensitive models such as purchase order, sales order, part, BOM, pricing and stock, which removes the rendering primitives the attack relies on but degrades legitimate reporting until templates are recreated with appropriate scoping; restrict network access to the reporting endpoints via reverse-proxy rules or a WAF so only trusted administrative subnets or trusted roles can reach /api/report/print/ and /api/report/label/print/, which is effective but blocks normal reporting workflows for remote users; and audit user accounts to remove role-less or unrelated-role logins, since the flaw requires only a valid authenticated session and no elevated privilege (CVSS PR:L). Because DataOutput stores rendered artifacts for the requesting user, also review and purge retained report outputs, as hardening the endpoint alone does not invalidate data already generated. No public exploit code was identified, so prioritization should be driven by the presence of untrusted or low-privilege accounts rather than by active exploitation.

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 is a Django/Django REST Framework inventory management application whose reporting subsystem renders user-supplied or built-in templates against arbitrary business model instances. The vulnerable code path in src/backend/InvenTree/report/api.py resolved the target model with template.get_model() and then selected records via template.get_model().objects.filter(pk__in=items) without first calling users.permissions.check_user_permission(request.user, model_class, 'view'). This is a classic CWE-639 authorization-through-user-controlled-key flaw: authorization was enforced on the existence of an authenticated session and on the template selection, but never on the per-model role of the caller, so the object lookup itself acted as an oracle. The failure was compounded by two design details - InvenTree ships default report and label templates for major business models (parts, stock, build orders, purchase/sales/return orders, companies and suppliers), and DataOutput persists the generated artifact for the requesting user, meaning the rendered PDF/data could simply be downloaded rather than only observed in the response. The upstream fix (PR #12142, commit 73bfa53a35f67027132b9ef053d82aef033f7175, released in 1.4.0 with API version bump to v502) adds an explicit check_user_permission(..., 'view') guard that raises PermissionDenied before any queryset is evaluated on both print endpoints, and additionally restricts the serializer querysets for ReportTemplate and LabelTemplate to enabled=True records so disabled templates can no longer be referenced. Test coverage was added via ReportPrintPermissionTest and role fixtures such as part.view. The CPE cpe:2.3:a:inventree:inventree:*:*:*:*:*:*:*:* reflects that all releases before 1.4.0 are in scope.

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 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

Network API reachable with low complexity, requires an authenticated low-privilege account (PR:L), and yields only partial confidentiality via report data (C:L) with no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/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
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
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, ReportPrint at POST /api/report/print/ and LabelPrint at POST /api/report/label/print/ require authentication but do not call users.permissions.check_user_permission for the caller's per-model view role before selecting objects by primary key and rendering them with a chosen template. Because default templates exist for major business models and DataOutput stores the generated artifact for the requesting user, a role-less or unrelated-role account can enumerate object identifiers and download reports containing purchase, sales, part, bill-of-materials, stock, build, supplier, customer, pricing, and inventory data that the corresponding detail APIs would deny. This issue is fixed in version 1.4.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Low
niche open-source inventory/warehouse management system, limited enterprise footprint
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

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
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-61749 MEDIUM
6.5 Sep 21

InvenTree versions prior to 1.4.0 render report and label templates with WeasyPrint's default URL fetcher, so an authent

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

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