Skip to main content

Lychee CVE-2026-61610

| EUVDEUVD-2026-102190 LOW
Improper Access Control (CWE-284)
2026-10-15 GitHub_M
2.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Identify Lychee API endpoint
  2. Delivery
    Enumerate guessed photo identifiers
  3. Exploit
    Send POST /api/v2/Photo::highlight
  4. Execution
    Distinguish existing private photos via responses
  5. Impact
    Toggle is_highlighted on target photo

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Access control enforcement
MITRE ATT&CK

1 technique across 1 tactic: Defense Evasion

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

Exploitation Conditions

Exploitation requires the installation to have the non-default configuration setting photos_star_visibility set to 'anonymous' - the flaw does not exist under the default setting. The attacker targets the POST /api/v2/Photo::highlight endpoint and must guess or enumerate valid photo identifiers (reflected in CVSS AC:H/AT:P), since SetPhotosHighlightedRequest::processValidatedValues() runs before authorization and PhotoPolicy::canHighlight() omitted a canSee check. Limiting factors that reduce real-world risk: the non-default config dependency, the need to guess opaque photo IDs, and the narrow impact (existence disclosure plus toggling is_highlighted, with no read of photo content, no deletion, and no availability impact). The description's 'unauthenticated' claim conflicts with the input vector's PR:L, so authentication requirements should be verified with the vendor.

Impact

This is a low-priority, low-real-risk access-control flaw (CWE-284) despite being network-reachable. The provided CVSS 4.0 vector (score 2.3) reflects the limited impact: AV:N but AC:H and AT:P mean exploitation is non-trivial (the attacker must guess valid photo identifiers), and the only confidentiality effect is an existence oracle while the only integrity effect is toggling a photo's is_highlighted flag (VI:L, VC:N/VA:N). No EPSS score, CISA KEV listing, or public POC was provided, so there is no evidence of active exploitation or weaponization. One important conflict must be flagged: the description explicitly states an 'unauthenticated attacker,' yet the provided CVSS 4.0 vector sets PR:L (authenticated) - this should be verified with the vendor, though the advisory narrative and the anonymous star-visibility context strongly favor unauthenticated access. A second nuance: the description's existence-disclosure/enumeration primitive arguably warrants a low confidentiality impact, whereas the provided vector marks VC:N. Critically, the flaw only exists when the non-default photos_star_visibility=anonymous setting is enabled, which sharply narrows the exposed population and keeps overall risk low.

Exploit ScenarioDerived

On a Lychee instance configured with the non-default photos_star_visibility=anonymous setting, a remote attacker iterates over guessed photo IDs against POST /api/v2/Photo::highlight; differing success versus not-found responses let them confirm which private or password-protected photos exist, and for existing ones they flip the is_highlighted state. No public exploit code was identified at time of analysis, and the high attack complexity (identifier guessing) limits practicality.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 15, 2026

Improper access control in Lychee before 7.6.1 allows remote attackers to probe for and alter the highlight (star) state of photos they are not permitted to see, including photos in private or password-protected albums. The flaw only exists on installations configured with the non-default setting photos_star_visibility set to 'anonymous', where PhotoPolicy::canHighlight() returns true for callers without performing a canSee check, and SetPhotosHighlightedRequest::processValidatedValues() runs before authorization. Impact is narrow - existence disclosure via differing success/not-found responses plus toggling of is_highlighted - with no read of photo content, no deletion and no availability impact; exploitation additionally requires guessing valid photo identifiers, and no public exploit code has been identified at time of analysis (no CISA KEV listing). Note the source description labels the attacker 'unauthenticated' while the supplied CVSS 4.0 vector carries PR:L, and our independent assessment scores it PR:N, so authentication requirements are not fully confirmed from available data and should be verified with the vendor.

RemediationAI

Vendor-released patch: Lychee 7.6.1 (release tag v7.6.1, upstream PR #4449, commit fe07567c176bbdcda7b276bb6d664dfcd47a9b00) - upgrade to 7.6.1 or later; the fix adds the canSee() check to both the ANONYMOUS and AUTHENTICATED branches of PhotoPolicy::canHighlight() and eager-loads albums.access_permissions so visibility is enforced during resolution. If you cannot upgrade immediately, revert photos_star_visibility from 'anonymous' to the default (non-anonymous) value so the vulnerable anonymous code path is unreachable; the trade-off is that anonymous visitors lose the ability to star/highlight photos, and note that this interim step does not fully address the underlying missing canSee check for authenticated users, which is why patching remains required. As an additional compensating control, restrict access to /api/v2/Photo and the Photo::highlight endpoint at the reverse proxy for untrusted networks (recognizing this breaks legitimate API clients and any external integrations until the side effect is reconciled), and monitor server/access logs for repeated highlight requests with sequential or guessed photo IDs, which would indicate enumeration attempts. Verify the advisory at https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-qcqq-p4pq-7r77 for vendor guidance, and confirm with the vendor whether authenticated or unauthenticated callers are required, given the PR:L/PR:N discrepancy between the supplied CVSS 4.0 vector and the description.

Affected VersionsENISA

Lychee < 7.6.1

Affected Packages

euvd lychee fix: 7.6.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

Lychee is an open-source, self-hosted photo management application built on PHP/Laravel, and the affected logic sits in its request-and-policy authorization layer. The root cause is CWE-284 Improper Access Control: in BaseApiRequest::validateResolved(), the request class SetPhotosHighlightedRequest::processValidatedValues() is invoked to fetch and hydrate the target Photo (eager-loading size_variants and albums) before the policy check runs, so the photo object is resolved and any success-versus-not-found difference is exposed to the caller prior to any visibility enforcement. Compounding this, PhotoPolicy::canHighlight() had branches mapping PhotoHighlightVisibilityType::ANONYMOUS => true and AUTHENTICATED => $user ! null, neither of which invoked canSee(), meaning an anonymous caller reaching the POST /api/v2/Photo::highlight endpoint could both distinguish existing-but-invisible photos and mutate their is_highlighted flag. The upstream fix in PR #4449 changes the eager-load set to include albums.access_permissions and rewrites both branches to require canSee($user, $photo) (ANONYMOUS => canSee, AUTHENTICATED => $user ! null && canSee), with test changes switching the exercised photos from a public photo (photo1) to a non-visible one (photo4) to assert denial. The CPE cpe:2.3:a:lycheeorg:lychee:*:*:*:*:*:*:*:* with no version bound matches all pre-7.6.1 releases; the vulnerability is reachable only when the operational toggle photos_star_visibility is 'anonymous' rather than the default.

Know when Lychee 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 (GitHub_M) PRIMARY 2.3 LOW
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.8 MEDIUM

PR:N per description's unauthenticated claim; AC:H because exploitation depends on guessing photo IDs and a non-default setting; C:L for the existence oracle, I:L for toggling is_highlighted, A:N.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
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 15, 2026 - 18:18 EUVD

DescriptionCVE.org

Lychee is a free, open-source photo-management tool. Prior to 7.6.1, when photos_star_visibility is set to anonymous, POST /api/v2/Photo::highlight can fetch and modify a photo without confirming that the caller can see it. BaseApiRequest::validateResolved() invokes SetPhotosHighlightedRequest::processValidatedValues() before authorization, and PhotoPolicy::canHighlight() returns true for anonymous callers without a canSee check. An unauthenticated attacker who can guess photo identifiers can distinguish existing private photos through differing success and not-found responses and can change their is_highlighted state, including for photos in private or password-protected albums. The issue is limited to installations using the non-default anonymous star-visibility setting. This issue is fixed in version 7.6.1.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
niche open-source self-hosted photo manager, limited enterprise 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 LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

More in Lychee

View all
CVE-2024-25808 HIGH POC
8.3 Mar 22

Cross-site Request Forgery (CSRF) vulnerability in Lychee version 3.1.6, allows remote attackers to execute arbitrary co

CVE-2024-25807 MEDIUM POC
6.1 Mar 22

Cross Site Scripting (XSS) vulnerability in Lychee 3.1.6, allows remote attackers to execute arbitrary code and obtain s

CVE-2023-52082 CRITICAL
9.8 Dec 28

Lychee is a free photo-management tool. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable,

CVE-2026-62679 HIGH
8.9 Oct 15

Authenticated path traversal in Lychee photo-management tool prior to 7.6.4 allows any logged-in user to read files acce

CVE-2026-22784 MEDIUM POC
4.3 Jan 12

Lychee photo management tool versions before 7.1.0 contain an authorization bypass in the album password unlock mechanis

CVE-2026-77466 HIGH
8.3 Oct 15

Paid fulfillment bypass in Lychee (Supporter/Pro editions) before 7.7.0: the checkout validators accept any OmnipayProvi

CVE-2026-77470 HIGH
8.3 Oct 15

Unauthenticated buyers on Lychee instances running the Supporter/Pro webshop can tamper with the parameters handed to th

CVE-2026-61838 HIGH
8.2 Oct 15

Unauthenticated attackers who know the shared identifier of a public, password-protected Lychee album can pull down a ZI

CVE-2026-61611 HIGH
7.5 Oct 15

Lychee photo-management instances running versions prior to 7.6.1 expose POST /api/v2/Album::unlock with no throttle, at

CVE-2026-77467 HIGH
7.1 Oct 15

Denial of service in Lychee before 7.7.0 allows an authenticated user with upload/import permission to tie up image-proc

CVE-2026-77468 MEDIUM
6.9 Oct 15

Unauthenticated remote attackers can retrieve a complete OpenAPI schema and repeatedly force CPU-intensive schema regene

CVE-2021-43675 MEDIUM
6.1 Dec 15

Lychee-v3 3.2.16 is affected by a Cross Site Scripting (XSS) vulnerability in php/Access/Guest.php. Rated medium severit

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