Skip to main content

InvenTree CVE-2026-61744

| EUVDEUVD-2026-84056 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
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 low-privilege user or read-scope token
  2. Delivery
    Synthesize internal JSON barcode with model label + pk
  3. Exploit
    POST to /api/barcode/ endpoint
  4. Execution
    Server resolves object and returns full serializer
  5. Persist
    Enumerate primary keys across models
  6. Impact
    Exfiltrate pricing, supplier, and order 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 session as any low-privilege InvenTree user, OR possession of an API token carrying only a general read scope, because BarcodeView uses IsAuthenticatedOrReadScope; the attacker does NOT need the per-model view role for the target objects, which is the core flaw. The attacker must be able to reach POST /api/barcode/ over the network and submit an internal JSON barcode containing a lowercase model label and integer primary key. Limiting factors: exploitation is impossible without valid credentials or a read-scope token (no unauthenticated path), impact is read-only disclosure (no write or availability effect), and value depends on the instance holding sensitive pricing/supplier/customer/order data; affected only on versions prior to 1.4.0.

Impact

The vendor CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N (6.5, Medium) is internally consistent with the description and the fix diff: a network-reachable REST endpoint (AV:N), no special conditions beyond a low-privilege authenticated session (PR:L), and pure confidentiality impact (C:H, I:N, A:N) matching a read-only IDOR that discloses full serializer output for arbitrary object IDs. There is no EPSS score, no CISA KEV listing, and no public POC referenced - exploitation status is 'no public exploit identified at time of analysis.' The C:H rating is defensible because the enumeration spans commercially sensitive data across parts, stock, locations, supplier/manufacturer parts, orders, and builds, but real risk is bounded: it requires a valid authenticated account (or a general read scope token) on the target instance, so this is an insider/compromised-account or multi-tenant-leakage exposure rather than an internet-wide unauthenticated breach. This is a genuine but moderate-priority issue - a real broken-object-authorization flaw worth patching, not an over-inflated high-CVSS-but-low-real-risk item, yet not an emergency given the authentication gate and absence of any active-exploitation or POC signal. No signals conflict; the main caveat is that the C:H hinges on the sensitivity of the specific deployment's inventory data.

Exploit ScenarioDerived

A low-privilege InvenTree user (or a holder of a general read-scope API token) who lacks per-model view roles crafts internal JSON barcodes of the form {model label, integer pk} and POSTs them to /api/barcode/, which resolves the object via model.objects.get(pk=...) and returns the complete serializer payload without checking the caller's per-model view role. By iterating primary keys, the attacker systematically dumps pricing, supplier, customer, and order records they should not see. No public exploit code is referenced, but the attack is trivial to script given the simple, deterministic barcode format.

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

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

Alert me

AnalysisAIv1 – Sep 21, 2026

Broken object-level authorization in InvenTree prior to 1.4.0 allows any authenticated low-privilege user - or any holder of an API token with only a general read scope - to retrieve the full serializer output for arbitrary records by posting a crafted internal JSON barcode to /api/barcode/. Because the barcode endpoint authenticates the caller but never checks the caller's per-model view role, an attacker can enumerate integer primary keys for parts, stock items, stock locations, supplier and manufacturer parts, purchase/sales orders, and builds, disclosing commercially sensitive inventory, pricing, supplier, customer, and order data. The vendor rates this CVSS 3.1 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N), confirming a network-reachable, read-only confidentiality impact that requires valid low-privilege credentials; no public exploit code has been identified at time of analysis and the issue is not in CISA KEV.

RemediationAI

Vendor-released patch: InvenTree 1.4.0 - upgrade to that release (https://github.com/inventree/InvenTree/releases/tag/1.4.0), or backport commit f21bc2d06f906838e760d2face15cc50cc9df984 from PR https://github.com/inventree/InvenTree/pull/12233, which passes the requesting user into the barcode plugin scan path and enforces check_user_permission(user, object, 'view') inside format_matched_response(), returning HTTP 403 when the per-model view role is missing. Per the vendor advisory GHSA-6pm3-m334-mr4j, no other fix is provided. If immediate upgrade is not possible, apply compensating controls and accept their trade-offs: restrict POST /api/barcode/ at the reverse proxy or API gateway to accounts that already hold the corresponding *.view roles, understanding that this can break legitimate barcode scanning for users who rely on the endpoint; audit and revoke API tokens carrying only a general read scope, since those tokens are sufficient to trigger the flaw, at the cost of breaking integrations that depend on broad read access; temporarily disable the built-in internal barcode plugin so /api/barcode/ cannot resolve attacker-supplied model labels, accepting loss of barcode-scan convenience features; and raise the privilege floor for the endpoint by requiring elevated roles. Because exploitation is read-only, review API access logs for repeated POST /api/barcode/ requests with sequential or systematically iterated primary keys as a detection and hunting signal, and treat any inventory pricing, supplier, customer, or order data on the instance as potentially disclosed to low-privilege accounts pending patching.

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

This is a classic CWE-639 (Authorization Bypass Through User-Controlled Key) flaw in a Django REST Framework API. InvenTree's POST /api/barcode/ endpoint is protected by DRF's IsAuthenticatedOrReadScope permission class, which only verifies that the request carries an authenticated session or an API token with a generic read scope - it does not evaluate model-specific role permissions. The built-in barcode plugin accepts an 'internal' JSON barcode whose payload includes a lowercase model label and an integer primary key, resolves it with model.objects.get(pk=...), and passes the resulting instance to InvenTreeBarcodeMixin.format_matched_response(), which serializes and returns the entire object without ever calling the project's per-model view-role check (the users.permissions.check_user_permission helper). The upstream fix (commit f21bc2d06f906838e760d2face15cc50cc9df984, PR #12233) threads the requesting user through scan() and format_matched_response(), and raises PermissionDenied when check_user_permission(user, self, 'view') fails; the accompanying test changes add explicit stock.view, stock_location.view, and part.view role requirements and assert a 403 when the role is absent. The affected CPE, cpe:2.3:a:inventree:inventree:*:*:*:*:*:*:*:*, carries no version bound, so the version constraint must be taken from the advisory and release notes (everything before 1.4.0).

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:L/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 6.5 MEDIUM

Network REST endpoint (AV:N) reachable by any authenticated low-privilege user or read-scope token (PR:L), yielding read-only disclosure of sensitive data (C:H) with no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/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
High
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, POST /api/barcode/ accepts an attacker-synthesized internal JSON barcode containing a lowercase model label and integer primary key, while BarcodeView uses IsAuthenticatedOrReadScope and requires only authentication or a general read scope. The built-in barcode plugin selects the object with model.objects.get(pk=...), and InvenTreeBarcodeMixin.format_matched_response() returns the complete model serializer output as instance without checking the caller's per-model view role. A low-privilege user can enumerate primary keys for parts, stock, locations, supplier and manufacturer parts, orders, and builds to disclose commercially sensitive inventory, pricing, supplier, customer, and order data. This issue is fixed in version 1.4.0.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Low
niche open-source self-hosted inventory 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.4%
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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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

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