Skip to main content

Snipe-IT CVE-2026-116198

| EUVDEUVD-2026-109456 MEDIUM
Missing Encryption of Sensitive Data (CWE-311)
2026-10-25 VulnCheck GHSA-q5q6-6qfw-xp7h
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to Snipe-IT API
  2. Delivery
    POST asset with encrypted-flagged custom field
  3. Exploit
    Gate denies encryption but write proceeds
  4. Execution
    Plaintext persisted in encrypted column
  5. Impact
    Sensitive data exposed via backups/replicas/DBA access

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V14 - Data Protection Encryption of sensitive data
Exploitation Conditions

Requires a valid authenticated Snipe-IT API token for a user who has permission to create assets but does NOT hold assets.view.encrypted_custom_fields, plus at least one custom field configured with the encrypted flag; the attacker must submit a value for that field via the asset-creation API call. Exploitation is limited to the Api\AssetsController::store path only - the API update path, non-API web paths, and BulkAssetsController correctly skip the write on gate denial - and only to versions <= 8.6.3. The resulting plaintext is not readable back through the API (the transformer redacts it to "ENCRYPTED"), so realized exposure additionally depends on an actor having database-layer access through backups, replicas, or direct DB/DBA access.

Impact

Signals point to a genuine but modest-priority issue. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N) scores 5.3 (medium) and is internally consistent with the mechanism: network-reachable API, low attack complexity, but PR:L meaning an authenticated caller is required, and the only impact set is VI:L (integrity) with VC:N confidentiality - the advisory confirms this is not a read bypass because the API transformer redacts the field back to the literal string "ENCRYPTED" for anyone lacking the permission. No EPSS score, no CISA KEV entry, and no proof-of-concept exploit reference are present in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The vuln.today decision label is this_month, not act_now or emergency, consistent with the medium severity and absence of exploitation signals. The real-world risk is that of a latent encryption-at-rest failure: sensitive custom-field values that operators believed were encrypted are stored as plaintext and are exposed to DB backups, read replicas, and direct/DBA database access - the harm materializes only for actors with database-layer access, not through the API itself, which is why this is a lower practical priority than the 'network/unauthenticated' surface of the vector might first suggest. No key signals conflict; the main gap is the absence of EPSS/KEV data, which is expected rather than an error for a freshly disclosed medium-severity flaw.

Exploit ScenarioDerived

An authenticated Snipe-IT API user who can create assets but was not granted assets.view.encrypted_custom_fields submits a POST to the asset-creation endpoint including a value for a custom field flagged as encrypted. The faulty gate in Api\AssetsController::store skips the Crypt::encrypt() call but still writes the value, so the sensitive data lands in the database as plaintext in a column documented as encrypted, where it is later exposed via backups, replicas, or DBA access. No public exploit identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 25, 2026

Snipe-IT through 8.6.3 can persist sensitive custom-field values as plaintext in columns the application and UI present as encrypted when an asset is created through the API by a caller who does not hold assets.view.encrypted_custom_fields. The defect is confined to Api\AssetsController::store; the sibling API update path, the non-API web paths and BulkAssetsController all skip the field on gate denial, so an authenticated API user with asset-creation rights (PR:L in the assessed vector) can silently break the encryption-at-rest guarantee for that record, with the plaintext then visible to anyone reading backups, replicas or the database directly. No public exploit code or active exploitation has been reported, and the API transformer still redacts the value to the literal string "ENCRYPTED" for readers lacking the permission, so realized exposure depends on a separate database-layer compromise.

RemediationAI

Vendor-released patch: upgrade to Snipe-IT 8.7.0 or later; the fix is commit 34dafe9eed, which makes store() mirror the update() pattern by skipping the field with continue; when the encryption gate denies, so no plaintext is written. Upgrading is the vendor's stated complete fix. Because patching does not rewrite rows already created while vulnerable, audit encrypted-flagged custom-field columns for values that fail Crypt::decrypt() and re-save or re-encrypt those records under an account that holds assets.view.encrypted_custom_fields; otherwise the plaintext persists in existing backups, replicas and database dumps. As an interim measure on unpatched instances, restrict asset-creation over the API to API tokens belonging to users who hold assets.view.encrypted_custom_fields, which caps the exposure but removes asset-creation capability from lower-privileged automation and integrations. Reference: https://github.com/grokability/snipe-it/security/advisories/GHSA-jh4g-98fm-jcqc.

