mediumCVSS 4.3Vulnerability

CVE-2026-55703

### Impact Any activated account in a company can read every maintenance record for that company (asset tag, supplier, purchase cost, free-text notes, dates) without holding any asset or maintenance permission. ## Summary `MaintenancesController::show()` renders a maintenance record without any authorization check. Every other action in the controller authorizes against the asset; `show()` does not. Any user in the asset's company can read maintenance detail (asset tag, supplier, purchase cost, notes, dates) by visiting `/maintenances/{id}`, regardless of permissions. ## Details ```php public function show(Maintenance $maintenance): View|RedirectResponse { return view('maintenances.view')->with('maintenance', $maintenance); } ``` No `authorize()` call. The sibling actions all gate on the asset: `index()` calls `authorize('view', Asset::class)` (line 33), and `edit()`/`update()`/`destroy()` call `authorize('update', $maintenance->asset)` (lines 139, 166, 286). The route is registered with only the auth guard: ```php Route::resource('maintenances', MaintenancesController::class, ['middleware' => ['auth']]); ``` (`routes/web/hardware.php:185`). Route-model binding still applies the company scope, so the read is bounded to the caller's company; the absent permission gate is the defect. Maintenance IDs are sequential and visible in the record URL. ## Proof of concept 1. As an administrator, create an asset in a company (here, `CompanyA`). Open the asset, choose Maintenances > Create, and add a record: name `MntA2`, supplier `SupA`, a purchase cost, and notes. The saved record opens at `/maintenances/{id}`. 2. As the administrator, create a test user assigned to CompanyA, with **every permission left unchecked**. Activate the account. 3. In a separate browser session, log in as the test user. Confirm it is unprivileged: the Assets and Maintenances navigation items are absent, and browsing to `/hardware` returns 403. 4. In the address bar, browse to `http://<h

Properties

ghsa_id
GHSA-r9r3-g9fp-3q4q
severity
medium
summary
Snipe-IT: Maintenance Record Disclosure via Missing Authorization on GET
cvss_score
4.3
cve_id
CVE-2026-55703
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
is_ghsa_only
false
ghsa_published
2026-08-19T19:32:25Z
source_url
https://github.com/advisories/GHSA-r9r3-g9fp-3q4q
ghsa_updated
2026-08-19T19:32:27Z

Related Entities (4)

VULNERABLE_TO (1)

[Software]composer/snipe/snipe-it

AFFECTS (1)

[Software]composer/snipe/snipe-it

HAS_WEAKNESS (1)

[Weakness]Missing Authorization

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-55703 (CVSS 4.3) — Ninja Signal Threat Intelligence | Ninja Signal