Description
Snipe-IT 8.6.3 and earlier (and develop pre-release commits prior to the fix) contain a race condition in the asset checkout paths. Api\AssetsController::checkout() and Assets\AssetCheckoutController::store() call Asset::availableForCheckout() outside the mutation path and then invoke Asset::checkOut() without taking a row lock or re-checking availability, so two concurrent checkout requests for the same available asset can both observe it as available and both commit. This produces duplicate checkout-history rows, a doubled checkout_counter, and two CheckoutableCheckedOut events for a single-assignment asset, corrupting the audit trail and utilization/reconciliation reporting; the asset's final assigned_to remains singular, so the visible assignment stays intact. Exploitation requires an authenticated session holding the assets.checkout permission (or superuser) and precise concurrent timing. Fixed in 8.7.0.
Published: 2026-09-09
Score: 2.1 Low
EPSS: < 1% Very Low
KEV: No
Impact: Duplicate asset checkout causing audit trail corruption
Action: Patch
AI Analysis

Impact

Snipe‑IT versions up to 8.6.3 contain a race condition that allows two concurrent checkout requests for the same asset to both pass the availability check and commit, resulting in duplicate checkout-history entries, a doubled checkout counter, and two checkout events for a single assignment. The visible asset assignment remains correct but the audit logs and utilization reports become unreliable, leading to inconsistent asset management data.

Affected Systems

The vendor is grokability, product Snipe‑IT. All releases prior to 8.7.0, including 8.6.3 and earlier, as well as pre‑release commits before the fix, are affected. System administrators should review whether their environment runs any of these versions.

Risk and Exploitability

The CVSS score is 2.1, indicating low overall severity. The EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalog. Exploitation requires an authenticated session with the assets.checkout permission (or superuser rights) and precise concurrent timing; the likely attack vector is internal use or a privileged user executing simultaneous checkouts. Because the impact is limited to audit data integrity rather than direct control loss, the risk level remains low, but corrupted audit trails can impede forensic investigations and reporting.

Generated by OpenCVE AI on September 9, 2026 at 16:43 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Snipe‑IT to version 8.7.0 or later; this release removes the race condition by locking the asset row during checkout.
  • If an upgrade is not immediately possible, implement transaction‑level locking (e.g., SELECT … FOR UPDATE) before checking asset availability to eliminate the race condition (CWE‑362).
  • If modifying the application is not feasible, disable parallel checkout operations or serialize checkout requests by implementing an application‑level lock or queue for checkout actions.
  • Monitor audit logs for duplicate checkout-history entries or unexpected increases in checkout counters, and investigate any anomalies.

Generated by OpenCVE AI on September 9, 2026 at 16:43 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 18 Sep 2026 21:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 09 Sep 2026 13:45:00 +0000

Type Values Removed Values Added
Description Snipe-IT 8.6.3 and earlier (and develop pre-release commits prior to the fix) contain a race condition in the asset checkout paths. Api\AssetsController::checkout() and Assets\AssetCheckoutController::store() call Asset::availableForCheckout() outside the mutation path and then invoke Asset::checkOut() without taking a row lock or re-checking availability, so two concurrent checkout requests for the same available asset can both observe it as available and both commit. This produces duplicate checkout-history rows, a doubled checkout_counter, and two CheckoutableCheckedOut events for a single-assignment asset, corrupting the audit trail and utilization/reconciliation reporting; the asset's final assigned_to remains singular, so the visible assignment stays intact. Exploitation requires an authenticated session holding the assets.checkout permission (or superuser) and precise concurrent timing. Fixed in 8.7.0.
Title snipe-it before 8.7.0 Race Condition in Asset Checkout
First Time appeared Snipeitapp
Snipeitapp snipe-it
Weaknesses CWE-362
CPEs cpe:2.3:a:snipeitapp:snipe-it:*:*:*:*:*:*:*:*
Vendors & Products Snipeitapp
Snipeitapp snipe-it
References
Metrics cvssV3_1

{'score': 2.2, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:L/A:N'}

cvssV4_0

{'score': 2.1, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Snipeitapp Snipe-it
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-18T17:23:08.679Z

Reserved: 2026-09-08T11:31:38.679Z

Link: CVE-2026-86744

cve-icon Vulnrichment

Updated: 2026-09-18T17:17:39.413Z

cve-icon NVD

Status : Analyzed

Published: 2026-09-09T14:17:23.130

Modified: 2026-09-18T18:17:19.880

Link: CVE-2026-86744

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-10T18:45:17Z

Weaknesses
  • CWE-362

    Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')