Skip to main content

Lychee CVE-2026-57568

| EUVDEUVD-2026-102187 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-15 GitHub_M
5.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain album-edit permissions
  2. Delivery
    Store javascript: URI in Markdown description
  3. Exploit
    Victim opens public gallery album
  4. Execution
    Victim clicks rendered malicious link
  5. Impact
    Execute JavaScript, exfiltrate session data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

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

Exploitation Conditions

Exploitation requires three concrete conditions drawn from the description: (1) the attacker must be an authenticated user holding album-edit permissions, used to store a 'javascript:' URI inside an album or photo Markdown description; (2) the affected version (prior to 7.6.0) must be running with the default config/markdown.php setting allow_unsafe_links=true, which permits the unsafe URI to survive HTML conversion in PreformattedPhotoData.php / PreFormattedAlbumData.php; and (3) a victim must actively click the link as rendered via v-html in the gallery components (PhotoDetails.vue, Overlay.vue, PhotoThumb.vue, AlbumHero.vue, AlbumCard.vue). Limiting factors: the injection step needs an authenticated edit-capable account, and code execution does not occur on page load - it requires the victim's click (UI:A), so passive viewing alone is insufficient. The payoff is broadened because the clicking victim may be an unauthenticated public-album visitor.

Impact

This is a stored XSS (CWE-79) with a realistic but not alarming risk profile. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:A) and the 5.7 Medium score align well with the description: the attacker side requires an authenticated account holding album-edit permissions (PR:L), and successful exploitation depends on a victim actively clicking a rendered link (UI:A, AT:P). No EPSS score, KEV listing, or SSVC decision data was provided in the input, and no public exploit was identified - so there is no signal of active or probable exploitation. The GitHub references are a vendor security advisory, the fix PR, the fix commit, and the 7.6.0 release, i.e. patch artifacts rather than weaponized exploit code. The one notable amplification is that while the payload author must be authenticated, the victim can be an unauthenticated visitor to a public album, widening the pool of potential targets even though the injection barrier remains authenticated. The VC:H rating in the vendor vector (full confidentiality impact via session/token theft) is somewhat aggressive for a reflected-on-click XSS; real impact is bounded by what the clicking victim's session can access. Net: a legitimate issue worth patching, not an emergency - closer to a high-CVSS-components-but-moderate-real-risk item, gated by both an authenticated injection step and required user interaction.

Exploit ScenarioDerived

An attacker who holds album-edit rights sets a photo or album Markdown description to a 'javascript:' URI, which Lychee renders as a clickable link because allow_unsafe_links is enabled. When any visitor - including an unauthenticated user browsing a public album - clicks that link in the gallery view, attacker-controlled JavaScript runs in the Lychee origin and can read session data or issue requests as the victim. No public exploit code was identified at time of analysis, though the fixing PR and commit are public.

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

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

Alert me

AnalysisAIv1 – Oct 15, 2026

Stored cross-site scripting in Lychee photo-management software (all versions prior to 7.6.0) allows an authenticated user holding album-edit permissions to embed a javascript: URI inside an album or photo Markdown description, which is then converted to HTML server-side and rendered client-side via v-html in the gallery components. Because the payload is stored in album/photo metadata, any visitor who clicks the rendered link - including an unauthenticated visitor to a public album - executes attacker-controlled JavaScript in the Lychee origin, which can expose session data or let the attacker issue authenticated requests in the victim's context; exploitation requires the victim's click and therefore is not triggered by passive page views. The issue is fixed in Lychee 7.6.0 and no public exploit was identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade to Lychee 7.6.0, which is published at https://github.com/LycheeOrg/Lychee/releases/tag/v7.6.0 and corresponds to the changes in https://github.com/LycheeOrg/Lychee/pull/4377 (commit f0604ead5889bfed404d6f5e1a9205f945172c7e), per the advisory https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-pgfr-x389-5p2h. If upgrading immediately is not possible, the equivalent compensating control is to edit config/markdown.php and set allow_unsafe_links to false (and, optionally, lower max_nesting_level from PHP_INT_MAX to 10); the trade-off is that legitimate Markdown links using non-http schemes, relative targets, or other unsafe schemes will be stripped from descriptions, so user-visible link behaviour may change. Because the injection step requires an authenticated account with album-edit permissions, additionally restricting album-edit rights to trusted accounts and auditing existing album and photo descriptions for stored javascript: or data: URIs (removing any that are found) reduces the attack surface, though this is only a partial measure since a victim's single click is still needed for execution. Note that applying the feed-rendering fix for CVE-2026-33738 does not remediate this separate gallery-view flaw; no public exploit was identified at time of analysis.

Affected VersionsENISA

Lychee < 7.6.0

Affected Packages

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

The root cause is CWE-79 (improper neutralization of input during web page generation) arising from a deliberately permissive Markdown configuration rather than a traditional output-escaping bug. Lychee processes album and photo descriptions through league/commonmark, and the shipped config/markdown.php set allow_unsafe_links to true, which lets the parser preserve hazardous URI schemes such as javascript: (see the CommonMark security documentation on unsafe links). app/Http/Resources/Models/Utils/PreformattedPhotoData.php and app/Http/Resources/Models/Utils/PreFormattedAlbumData.php transform the stored description into HTML, and the Vue gallery components PhotoDetails.vue, Overlay.vue, PhotoThumb.vue, AlbumHero.vue, and AlbumCard.vue inject that HTML with v-html, which bypasses Vue's normal escaping and creates the execution sink. The upstream fix in pull request 4377 flips allow_unsafe_links to false and additionally reduces max_nesting_level from PHP_INT_MAX to 10 to bound Markdown nesting depth; the change is captured in commit f0604ead5889bfed404d6f5e1a9205f945172c7e and released as v7.6.0. The advisory explicitly distinguishes this gallery-view path from CVE-2026-33738, which covered feed rendering, so the two vulnerabilities share a class but affect different sinks and must be remediated independently. The assessed CVSS:3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) reflects stored XSS confined to the Lychee origin with scope change and low confidentiality/integrity impact; the CNA-published CVSS:4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N) is consistent on the authenticated (PR:L) and user-interaction-required dimension.

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 5.7 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.4 MEDIUM

Authenticated album-edit account to inject so PR:L; victim must click the link so UI:R; XSS executes in a different browser context so S:C; limited session-level confidentiality/integrity impact, no availability effect.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:L/UI:A/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
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
Active
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
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.0, Lychee permits an authenticated user with album-edit permissions to store a javascript URI in an album or photo Markdown description because config/markdown.php enables allow_unsafe_links. app/Http/Resources/Models/Utils/PreformattedPhotoData.php and app/Http/Resources/Models/Utils/PreFormattedAlbumData.php convert the description to HTML, and the gallery components PhotoDetails.vue, Overlay.vue, PhotoThumb.vue, AlbumHero.vue, and AlbumCard.vue render that HTML with v-html. A visitor, including an unauthenticated visitor to a public album, who clicks the rendered link executes attacker-controlled JavaScript in the Lychee origin, which can expose session data or enable authenticated requests in the victim's context. This gallery-view flaw is distinct from CVE-2026-33738, which addressed feed rendering. This issue is fixed in version 7.6.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Low
niche self-hosted open-source photo gallery, 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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