Affected VersionsENISA

snipe-it 0 <8.7.0

Affected Packages

euvd snipe_it fix: 8.7.0

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 a Laravel-based IT asset management application whose custom fields can be flagged with field_encrypted, in which case values are meant to be stored via Laravel's Crypt facade (AES encryption at rest) and read back through Crypt::decrypt(). In Api\AssetsController::store the encryption gate was written as a nested conditional: if the field is flagged encrypted and Gate::allows('assets.view.encrypted_custom_fields') returns true the value is passed through Crypt::encrypt(), but there was no else/continue branch, so on denial the original plaintext value fell through to the unconditional assignment $asset->{$field->db_column} = $field_val. That is a control-flow defect (CWE-670, always-incorrect control flow implementation) that produces the missing-encryption outcome (CWE-311). The sibling update() method in the same controller used the same block with a continue; under the deny branch, and the web paths and BulkAssetsController behaved correctly, which is why the store path was the outlier. Because the column is still flagged encrypted, privileged readers hitting the plaintext row get "Error Decrypting: The payload is invalid.", and the API transformer redacts the value to "ENCRYPTED" for unprivileged readers - the flaw is therefore a data-integrity and encryption-at-rest violation rather than a direct confidentiality bypass for the caller who wrote the value.

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

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.3 MEDIUM

Authenticated API user needed (PR:L) over the network with low complexity; impact is a low integrity violation (plaintext in an encrypted column), with no API-readable confidentiality loss (C:N) and no availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 25, 2026 - 14:01 EUVD

DescriptionCVE.org

Snipe-IT before 8.7.0 contains a missing encryption vulnerability in Api\AssetsController::store that writes plaintext into encrypted-flagged custom-field columns when callers lack assets.view.encrypted_custom_fields. Authenticated API users without that permission can create assets whose sensitive custom-field values persist unencrypted in the database, exposing them through backups, replicas, or direct database access.

Threat Intelligence Overview

EPSS Score
0.1%
Top 100% exploitable
Prevalence
Medium
popular open-source IT asset-management app, moderate self-hosted footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2023-5511 HIGH POC
8.8 Oct 11

Cross-Site Request Forgery (CSRF) in GitHub repository snipe/snipe-it prior to v.6.2.3. Rated high severity (CVSS 8.8),

CVE-2022-23064 HIGH POC
8.8 May 02

In Snipe-IT, versions v3.0-alpha to v5.3.7 are vulnerable to Host Header Injection. Rated high severity (CVSS 8.8), this

CVE-2021-4130 HIGH POC
8.8 Dec 18

snipe-it is vulnerable to Cross-Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is remot

CVE-2021-3858 HIGH POC
8.8 Oct 19

snipe-it is vulnerable to Cross-Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is remot

CVE-2026-63493 HIGH POC
8.6 Sep 24

Two-factor authentication bypass in Snipe-IT (all releases before 8.7.0) allows an attacker who already knows a victim's

CVE-2022-2997 HIGH POC
8.0 Aug 25

Session Fixation in GitHub repository snipe/snipe-it prior to 6.0.10. Rated high severity (CVSS 8.0), this vulnerability

CVE-2022-1155 HIGH POC
7.4 Mar 30

Old sessions are not blocked by the login enable function. Rated high severity (CVSS 7.4), this vulnerability is remotel

CVE-2021-4075 HIGH POC
7.2 Dec 06

snipe-it is vulnerable to Server-Side Request Forgery (SSRF). Rated high severity (CVSS 7.2), this vulnerability is remo

CVE-2026-55460 HIGH POC
7.1 Jul 10

Broken authorization in Snipe-IT before 8.6.2 lets an authenticated non-admin user who holds users.view and users.edit -

CVE-2026-48507 HIGH POC
7.1 Jun 08

Privilege escalation via authorization bypass in Snipe-IT versions prior to 8.6.0 allows any authenticated user holding

CVE-2026-55843 HIGH POC
7.0 Jul 10

Improper permission handling in Snipe-IT before 8.6.0 lets a privileged user strip another user's administrative or gran

CVE-2024-48987 MEDIUM POC
6.6 Oct 11

Snipe-IT before 7.0.10 allows remote code execution (associated with cookie serialization) when an attacker knows the AP

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy