Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1336 CNY

100%

CVE-2026-86749— snipe-it before 8.7.0 Data Loss via Failed Image Write

Quick assessment

Affected
grokability snipe-it
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Snipe-IT 版本 <= 8.6.3(在 8.7.0 中修复)未在 中检查存储写入操作的返回值。由于 Laravel 的默认磁盘模式在失败时不会抛出异常,当 调用因瞬时错误(例如 S3 网络错误、本地文件系统权限问题或配额耗尽)而静默失败时,应用仍会调用 删除旧图像,并将模型的新文件名重新分配并持久化到数据库。这导致原有图像被破坏,同时数据库记录指向一个从未实际写入的文件。 类似的问题也存在于 中:即使 调用失败,模型中的图像字段仍会被置空,导致磁盘上的文件成为“孤儿文件”。 该问题并非由攻击者直接控制,而是当

CVSS 6.3 · Medium
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-86749

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
snipe-it before 8.7.0 Data Loss via Failed Image Write
Source: CVE Program / CVE List V5
Vulnerability Description
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.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:L
Source: CVE Program / CVE List V5
Vulnerability Type
未加检查的返回值
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
grokability snipe-it 0 ~ 8.7.0 -

II. Public POCs for CVE-2026-86749

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-86749

登录查看更多情报信息。

Other References for CVE-2026-86749 (2)

Same Patch Batch · grokability · 2026-09-09 · 36 CVEs total

CVE-2026-86751 8.5 HIGH Snipe-IT before 8.7.0 Arbitrary File Read and SSRF via Markdown
CVE-2026-86741 8.5 HIGH Snipe-IT before 8.7.0 Arbitrary File Read and SSRF via Category EULA
CVE-2026-86762 8.1 HIGH Snipe-IT before 8.7.0 Authentication Bypass via API Middleware
CVE-2026-86770 8.1 HIGH Snipe-IT before 8.7.0 Authentication Bypass via SAML Username Collation
CVE-2026-86750 7.7 HIGH snipe-it before 8.7.0 Authorization Bypass via API User Create/Update
CVE-2026-86771 7.6 HIGH Snipe-IT before 8.7.0 Server-Side Request Forgery via employee_num
CVE-2026-86754 7.3 HIGH Snipe-IT before 8.7.0 Authorization Bypass via OAuth Clients
CVE-2026-86759 7.1 HIGH Snipe-IT before 8.7.0 Missing Authorization via asset-history CSV importer
CVE-2026-86765 6.5 MEDIUM Snipe-IT 8.6.3 Authorization Bypass via Asset Update Endpoint
CVE-2026-86764 6.5 MEDIUM Snipe-IT 8.6.4 before 8.7.0 Permission Bypass via assigned components
CVE-2026-86766 6.5 MEDIUM Snipe-IT 8.6.3 Race Condition via Consumable Checkout
CVE-2026-86758 6.5 MEDIUM Snipe-IT before 8.7.0 License Key Exposure via CSV Export
CVE-2026-86757 6.5 MEDIUM Snipe-IT before 8.7.0 Information Disclosure via Custom Fields
CVE-2026-86745 6.5 MEDIUM Snipe-IT before 8.7.0 CSV Formula Injection via Location-Scoping Export
CVE-2026-86742 6.5 MEDIUM Snipe-IT before 8.7.0 CSV Formula Injection via Asset Acceptance Report
CVE-2026-86746 6.4 MEDIUM Snipe-IT before 8.7.0 Authorization Bypass via Livewire Snapshot Replay
CVE-2026-86774 6.3 MEDIUM Snipe-IT before 8.7.0 Broken Access Control via AssetModelPolicy
CVE-2026-86748 6.1 MEDIUM Snipe-IT before 8.7.0 Database Wipe via Invalid Backup Archive
CVE-2026-86756 6.1 MEDIUM Snipe-IT 8.5.0 through 8.6.3 Open Redirect via SAML RelayState
CVE-2026-86773 5.4 MEDIUM Snipe-IT 8.6.3 Broken Access Control via Kit Update Endpoints

Showing top 20 of 36 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2026-86749

No comments yet


Leave a comment