Skip to main content

Lychee CVE-2026-57569

| EUVDEUVD-2026-102188 LOW
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
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
    Authenticate to Lychee instance
  2. Delivery
    Submit Photo::fromUrl with attacker-DNS hostname
  3. Exploit
    Validation resolves to public IP, passes
  4. Execution
    Rebind DNS to internal address before fetch
  5. Persist
    fopen re-resolves to private service
  6. Impact
    SSRF reaches internal service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
Exploitation Conditions

Requires an authenticated Lychee account (PR:L) with access to the POST /api/v2/Photo::fromUrl URL-import feature, and the attacker must control authoritative DNS for the submitted hostname to execute a rebinding attack. Exploitation is further limited by a timing race: the attacker must make the hostname resolve to a permitted public address during PhotoUrlRule validation and then to a private/forbidden address during the separate fopen fetch in DownloadedFile.php (hence AC:H and AT:P). Realistic impact is additionally bounded by the Lychee server's network position (what internal services are actually reachable) and by TLS behavior on the fetched connection, as noted in the advisory.

Impact

This is a low-priority vulnerability despite being a real, verified flaw. The vendor-assigned CVSS 4.0 score is 2.3 (Low), and the vector CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N shows multiple mitigating factors that compound: exploitation requires an authenticated account (PR:L), high attack complexity (AC:H), and a present attack requirement (AT:P) - the latter two reflecting the need to win a DNS-rebinding race between the TOCTOU validation check and the later fetch. Impact is constrained: the 4.0 vector records VC:N/VI:N/VA:N on the vulnerable system itself and only SI:L/SA:L on subsequent (internal) systems reachable via SSRF, meaning no direct confidentiality loss is claimed and only limited integrity/availability effect on back-end services. No EPSS score, CISA KEV listing, or public POC was provided in the input, so exploitation probability signals are all absent rather than conflicting. The one caveat worth flagging: the description notes impact is 'subject to deployment and TLS behavior,' so real-world reachability of internal services is environment-dependent and may be higher or lower than the base score implies - verify against the specific Lychee deployment's network position.

Exploit ScenarioDerived

An attacker with a valid authenticated Lychee account submits a POST /api/v2/Photo::fromUrl request pointing at a hostname they control via DNS. The validation step (PhotoUrlRule) resolves the hostname to a public IP and passes, but on the subsequent fopen/download the same hostname re-resolves to an internal/forbidden address, letting the import fetch reach services on the Lychee server's internal network. No public exploit code was identified at time of analysis, and success depends on winning the DNS re-resolution race (AC:H, AT:P).

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

Server-side request forgery in the Lychee photo-management tool before 7.6.0 lets an authenticated user who can reach the POST /api/v2/Photo::fromUrl URL-import endpoint steer server-side fetches toward private or otherwise forbidden destinations by manipulating DNS answers between the validation step and the download step. The flaw is a classic time-of-check to time-of-use (CWE-367) DNS-rebinding race: app/Rules/PhotoUrlRule.php resolves and approves the submitted hostname, but app/Actions/Import/FromUrl.php later passes the original hostname to app/Image/Files/DownloadedFile.php, which opens a completely separate connection and resolves that hostname again, so an attacker controlling authoritative DNS for the name can return a public address to the check and a private address to the fetch. Exploitation requires a valid Lychee account (PR:L) and precise timing against the second resolution (AC:H), and real-world impact is bounded by which internal services the Lychee host can actually reach and by TLS behavior on the fetched connection, as the vendor advisory notes; no public exploit code has been identified at time of analysis and there is no confirmed active exploitation (CISA KEV).

RemediationAI

Vendor-released patch: Lychee 7.6.0 (https://github.com/LycheeOrg/Lychee/releases/tag/v7.6.0), delivered via PR https://github.com/LycheeOrg/Lychee/pull/4344 and commit a5f23e314f1a933d31aa650616bf9cd84bd0407e - upgrade to 7.6.0 or later, which threads a validated UrlValidatedDTO (URL plus resolved address) from validation through the download step instead of re-resolving the hostname. If immediate upgrade is not possible, restrict and monitor the import-from-URL feature: disable or gate POST /api/v2/Photo::fromUrl at the reverse proxy or via Lychee's feature/permission settings, accepting the loss of a legitimate import workflow for users; and keep the legacy fopen download path disabled (the patched code exposes it behind the 'use_fopen_for_url_imports' feature flag) so downloads go through the cURL path that carries the validated resolution. As a network-layer compensating control, apply egress filtering on the Lychee host that blocks outbound traffic to RFC1918 ranges, loopback, link-local and cloud metadata endpoints such as 169.254.169.254 while allowing only required external destinations - this trades off against any legitimate import from public hosts that traverse those ranges. Running Lychee in a segmented container/network namespace with no route to internal management services reduces the payoff of a successful rebind, and disabling redirects or unvalidated TLS acceptance on outbound fetches (while keeping certificate verification on) limits what a rebound request can retrieve. Because exploitation needs an authenticated account, reviewing accounts with import privileges and auditing outbound connection logs to unexpected internal addresses provides useful detection in the meantime.

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

Lychee is a PHP application (Laravel-style request/action structure) for photo management, and the affected code path is its server-side image import-from-URL feature. The root cause is CWE-367, Time-of-check Time-of-use Race Condition, applied to DNS: PhotoUrlRule.php performs the SSRF guard by validating the hostname and its resolved addresses, but the URL string - not the validated resolution - is carried forward through App\Actions\Import\FromUrl and into App\Image\Files\DownloadedFile, where a fresh fopen resolves the hostname a second time. Because the two resolutions are independent, an attacker with control of the authoritative DNS zone can flip the answer between them, defeating the intent of the allow/deny list. The upstream fix restructures the data flow rather than patching the race inline: a new App\DTO\UrlValidatedDTO object carries the URL together with its resolved_ip and any error, a new App\Services\UrlValidation service performs validation during FromUrlRequest::prepareForValidation, PhotoUrlRule is simplified to operate on the already-validated DTO, and DownloadedFile becomes final with the download performed either by cURL or by the legacy fopen path gated behind a Features flag named 'use_fopen_for_url_imports'. The patch also removes a fragile str_replace(' ', '%20') URL-mangling hack and bumps the pinned FrankenPHP base image digest in the Dockerfile, indicating the change is part of the 7.6.0 release rather than a standalone hotfix. Affected builds are represented by the CPE cpe:2.3:a:lycheeorg:lychee:*:*:*:*:*:*:*:*, i.e. the full version-unqualified Lychee product line prior to the fixed release. Authentication requirements are confirmed from the assessed vector as authenticated (PR:L).

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:N/VA:N/SC:N/SI:L/SA:L
vuln.today AI 3.5 LOW

DNS-rebinding race needs AC:H and an authenticated account (PR:L); SSRF crosses into internal services so S:C, with only limited integrity impact (I:L) and no confirmed confidentiality or availability loss.

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

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
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
Low
Subsequent system: Availability
Low

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, the POST /api/v2/Photo::fromUrl flow validates a hostname and its resolved addresses in app/Rules/PhotoUrlRule.php but later passes the original hostname through app/Actions/Import/FromUrl.php to app/Image/Files/DownloadedFile.php for a separate fopen connection. An authenticated attacker who controls DNS responses can cause validation to observe a public address and the subsequent fetch to resolve the same hostname to a private or otherwise forbidden address. This DNS rebinding time-of-check to time-of-use mismatch bypasses the intended server-side request forgery protections and can reach services available from the Lychee server, subject to deployment and TLS behavior. This issue is fixed in version 7.6.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Low
self-hosted open-source hobbyist photo manager, no broad 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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

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

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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