Skip to main content

Photoview EUVDEUVD-2026-85345

| CVE-2026-96673 HIGH
SQL Injection (CWE-89)
2026-09-23 VulnCheck GHSA-2mp4-gjj5-8xj5
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Reach Photoview download endpoint over network
  2. Delivery
    Craft SQL payload in album_id path segment
  3. Exploit
    Injection executes via unparameterized db.Find query
  4. Execution
    Infer results via time-based/blind responses
  5. Impact
    Exfiltrate arbitrary database data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

No special conditions - remote unauthenticated exploitation against default configurations of Photoview through 2.4.0, targeting the album download route by manipulating the album_id path segment. The pre-patch handler performed no type or bounds validation before using the value in a GORM query, so any internet- or LAN-reachable instance is exploitable without credentials or user interaction. The only limiting factor is network reachability of the Photoview API; the product's typical self-hosted, single-user/home-lab deployment (rather than any authentication or non-default setting) is what constrains real-world exposure.

Impact

The CVSS 4.0 base score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H) reflects a genuinely serious, low-friction issue: an unauthenticated, network-reachable SQL injection in Photoview's album download route requiring no user interaction and no special conditions against a default install. The source-code evidence corroborates the description - the pre-patch handler passed the raw album_id path segment directly into db.Find(&album, albumID), so the attack surface is real and confirmed by the vendor patch (PR #1453). Impact is scoped to confidentiality only (VC:H, VI:N, VA:N): the vector, the description's mention of blind/time-based extraction, and the GORM SELECT context all consistently point to data theft rather than modification or DoS. No EPSS score, CISA KEV entry, or formal exploit-code flag was provided, so widespread automated exploitation is not confirmed; however, a public technical writeup (hackmd) plus a VulnCheck advisory materially lower the barrier to weaponization. This is a real priority for anyone running Photoview exposed to untrusted networks - not a high-CVSS-but-low-risk paper finding - though its overall real-world blast radius is bounded by the product's niche, self-hosted deployment footprint rather than by exploitation difficulty.

Exploit ScenarioDerived

An unauthenticated attacker sends a GET request to the album download route (e.g. /api/download/album/<album_id>/...) substituting the numeric album_id with a crafted SQL payload such as a time-based AND SLEEP(1) condition. Because the ID was concatenated into a GORM query without validation, the attacker uses blind/time-based inference to extract arbitrary database contents (user records, credentials hashes, private album data). A public technical writeup on hackmd and a VulnCheck advisory describe the injection, so practical exploitation details are already available even though no packaged exploit-code flag is present.

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 – Sep 23, 2026

Unauthenticated SQL injection in Photoview through 2.4.0 lets remote attackers read arbitrary data from the application database by manipulating the album_id path segment of the album download route. Because the pre-patch handler used the raw path value directly in a GORM lookup before any authentication or authorization check ran, any internet- or LAN-reachable instance is exploitable without credentials or user interaction, with impact limited to confidentiality (CVSS 4.0 base 8.7; assessed CVSS 3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N). A vendor fix has been merged upstream via pull request 1453; no public exploit code was identified at time of analysis, and the issue is not confirmed as actively exploited (CISA KEV).

RemediationAI

Apply the vendor fix: the upstream patch is merged in https://github.com/photoview/photoview/pull/1453 (commit deb1b216e047a30803dc0f48a9fc3d4c4abda594), so upgrade to a Photoview release that includes that commit; the patch converts album_id to an integer with strconv.Atoi, rejects invalid, zero, and negative IDs with HTTP 400, and replaces the string-concatenated GORM lookup with the parameterized db.First(&album, "id = ?", albumID). Because the fix is delivered via a pull request/commit rather than a confirmed tagged release, verify the deployed build actually contains the patched code before considering the instance remediated. If an immediate upgrade is not possible, reduce exposure of the album download route: place Photoview behind a reverse proxy or VPN and do not expose its API directly to the internet, which removes the unauthenticated remote vector entirely; alternatively, add a proxy-level allowlist/rewrite rule that only forwards numeric album_id segments (for example an nginx location regex matching ^/album/[0-9]+/original$ before proxying) and returns 400 for anything else, which blocks injection payloads but will break links or clients that pass non-numeric IDs. A WAF rule blocking SQL metacharacters and whitespace/comment sequences in the album_id path segment can add defense in depth, though such rules are bypassable and should not replace patching. No modification to database permissions is required once the parameterized query is in place.

Affected VersionsENISA

photoview 0 ≤2.4.0

Affected Packages

euvd photoview no fix

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

Photoview is a self-hosted photo and video library written in Go, using the gorilla/mux router and the GORM ORM on top of a SQL database. The vulnerable route (api/routes/downloads.go, lines 19-29 in v2.4.0) read the album_id path variable as a raw string and passed it straight into a GORM lookup (db.Find(&album, albumID)) without type or bounds validation. GORM interprets a non-integer argument as a SQL condition rather than a primary key value, so attacker-supplied text was concatenated into the generated query, the classic CWE-89 improper neutralization of special elements used in an SQL command. The fix converts album_id with strconv.Atoi, rejects non-numeric, zero, and negative values with HTTP 400, and switches the lookup to the parameterized form db.First(&album, "id = ?", albumID), which binds the value rather than building a condition from it. The accompanying tests exercise text, boolean ('id=1 OR 1=1'), time-based ('id=1 AND SLEEP(1)'), zero, negative, and integer-overflow payloads, confirming that blind and time-based extraction techniques were viable against the original code path.

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

Unauthenticated remote SQL injection with no interaction (AV:N/AC:L/PR:N/UI:N); blind/time-based data extraction in a SELECT context gives full read (C:H) but no shown write or DoS, so I:N/A:N.

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

DescriptionCVE.org

Photoview through 2.4.0 contains an SQL injection vulnerability in the album download route that allows unauthenticated attackers to inject SQL by manipulating the album_id path segment. Attackers can supply crafted SQL expressions in the album_id parameter to extract arbitrary data from the database using time-based or blind injection techniques.

Executive ViewAI

Why It Matters

Photoview deployments at version 2.4.0 and earlier are exposed to an unauthenticated database read vulnerability, meaning anyone who can reach the service over the internet or the local network can extract the contents of its database without any credentials or user interaction. Because the affected album download endpoint is processed before any access control is enforced, the exposure is not limited to trusted internal users and extends to any internet-facing photo library instance. Leadership should care because the leaked data can include user account records, session and API secrets, and metadata about private photo collections, with reputational and privacy-notification consequences rather than service disruption.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Low
niche self-hosted open-source photo gallery, hobbyist deployments, no enterprise footprint
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
Poc
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

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

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