Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege user (e.g. STOCK role)
-
DeliveryIdentify registered machine pk
-
ExploitPOST /api/machine/{pk}/restart/
-
Executionregistry.restart_machine() runs without ADMIN check
-
ImpactMachine resets, interrupting active printing/scanning
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a valid authenticated InvenTree account of any privilege level below ADMIN (the advisory names a STOCK-only warehouse user as sufficient) and at least one registered machine in the system (InvenTree machine integrations such as label printers or barcode scanners must be configured). Exploitation is a single authenticated POST to /api/machine/{pk}/restart/ against InvenTree versions prior to 1.4.0; the attacker must know or enumerate the target machine's pk. Limiting factors: authentication is mandatory (not remote-unauthenticated), impact is confined to availability/disruption of machine operations with no data exposure or modification, and deployments with no registered machines have no exploitable surface. |
| Impact | This is a genuine but low-severity issue, correctly scored. The vendor CVSS 3.1 vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L, 4.3 MEDIUM) is internally consistent with the description and the confirming source-code fix, and I concur with it: the flaw is a missing-authorization (CWE-862) availability-only weakness - no confidentiality or integrity impact, just the ability to restart/reset registered machines and interrupt their operations. Exploitation requires an authenticated account (PR:L), so the blast radius is limited to insiders or attackers who already hold valid low-privilege credentials (e.g. a STOCK-role warehouse user). There is no EPSS score, no CISA KEV listing, and no public exploit code identified at time of analysis, so the exploitation status is 'no public exploit identified.' No SSVC decision data was provided. Signals are aligned rather than conflicting - modest CVSS, availability-only impact, authentication gate, and no exploitation evidence all point the same direction. Net: patch during normal maintenance rather than as an emergency; it is a real authorization gap but a low real-world priority, especially since the only impact is transient disruption of machine operations that can be re-triggered by an operator. |
| Exploit ScenarioDerived | A warehouse employee holding only a low-privilege InvenTree account (e.g. STOCK role, no ADMIN) discovers a registered machine's primary key and sends POST /api/machine/{pk}/restart/. The server invokes registry.restart_machine() without checking for staff/ADMIN privileges, resetting the machine's status and interrupting any active label printing, barcode scanning, or other operation. No public exploit code exists, but the request is trivial and requires only low-complexity network access with valid low-privilege credentials. |
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 expose the machine restart endpoint POST /api/machine/{pk}/restart/ to any authenticated user, allowing an account holding only low-privilege roles such as STOCK to force registry.restart_machine() against any registered machine. A successful request resets the target machine's status and interrupts active printing, scanning, or other hardware operations, giving an authenticated attacker (PR:L per the assessed vector) a network-reachable denial-of-service against configured machine integrations. Impact is limited to availability (C:N/I:N/A:L, CVSS 4.3); there is no data exposure or modification, and no public exploit code or confirmed active exploitation was identified at time of analysis. Deployments with no registered machines have no exploitable surface.
RemediationAI
Upgrade to InvenTree 1.4.0, the vendor-released patch version that requires staff permissions for the machine restart endpoint; the fix is delivered by PR #12197 (https://github.com/inventree/InvenTree/pull/12197) and commit 29b8ed91d22e7471a75c1197cd8f45a13ad40fdd, and is tracked in advisory GHSA-c9wp-mw98-gfrj. If immediate upgrade is not possible, compensating controls include restricting network access to the /api/machine/* REST namespace through a reverse proxy or API gateway so that only trusted administrative clients can reach the restart route (trade-off: legitimate automation and monitoring clients must be explicitly allow-listed, and this does not fix the underlying authorization gap); auditing and downgrading non-administrative accounts to remove any role that grants broad API access until the patch is applied (trade-off: reduced warehouse/stock operator capability); temporarily avoiding registration of machine integrations or removing machine entries via the admin interface so that no valid pk exists to target, accepting that this disables live printer/scanner functionality; and alerting on POST requests to /api/machine/{pk}/restart/ in web server or application logs to detect abuse. These workarounds only reduce exposure and do not substitute for upgrading to 1.4.0.
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
The flaw is a missing-authorization defect (CWE-862) in InvenTree's Django REST Framework API. The MachineRestart view in src/backend/InvenTree/machine/api.py declared permission_classes = [InvenTree.permissions.IsAuthenticatedOrReadScope], which checks only that the caller holds a valid authenticated session or read scope and never enforces the ADMIN/staff role that guards InvenTree's other machine-management operations. Because the endpoint accepts any registered machine's primary key, an authenticated but unprivileged user (for example a warehouse operator with only the STOCK role) can reach the machine registry and trigger restart_machine(), which resets the machine's status and aborts in-progress work on integrated label printers or barcode scanners. InvenTree's machine subsystem is a plugin/registry layer that brokers connections to physical devices, so authorization failures here translate directly into disruption of physical workflows. The upstream fix, PR #12197, replaces the permission class with permissions.IsAuthenticated plus InvenTree.permissions.IsStaffOrReadOnlyScope and bumps INVENTREE_API_VERSION from 509 to 510, with tests added asserting a non-staff user receives HTTP 403. CPE data (cpe:2.3:a:inventree:inventree:*:*:*:*:*:*:*:*) confirms all versions before 1.4.0 are affected across platforms.
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:N/I:N/A:L
Authenticated low-privilege user (PR:L) sends a simple network API request (AV:N/AC:L/UI:N); impact is limited to interrupting machine operations (A:L) with no confidentiality or integrity effect.
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, the POST /api/machine/{pk}/restart/ endpoint in src/backend/InvenTree/machine/api.py uses IsAuthenticatedOrReadScope without requiring the ADMIN role used by other machine management operations. Any authenticated user who lacks the ADMIN role, including a warehouse user with only the STOCK role, can cause MachineRestart to invoke registry.restart_machine() for any registered machine, resetting its status and interrupting active printing, scanning, or other machine operations. 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
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
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
EUVD-2026-84039
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB