Skip to main content

Lychee CVE-2026-39957

| EUVDEUVD-2026-20954 LOW
Incorrect Authorization (CWE-863)
2026-04-09 GitHub_M
2.3
CVSS 4.0 · GitHub Advisory

Severity by source

GitHub Advisory PRIMARY
2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

Primary rating from GitHub Advisory · only source for this CVE.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
X

Lifecycle Timeline

4
Patch available
Apr 16, 2026 - 05:29 EUVD
7.5.4
EUVD ID Assigned
Apr 09, 2026 - 16:30 euvd
EUVD-2026-20954
Analysis Generated
Apr 09, 2026 - 16:30 vuln.today
CVE Published
Apr 09, 2026 - 16:14 nvd
LOW 2.3

DescriptionGitHub Advisory

Lychee is a free, open-source photo-management tool. Prior to 7.5.4, a SQL operator-precedence bug in SharingController::listAll() causes the orWhereNotNull('user_group_id') clause to escape the ownership filter applied by the when() block. Any authenticated non-admin user with upload permission who owns at least one album can retrieve all user-group-based sharing permissions across the entire instance, including private albums owned by other users. This vulnerability is fixed in 7.5.4.

AnalysisAI

SQL operator-precedence bug in Lychee prior to 7.5.4 allows authenticated users with upload permission to bypass ownership filters and retrieve all user-group-based sharing permissions across the instance, including private albums owned by other users. The vulnerability exists in SharingController::listAll() where an orWhereNotNull clause escapes the ownership filter applied by a when() block. This affects any non-admin user who owns at least one album, creating an information disclosure risk that exposes sharing metadata for the entire Lychee instance.

Technical ContextAI

The vulnerability stems from a SQL query construction flaw in the Lychee photo-management application (CPE: cpe:2.3:a:lycheeorg:lychee:*:*:*:*:*:*:*:*). The root cause is classified as CWE-863 (Incorrect Authorization), resulting from improper operator precedence in SQL query logic. The SharingController::listAll() method attempts to filter results based on ownership using a when() conditional block, but the subsequent orWhereNotNull('user_group_id') clause inadvertently negates the ownership restriction through incorrect boolean logic precedence. This allows the OR condition to match records that bypass the initially-applied ownership filter, exposing sharing permission records across the entire instance rather than restricting results to the authenticated user's own shares.

RemediationAI

Vendor-released patch: Lychee 7.5.4 and later. Immediately upgrade to version 7.5.4 or later to resolve the SQL operator-precedence flaw in SharingController::listAll(). The fix is confirmed in GitHub PR #4264 and commit 76a3f0513eca6458bf7f8c337c1ad65e59b22bcb. No workarounds are available for deployments unable to upgrade immediately; consider temporarily restricting upload permissions for non-admin users if delay is unavoidable. Refer to the vendor advisory at https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-4v4c-g2jv-4g25 for upgrade instructions and verification steps.

Share

CVE-2026-39957 vulnerability details – vuln.today

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