Skip to main content

PictShare CVE-2026-104051

| EUVDEUVD-2026-91065 HIGH
Insufficiently Protected Credentials (CWE-522)
2026-10-01 VulnCheck GHSA-8hvj-6v33-pcpf
8.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain public file hash
  2. Delivery
    Call info API for metadata
  3. Exploit
    Harvest secret delete_code and uploader data
  4. Execution
    Invoke delete API with code
  5. Impact
    Permanently delete arbitrary files

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential protection in transit/storage
Exploitation Conditions

No special conditions beyond network reachability - remote unauthenticated exploitation works against default configurations of PictShare instances older than 3.7.1, since the unpatched API::info() endpoint returns the complete raw meta.json for any valid file hash with no authentication or configuration prerequisite. The only practical limiting factor is that the attacker must know or discover a file's hash; because hashes are publicly visible in share URLs, this is a weak barrier. Follow-on arbitrary deletion requires the disclosed delete_code, which the same unauthenticated info call provides, so the two conditions collapse into one. The fix also closes a related gap where an empty/falsy code could delete files lacking a stored delete_code (e.g. legacy files or the Docker MASTER_DELETE_CODE='' default), relevant to instances deployed with that default.

Impact

The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) and base score of 8.8 indicate a network-reachable, low-complexity, unauthenticated flaw, which the source-code evidence fully corroborates: API::info() returned getMetadataOfHash() verbatim with no field whitelist, so any party knowing a file's publicly visible hash could read the secret delete_code and then call the delete API. This makes the primary real-world impact availability (VA:H - arbitrary permanent file deletion) plus limited confidentiality (VC:L - uploader IP, User Agent, remote port, SHA-1). There is no EPSS score, no CISA KEV listing, and no named proof-of-concept in the provided data, so exploitation status is 'no public exploit identified at time of analysis'; however, the fix is a public GitHub commit and VulnCheck advisory, both of which plainly describe the trivial exploit path (read hash → fetch delete_code → delete), so weaponization is low-effort even absent a published PoC. Net assessment: this is a genuine, actionable priority for anyone running an internet-exposed PictShare instance - not an inflated high-CVSS-but-low-real-risk issue - but it is bounded by the product's small deployment footprint, so it is unlikely to see widespread automated mass-exploitation. No conflicting signals were found between the CVSS vector and the description; both agree on network, unauthenticated access.

Exploit ScenarioDerived

An unauthenticated attacker who has (or guesses/scrapes) the public hash of an uploaded file calls the info API endpoint, which returns the raw metadata object including the secret delete_code. The attacker then calls the delete API with that code to permanently remove arbitrary files, while also harvesting the uploader's IP address, User Agent, remote port, and SHA-1 hash. No public PoC is named in the data, but the public patch commit and VulnCheck advisory make the steps trivial to reproduce.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 01, 2026

Unauthenticated information disclosure in PictShare before 3.7.1 lets any remote party who knows a file's publicly visible hash retrieve the file's full raw metadata - including the secret delete_code, uploader IP address, User Agent, remote port, SHA-1 hash, original filename and view statistics - by calling the API::info() endpoint, which returned the entire meta.json object with no field whitelist. Because the same response hands over the delete code, the attacker can then call the delete API and permanently remove arbitrary files, causing loss of content integrity and availability alongside uploader privacy exposure; the flaw is network-reachable, low complexity and requires no authentication (CVSS 4.0 8.8, assessed CVSS 3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H). No public exploit code was identified at time of analysis and there is no confirmed active exploitation (CISA KEV), though the necessary request is trivial to craft and the only barrier - knowing a hash - is weakened by hashes appearing in share URLs. The vendor has released version 3.7.1, which whitelists the returned fields and hardens delete-code validation.

RemediationAI

Upgrade to PictShare 3.7.1 or later - Vendor-released patch: 3.7.1, published at https://github.com/HaschekSolutions/pictshare/releases/tag/v3.7.1 and containing commit ce5fc474e89769efeae25fee763894bcce3412e3 - which restricts API::info() output to a public field allow-list and enforces strict delete-code validation. Because upgrading every instance may be impractical in the short term, the following compensating controls are directly actionable against the documented code paths: (1) block the info API at the reverse proxy or web server (deny requests to /api/info/ and the /info/<hash> route) so meta.json is never serialized externally; the trade-off is that legitimate clients and any UI feature that reads upload metadata will break, so scope the rule to external traffic if the admin UI depends on it. (2) In Docker deployments, override the default MASTER_DELETE_CODE with a long random non-empty value, because the unpatched guard treats an empty master code as matching an empty supplied code and lets anyone delete files that carry no stored delete_code (legacy or direct-controller uploads) via /delete_/<hash> or /delete_0/<hash>; this closes the empty-code deletion path but does not stop leakage of per-file delete codes through the info endpoint. (3) Treat all file hashes as public and reduce blast radius by disabling or firewalling the delete endpoint for untrusted networks, since deletion is the availability-impacting follow-on of this flaw. After patching, rotate or re-upload content whose delete_code was exposed while running a vulnerable version, because those codes remain valid until changed and could still be replayed against an instance that was not yet upgraded.

Affected VersionsENISA

pictshare 2.0.0 <3.7.1

Affected Packages

euvd pictshare fix: 3.7.1

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

PictShare is a PHP image/file hosting application that stores each upload's attributes in a per-file meta.json document containing the MIME type, size, hash, SHA-1, upload timestamp, original filename, view counters (views, last_accessed), the uploader's IP address, User Agent and remote port, and the secret delete_code used to authorize deletion. The vulnerability is rooted in CWE-522 (Insufficiently Protected Credentials): API::info() in src/inc/api.class.php simply returned getMetadataOfHash($hash) verbatim, with no allow-list, so every sensitive key in meta.json was serialized to the caller regardless of authentication. The upstream fix (commit ce5fc474e89769efeae25fee763894bcce3412e3) replaces the raw return with array_intersect_key() against an explicit list of public keys - mime, size, size_human, hash, sha1, uploaded, type, hashes and created - so delete_code, delete_url, ip, useragent, remote_port, original_filename, views and last_accessed are no longer disclosed. The same commit introduces a centralized isValidDeleteCode() helper used by both API::delete() and architect() that rejects empty or non-string codes, requires a non-empty stored delete_code match via hash_equals(), and no longer treats an empty MASTER_DELETE_CODE (the Docker default '') as a valid master code; this closes a parallel bug where /delete_/<hash> or /delete_0/<hash> could destroy legacy files that have no stored delete_code. A related minor hardening replaces rand() with random_int() in getRandomString() to make delete-code generation cryptographically unbiased. Integration tests added alongside the patch explicitly assert that the info response contains no delete_code, delete_url, ip, useragent, remote_port, original_filename, views or last_accessed values.

Know when Pictshare 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 8.8 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.2 HIGH

Unauthenticated network request to the info endpoint (PR:N/AV:N/AC:L) discloses limited uploader metadata (C:L) and enables permanent arbitrary file deletion (A:H), with no scope change.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/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
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

PictShare before 3.7.1 contains an information disclosure vulnerability that allows unauthenticated attackers to obtain the secret delete_code and uploader metadata by calling the API::info() endpoint which returns the complete raw metadata object without a field whitelist. Attackers can use the publicly visible file hash to retrieve the delete_code via the info API and then invoke the delete API to permanently delete arbitrary files, while also exposing uploader IP, User Agent, remote port, and SHA-1 hash, resulting in loss of content integrity, availability, and uploader privacy.

Executive ViewAI

Why It Matters

PictShare versions before 3.7.1 allow unauthenticated remote parties to retrieve sensitive file metadata, including uploader IP addresses and secret delete codes, and then permanently delete arbitrary files. This affects any organization hosting PictShare and its users, threatening data privacy and availability. No public exploit identified at time of analysis, but a vendor-released patch is available in version 3.7.1; leadership should prioritize immediate remediation.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Low
niche self-hosted open-source image host, limited enterprise footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
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.

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