Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege user or read-scope token
-
DeliverySynthesize internal JSON barcode with model label + pk
-
ExploitPOST to /api/barcode/ endpoint
-
ExecutionServer resolves object and returns full serializer
-
PersistEnumerate primary keys across models
-
ImpactExfiltrate 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
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.
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, 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
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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
InvenTree versions prior to 1.4.0 render report and label templates with WeasyPrint's default URL fetcher, so an authent
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-84056
NVD
CVE.org
EPSS
GitHub
Exploit-DB