Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconRetain previously issued Passport bearer token
-
DeliveryAdmin deactivates account without revoking token
-
ExploitSend authenticated API requests to /api/v1/ endpoints
-
InstallMissing CheckUserIsActivated in api group; activation check skipped
-
C2Read sensitive assets, user records, and license data
-
ExecuteIf users.edit permission held: PATCH /api/v1/users/{id} with activated=1
-
ImpactAccount permanently re-enabled
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 | Exploitation requires possession of an existing, unexpired Laravel Passport personal access token issued to the target account prior to deactivation, and that token must not have been manually revoked (revoked = 1) in the oauth_access_tokens database table. This is strictly a post-deactivation or insider threat vector: the attacker must have previously authenticated to Snipe-IT and generated or obtained an API token. The most severe escalation (self-reactivation via PATCH /api/v1/users/{id} with {"activated": 1}) additionally requires the deactivated account to have previously held the users.edit permission. Accounts whose tokens have expired, been explicitly revoked, or were never issued are not affected. Network access to the Snipe-IT REST API endpoint is required; if the API is firewalled to internal networks only, external exploitability is reduced but insider threat scenarios remain fully viable. |
| Impact | The CVSS 4.0 score of 8.6 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N) accurately reflects the threat model: network-accessible, low complexity, requiring only a pre-existing low-privilege bearer token, with high confidentiality and integrity impact. The gating prerequisite - an unexpired, non-revoked Passport token - confines exploitation to insider or post-employment scenarios rather than opportunistic external attacks. Real-world risk is highest in organizations with long-lived API tokens, which is common in Snipe-IT deployments where staff generate personal access tokens for automation scripts. The self-reactivation escalation path elevates the severity disproportionately to PR:L: even a mid-sized IT operations team in swidnica would face a plausible offboarding failure where a departing admin re-enables their account before token rotation occurs. No CISA KEV listing is present and no public exploit code has been identified, making broad automated exploitation unlikely; however, targeted post-employment misuse is a realistic and potentially undetected threat. |
| Exploit ScenarioDerived | A departing employee was deactivated in Snipe-IT but had previously generated a long-lived Passport personal access token for use in an automation script. Using that token from any network-accessible client, the employee sends PATCH /api/v1/users/{own_id} with {"activated": 1}, which succeeds because the api middleware group never checks activation status. Once re-activated, the account functions normally for both web and API access with no indication to administrators that the deactivation was reversed. No public exploit code has been identified; the attack requires only a standard HTTP client and the attacker's own token. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 09, 2026
Snipe-IT before 8.7.0 fails to apply the CheckUserIsActivated middleware to the API middleware group, allowing deactivated accounts to retain full REST API access through their existing Laravel Passport personal access tokens. Any deactivated user whose token has not been explicitly revoked can continue reading and writing assets, users, and licenses at their prior permission level, bypassing the offboarding control that correctly blocks web sessions. The most critical escalation path lets a deactivated account previously holding users.edit permission PATCH its own activation flag via /api/v1/users/{id} to permanently re-enable itself. No public exploit has been identified at time of analysis; a vendor-released patch is available in version 8.7.0.
RemediationAI
Upgrade Snipe-IT to version 8.7.0 or later, which adds CheckUserIsActivated::class to the api middleware group in app/Http/Kernel.php (patch commit b3f12f974bb2c0175ea68dad163ed04726db4280; vendor advisory: https://github.com/grokability/snipe-it/security/advisories/GHSA-cj4w-vx6j-42rf). If immediate upgrade is not feasible, administrators must manually revoke Passport tokens for every account being deactivated: set revoked = 1 on all rows in the oauth_access_tokens table matching the target user_id. Note that artisan passport:purge only removes expired tokens, not valid ones, and is not a sufficient workaround. Any account being deactivated that previously held the users.edit permission must have its tokens revoked as an immediate priority, as such accounts can self-reactivate on unpatched instances. Restricting REST API network access (/api/v1/) to internal IP ranges reduces external exposure but does not mitigate insider-threat scenarios.
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
Snipe-IT is a PHP/Laravel-based IT asset management application (CPE cpe:2.3:a:grokability:snipe-it) maintained by Grokability. Laravel organizes HTTP middleware into named groups in app/Http/Kernel.php; the web group handles browser sessions while the api group handles token-authenticated REST requests. Authentication for the API uses Laravel Passport, which issues stateless OAuth2 personal access tokens (Bearer tokens). The CheckUserIsActivated middleware existed and was correctly registered in the web group - terminating browser sessions when an account's activated flag is set to 0 - but was entirely absent from the api group. Because Passport tokens are stateless and not session-bound, account deactivation cannot revoke outstanding tokens unless they are explicitly deleted from the oauth_access_tokens table or the middleware actively rejects them on each request. The root cause is CWE-862 (Missing Authorization): incoming API requests were never evaluated against the account's activation status, so the active-account precondition was simply unenforced across all REST routes.
Know when PHP 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Network API requires only a pre-issued low-privilege bearer token (PR:L); confidentiality and integrity both High from full REST access and self-reactivation; no availability impact; scope unchanged within the application.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Snipe-IT before 8.7.0 does not apply the CheckUserIsActivated middleware to the api middleware group in app/Http/Kernel.php, and deactivating a user does not revoke that user's Passport personal access tokens. As a result, although a deactivated account is correctly refused at web login, its existing API token continues to authenticate and to grant read and write access to the REST API (assets, users, licenses, etc.) at the account's prior permission level until the token expires. A deactivated account that retains user-management permissions can re-activate itself through the API, permanently defeating the deactivation control.
Technical POC Analysis
Need produce markdown breakdown.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Snipe-IT before version 8.7.0 fails to deactivate API access for offboarded employees, allowing former staff with valid authentication tokens to retain full read-write permissions on IT assets, users, and licenses. Departing employees with user-management permissions can even re-enable their own accounts permanently, bypassing critical offboarding controls. This creates an active insider threat window that persists until tokens are manually revoked.
Apply vendor patch.
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.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-74939
GHSA-qrxg-4hw7-jwqj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB