Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege user
-
DeliverySubmit image upload to any model
-
ExploitStorage backend fails silently
-
ExecutionApplication deletes prior image file
-
PersistDatabase updated to non-existent filename
-
ImpactPermanent data loss and DB-disk inconsistency
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Return value checking
|
| Exploitation Conditions | Exploitation requires: (1) a user authenticated to Snipe-IT with permissions to upload images for any image-carrying model (assets, users, companies, etc. - low-privilege roles with image-upload rights qualify); and (2) a coincident transient failure of the configured storage backend at the moment the upload request is processed - examples include AWS S3 network timeout, NFS mount unavailability, local filesystem permission error, or disk quota exhaustion. The storage failure condition is not directly attacker-controllable in standard deployments without prior infrastructure access. Exploitation is further limited by: the requirement for simultaneous authenticated user activity and a storage failure event, the absence of any confidentiality or code-execution impact, and the fact that impact manifests as data loss rather than a security boundary crossing. Deployments using dedicated local filesystem storage with abundant capacity and no external dependencies face the lowest realistic exposure. |
| Impact | The provided CVSS 4.0 base score of 7.0 (AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:H/VA:L) reflects network accessibility and high integrity impact, which is consistent with the data-destruction outcome. However, real-world exploitability is materially lower than the score suggests because the triggering condition - a coincident storage-layer failure - is not within attacker control in standard deployments. An adversarial use of this flaw would require an attacker to first induce infrastructure-level failures (exhaust S3 quota, disrupt network paths, fill local disks) while a legitimate user concurrently submits an image upload - a multi-step, environment-dependent chain. No CISA KEV listing exists, no public exploit or POC has been identified, and EPSS data is not provided in the source intelligence. The primary real-world risk is operational: unintentional data loss during storage-backend instability rather than targeted exploitation. Environments using highly reliable local filesystem storage with ample capacity have substantially lower exposure. The 'Information Disclosure' tag in the input metadata is a mislabel - the actual impact is irreversible integrity loss and database-to-disk inconsistency, not confidentiality breach. |
| Exploit ScenarioDerived | An authenticated Snipe-IT user with asset-update permissions submits a new logo for a company record while AWS S3 is experiencing a transient connectivity disruption. Storage::put() returns false silently; the application proceeds to delete the prior company logo from S3 and updates the database row to reference the new filename, which was never written. The company logo is permanently gone and the database points to a non-existent file - no attacker action is required beyond the normal upload workflow coinciding with storage instability. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 09, 2026
Permanent image data destruction in Snipe-IT ≤8.6.3 results from unchecked return values on Laravel storage operations in ImageUploadRequest::handleImages(). When any authenticated user submits an image upload while the configured storage backend (S3, local filesystem, NFS) experiences a transient failure, the silently-returned false from Storage::put() is ignored - the prior image is deleted, and the database record is updated to reference a file that was never written. A symmetric defect in deleteExistingImage() compounds the problem by nulling the model's image field even when Storage::delete() fails, orphaning files on disk. The condition affects all image-carrying models routed through this handler and produces unrecoverable data loss requiring manual reconciliation. No public exploit has been identified at time of analysis.
RemediationAI
Upgrade to Snipe-IT 8.7.0 or later, which corrects the unchecked return values in ImageUploadRequest::handleImages() and deleteExistingImage() so that storage write and delete failures are detected before destructive follow-on operations execute. The vendor-confirmed fix is documented at https://github.com/grokability/snipe-it/security/advisories/GHSA-v37p-hr9x-5w85. Prior to patching, organizations using cloud object storage (AWS S3, GCS) should implement storage-layer alerting so failures surface immediately and administrators can manually reconcile database records before further damage accumulates; note that this does not prevent the data loss, only accelerates discovery. Configuring Laravel's filesystem driver to throw exceptions on failure (available in some driver configurations) would convert silent failures into fatal errors, halting the destructive operation at the cost of surfacing upload errors to end users. Regular off-application backups of stored images provide a recovery path for data already lost; without them, data destruction from this bug is unrecoverable.
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 an open-source Laravel-based IT asset management application developed by Grokability, identified via CPE cpe:2.3:a:grokability:snipe-it. The root cause is CWE-252 (Unchecked Return Value): Laravel's Storage facade methods (Storage::disk('public')->put() and Storage::delete()) return boolean success/failure by default rather than throwing exceptions. The application's ImageUploadRequest::handleImages() method - shared across controllers for assets, asset models, users, companies, manufacturers, locations, categories, suppliers, departments, and other image-bearing models - does not inspect this return value before executing destructive follow-on operations. The same pattern in deleteExistingImage() produces the inverse failure: a disk-delete that silently fails still nulls the database reference, creating a persistent inconsistency between the database row and the storage layer. The CWE-252 class is a language-agnostic logic flaw amplified here by Laravel's opt-in exception behavior.
Know when Snipe It 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:P/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N
AC:H because triggering requires coincident storage failure outside attacker control; PR:L for authenticated user; I:H for permanent data destruction; A:L for broken image references.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Snipe-IT versions <= 8.6.3 (fixed in 8.7.0) do not check the return value of storage write operations in ImageUploadRequest::handleImages(). Because Laravel's default disk mode does not throw on failure, a silently failed Storage::disk('public')->put(...) call still caused the application to delete the previous image via deleteExistingImage() and to reassign and persist the model's image reference to the new filename, destroying the existing image and leaving the database row pointing at a file that was never written. A mirror problem existed in deleteExistingImage(), where a failed Storage::delete() still nulled the model's image field, orphaning the file on disk. The condition is not directly attacker-controlled: it is triggered when any legitimate authenticated user submits an image upload while the storage backend transiently fails (for example an S3 network error, a local filesystem permission problem, or quota exhaustion). The result is unrecoverable loss of the prior image and a durable inconsistency between the database and disk that requires manual reconciliation. All models whose controllers route through ImageUploadRequest::handleImages (assets, asset models, users, companies, manufacturers, locations, categories, suppliers, departments, and other image-carrying models) are affected.
Technical POC Analysis
The defect is an unchecked return value on Laravel storage calls, CWE-252 (the advisory itself frames the same behavior as CWE-754 and CWE-460 for the delete-failure case).
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 versions 8.6.3 and earlier silently lose asset documentation images when the storage backend experiences temporary service disruptions, permanently destroying previously uploaded photographs and evidence files without recovery options. This impacts any organization relying on Snipe-IT for IT asset management and visual documentation, requiring manual reconciliation of lost asset records. No public exploit identified at time of analysis.
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
Cross-Site Request Forgery (CSRF) in GitHub repository snipe/snipe-it prior to v.6.2.3. Rated high severity (CVSS 8.8),
In Snipe-IT, versions v3.0-alpha to v5.3.7 are vulnerable to Host Header Injection. Rated high severity (CVSS 8.8), this
snipe-it is vulnerable to Cross-Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is remot
snipe-it is vulnerable to Cross-Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is remot
Two-factor authentication bypass in Snipe-IT (all releases before 8.7.0) allows an attacker who already knows a victim's
Session Fixation in GitHub repository snipe/snipe-it prior to 6.0.10. Rated high severity (CVSS 8.0), this vulnerability
Old sessions are not blocked by the login enable function. Rated high severity (CVSS 7.4), this vulnerability is remotel
snipe-it is vulnerable to Server-Side Request Forgery (SSRF). Rated high severity (CVSS 7.2), this vulnerability is remo
Broken authorization in Snipe-IT before 8.6.2 lets an authenticated non-admin user who holds users.view and users.edit -
Privilege escalation via authorization bypass in Snipe-IT versions prior to 8.6.0 allows any authenticated user holding
Improper permission handling in Snipe-IT before 8.6.0 lets a privileged user strip another user's administrative or gran
Snipe-IT before 7.0.10 allows remote code execution (associated with cookie serialization) when an attacker knows the AP
EUVD-2026-74926
GHSA-55vq-5fhf-8c84
NVD
CVE.org
EPSS
Exploit-DB