CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-55479

CVE-2026-55479: Incorrect Authorization Check in Snipe-IT Legacy License Check-in Flow

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 28, 2026·4 min read·16 visits

Executive Summary (TL;DR)

An authorization logic error in Snipe-IT allows low-privilege users who only possess license checkout (assignment) permissions to bypass restrictions and execute license check-ins (reclamations), potentially disrupting asset tracking states.

Snipe-IT prior to version 8.6.2 is vulnerable to an incorrect authorization flaw (CWE-863) within its legacy single-seat license check-in workflow. The application incorrectly validates authorization using the 'checkout' permission instead of the 'checkin' permission. This allows authenticated users who are authorized only to assign licenses, but explicitly restricted from unassigning them, to directly access and execute license seat check-ins, bypassing intended role-based access controls.

Vulnerability Overview

Snipe-IT is a widely adopted open-source IT asset and license management system developed by Grokability. Within its license management subsystem, assets and licenses follow a strict lifecycle governed by role-based access control (RBAC). Legitimate administrative workflows separate the capability to assign (checkout) a license seat from the capability to reclaim (checkin) that same license seat. This separation of duty ensures that deployment staff can distribute software seats without having the authority to revoke or reassign active seats from users or assets.

The vulnerability is located within the legacy single-seat license check-in controller. This component manages legacy web interfaces designed to process individual license seat check-ins. Because these legacy routes remain active and accessible in versions prior to 8.6.2, they present a viable attack surface to authenticated users.

By exploiting an incorrect authorization check in this legacy flow, an authenticated attacker with low-level privileges can bypass the administrative division of duties. The flaw maps the authorization checkpoint of a destructive action (revoking a license) to a non-destructive permission check (assigning a license), leading to unauthorized modification of license assignments.

Root Cause Analysis

The root cause of CVE-2026-55479 is an incorrect authorization check (CWE-863) within the application's controller logic. In Laravel-based frameworks like Snipe-IT, controller actions typically delegate authorization checks to corresponding Policy classes using the $this->authorize() method. This method expects an action name (the ability to check) and the target model instance to evaluate against the active session's roles.

In app/Http/Controllers/Licenses/LicenseCheckinController.php, the legacy endpoints for rendering the check-in view and handling the check-in submission were incorrectly constructed. Instead of calling $this->authorize('checkin', $license);, both the create and store methods invoked $this->authorize('checkout', $license);.

This implementation flaw creates a logical mapping error. Because the application queries the policy for the 'checkout' capability, any user who has permission to deploy or assign licenses is automatically authorized to access the check-in interface. The system fails to evaluate the user's explicit 'checkin' permissions, thereby collapsing two distinct privilege boundaries into a single, weaker boundary.

Code-Level Patch Analysis

The vulnerability was resolved in version 8.6.2 by changing the validated action string in LicenseCheckinController.php. Below is the code diff of the vulnerable versus patched implementation:

// File: app/Http/Controllers/Licenses/LicenseCheckinController.php
 
public function create(LicenseSeat $licenseSeat, $backTo = null)
{
    // Check if the asset exists
    $license = License::find($licenseSeat->license_id);
-   $this->authorize('checkout', $license);
+   $this->authorize('checkin', $license);
 
    return view('licenses/checkin', compact('licenseSeat'))->with('backto', $backTo);
}
 
public function store(Request $request, $seatId = null, $backTo = null)
{
    // ... [validation and setup logic] ...
 
-   $this->authorize('checkout', $license);
+   $this->authorize('checkin', $license);
 
    // ... [database transaction and update logic] ...
}

By replacing 'checkout' with 'checkin', the controller correctly directs Laravel's gates to query the user's checkin capability in the LicensePolicy class. This modification ensures that any attempt to render the check-in page or submit a check-in payload is restricted exclusively to authorized administrators. The fix is robust and completely eliminates the bypass vector on these legacy routes.

Exploitation Mechanics

To exploit this vulnerability, an attacker must first obtain valid credentials to a Snipe-IT instance with a role that permits license checkout (assignment) but denies license check-in. The attacker then targets an active license seat identifier. Because the legacy check-in views do not rely on complex API structures, exploitation can be carried out using simple web requests.

First, the attacker requests the legacy check-in interface using a standard GET request: GET /licenses/checkin/<seatId>. Because the server incorrectly validates the 'checkout' permission, it returns the check-in form rather than a 403 Forbidden response. This form contains the required CSRF token for state-changing requests.

Next, the attacker constructs a POST request to submit the form: POST /licenses/checkin/<seatId>. The payload contains the CSRF token and the target seat parameters. The controller processes the state change and unassigns the license seat from the assigned user or asset, returning it to the available license pool.

Impact Assessment

The impact of CVE-2026-55479 is primarily restricted to unauthorized modification of application state and data integrity. While an attacker cannot read sensitive configuration files or execute arbitrary code, they can completely disrupt asset management records. By checking in active license seats, attackers can dissociate corporate software licenses from employees and systems, leading to operational confusion and administrative overhead.

The vulnerability does not allow access to other administrative zones, such as user creation or system settings, unless those areas are independently misconfigured. The CVSS v4.0 base score of 5.3 reflects a network-based attack vector requiring low privileges, with low integrity impact and no confidentiality or availability consequences. This classification reflects a standard privilege escalation scenario within a business application context.

Official Patches

grokabilityFix Commit
grokabilitySnipe-IT v8.6.2 Release Notes

Fix Analysis (1)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
EPSS Probability
0.33%
Top 75% most exploited

Affected Systems

Snipe-IT installations prior to version 8.6.2

Affected Versions Detail

Product
Affected Versions
Fixed Version
snipe-it
grokability
< 8.6.28.6.2
AttributeDetail
CWE IDCWE-863 (Incorrect Authorization)
Attack VectorNetwork
CVSS v3.1 Score4.3 (Medium)
CVSS v4.0 Score5.3 (Medium)
Exploit Statusnone
CISA KEV StatusFalse

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-863
Incorrect Authorization

The application performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly authorize the actor.

Vulnerability Timeline

Vulnerability patched in master branch
2026-06-08
Official GitHub Security Advisory Published
2026-07-10
CVE-2026-55479 Published by NVD
2026-07-10
Snipe-IT Version 8.6.2 Released
2026-07-10

References & Sources

  • [1]GitHub Security Advisory
  • [2]NVD Vulnerability Detail Page
  • [3]CVE.org Authoritative Vulnerability Record
  • [4]Wiz Vulnerability Database Profile

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 minutes ago•CVE-2026-109619
9.2

CVE-2026-109619: Remote Code Execution in PHP Core via Stale Global State Memory Corruption (PHP2Shell)

CVE-2026-109619 (PHP2Shell) is a critical Use-After-Free vulnerability in the core PHP engine caused by improper global state cleanup during out-of-memory exception handling across persistent worker requests.

Alon Barad
Alon Barad
1 views•6 min read
•5 minutes ago•CVE-2026-113721
4.5

CVE-2026-113721: Unsafe Link Resolution in virtualenv File Generation

In Python virtualenv prior to version 21.14.9, activation script generators and configuration writers use Path.exists() before writing files. Because Path.exists() resolves symbolic links, it returns False for dangling symlinks. Consequently, virtualenv skips unlinking pre-planted symbolic links or hard links, writing data directly to target locations outside the intended virtual environment directory.

Amit Schendel
Amit Schendel
1 views•5 min read
•9 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
31 views•5 min read
•9 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
19 views•6 min read
•10 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
18 views•5 min read
•10 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
24 views•6 min read