Skip to main content

Lychee EUVDEUVD-2026-102197

| CVE-2026-77466 HIGH
Improper Input Validation (CWE-20)
2026-10-15 GitHub_M
8.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Reach Supporter/Pro webshop checkout as guest
  2. Exploit
    Submit hidden Dummy provider in session request
  3. Execution
    Complete dummy test-gateway finalize flow
  4. Impact
    Auto-fulfill releases purchasable item unpaid

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

Requires a Lychee Supporter or Pro edition instance running the webshop with at least one enabled purchasable item. The free-item release specifically requires webshop_auto_fulfill_enabled to be turned on so OrderCompletedListener::fullfillOrder() auto-releases the item; the unauthenticated guest path additionally requires webshop_allow_guest_checkout to be enabled (otherwise a registered buyer account is needed). These are non-default, paid-edition and opt-in configuration flags, which materially limits the exploitable population. A further unverified limit: the closed-source license middleware was bypassed during testing, so the real license layer may perform extra payment-provider validation that blocks this on genuinely licensed deployments.

Impact

This is a genuine but conditional integrity flaw, not a drive-by critical. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) scores 8.3 (High) and models the attack honestly: network-reachable and unauthenticated for the guest path, but with AT:P (Attack Requirements: Present) reflecting that specific webshop configuration must be in place. The primary impact is VI:H (integrity) - a buyer obtains a purchasable item without real payment - with only VC:L confidentiality and no availability impact, so this is a fraud/revenue-loss issue rather than a system-compromise or RCE issue. No EPSS score, no CISA KEV listing, and no public exploit code were provided, so exploitation status is 'no public exploit identified at time of analysis'; the only public artifacts are the vendor advisory, fix commit, and PR diff, which describe the flaw but are not weaponized exploit code. The main caveat the vendor states explicitly: testing bypassed the closed-source license middleware, so whether the production license layer performs additional payment-provider validation remains UNVERIFIED - meaning real-world exploitability on a licensed Supporter/Pro instance is not fully confirmed. Overall priority is moderate: easy to trigger where conditions are met, but gated behind paid-edition webshop deployment and specific config flags, limiting the population of exploitable targets.

Exploit ScenarioDerived

On a Lychee Supporter/Pro instance running the webshop with guest checkout enabled, an attacker (or any guest buyer) starts a checkout session and directly submits the hidden 'Dummy' Omnipay test provider, which CreateSessionRequest accepts because it checks only that the value is a valid OmnipayProviderType and never calls isAllowed(). The attacker completes the fake test-gateway flow with no real payment, and if webshop_auto_fulfill_enabled is set, OrderCompletedListener::fullfillOrder() releases the purchasable item for free. No exploit code is public; the attack requires only crafted checkout requests and is network-reachable without authentication on the guest path.

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 – Oct 15, 2026

Paid fulfillment bypass in Lychee (Supporter/Pro editions) before 7.7.0: the checkout validators accept any OmnipayProviderType enum value, including the Dummy test gateway that is deliberately hidden from production checkout, so a remote unauthenticated buyer - where webshop_allow_guest_checkout is enabled - can start and finalize a session against the Dummy gateway and, with webshop_auto_fulfill_enabled on, have OrderCompletedListener::fullfillOrder() release the purchasable item without any real payment. The integrity impact is genuine but conditional (CVSS 4.0 base 8.3 with Attack Requirements: Present; assessed CVSS 3.1 8.3, C:L/I:H/A:N), since exploitation requires a paid Supporter/Pro instance running the webshop with at least one enabled purchasable item and the relevant opt-in flags. No public exploit identified at time of analysis, and the vendor has released a fixed version, 7.7.0.

RemediationAI

Vendor-released patch: upgrade to Lychee 7.7.0 (https://github.com/LycheeOrg/Lychee/releases/tag/v7.7.0), which introduces App\Rules\OmnipayProviderTypeRule and enforces isAllowed() on the provider parameter in both CreateSessionRequest and FinalizeRequest; the corresponding commit is 8b73656f920c682862b9199acc87fbaf72ee5a90 via PR #4507, and the advisory is https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-5wh2-hg7q-6hv3. If upgrading immediately is not possible, the most effective compensating control is to set webshop_auto_fulfill_enabled to false so confirmed orders are not released automatically by OrderCompletedListener::fullfillOrder(); the trade-off is that all orders - including legitimate paid ones - require manual review and fulfillment, increasing administrative workload and delaying delivery, and it does not prevent creation of a bogus Dummy session. A second control is to set webshop_allow_guest_checkout to false, forcing buyers to hold a registered account; this removes the unauthenticated path but adds signup friction and does not stop an authenticated buyer from supplying the Dummy provider. Because the Dummy provider is a code-level enum case rather than a configuration toggle, hiding it in production is not a reliable pre-patch mitigation; instead, restrict network access to the webshop checkout session and finalize endpoints (for example, put the Supporter/Pro instance behind VPN, HTTP basic auth, or a reverse proxy/WAF rule that rejects requests whose provider parameter is not an allow-listed value such as stripe/paypal), accepting the trade-off that this can break legitimate buyer flows and must mirror the gateway set actually in use. Finally, monitor and audit OrderCompletedListener fulfillment logs for orders associated with the dummy provider so any abuse is detected, noting that until version 7.7.0 is applied it remains unverified whether the closed-source license middleware performs additional provider validation on fully licensed deployments.

Affected VersionsENISA

Lychee < 7.7.0

Affected Packages

euvd lychee fix: 7.7.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 self-hosted PHP/Laravel photo-management application whose commercial Supporter and Pro tiers ship a webshop built on the Omnipay payment-gateway abstraction. Provider selection is modeled as the backed enum App\Enum\OmnipayProviderType, which exposes an isAllowed() method; production checkout hides the Dummy (test) provider through OmnipayFactory::get_supported_providers(). The weakness (CWE-20, improper input validation) is that CreateSessionRequest and FinalizeRequest validated the submitted provider with Laravel's Illuminate\Validation\Rules\Enum rule, which only asserts that the value is a valid enum case - it never calls isAllowed(). Any caller could therefore pass the Dummy provider value, drive the test-gateway flow to a successful-looking completion, and trigger order fulfillment via OrderCompletedListener::fullfillOrder(). The upstream fix in PR #4507 replaces the Enum rule with a new App\Rules\OmnipayProviderTypeRule that resolves OmnipayProviderType::tryFrom($value) and fails unless $provider?->isAllowed() === true; the new rule is applied as nullable (sometimes) in CreateSessionRequest (new OmnipayProviderTypeRule(true)) and as required in FinalizeRequest (new OmnipayProviderTypeRule(false)), with unit tests covering valid, unknown, and empty-string providers. The patch note also confirms the payment finalize status check was not the root cause, and that the closed-source license middleware was bypassed during testing, so it remains unverified whether the real license layer performs additional provider validation on genuinely licensed deployments.

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

Guest checkout path is network and unauthenticated (AV:N/PR:N/UI:N); payment-bypass yields high integrity impact (I:H) with limited confidentiality (C:L) and no availability impact; AC:L since the request is straightforward once the webshop config is present.

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

Lifecycle Timeline

2
Patch available
Oct 15, 2026 - 18:18 EUVD
CVE Published
Oct 15, 2026 - 16:36 cve.org
HIGH 8.3

DescriptionCVE.org

Lychee is a free, open-source photo-management tool. Prior to 7.7.0, Lychee hides the Omnipay Dummy test provider from the checkout options in production through OmnipayFactory::get_supported_providers(), but CreateSessionRequest validates only that the submitted provider is an OmnipayProviderType and does not enforce OmnipayProviderType::isAllowed(). A buyer, including a guest when webshop_allow_guest_checkout is enabled, can submit Dummy directly and complete the test gateway flow without a real payment. When webshop_auto_fulfill_enabled is enabled, OrderCompletedListener::fullfillOrder() can then release the purchasable item. The issue requires access to the Supporter or Pro webshop and an enabled purchasable item. Testing bypassed the closed-source license middleware, so whether the real license layer performs additional payment-provider validation remains unverified. The payment finalize status check itself is not the root cause. This issue is fixed in version 7.7.0.

Technical POC Analysis

CWE-20 (Improper Input Validation), with CWE-184 (Incomplete List of Disallowed Inputs) as the secondary class: the "Dummy must not be usable in production" policy exists as a list that is enforced i…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Lychee's paid Supporter and Pro editions contain a checkout validation flaw that can let an unauthenticated buyer obtain paid, fulfillable items without making any real payment on any instance running the webshop module with guest checkout, auto-fulfillment, and at least one enabled purchasable item. Because fulfillment is automatic, affected organizations lose both the revenue and the goods or entitlements in a single transaction, with limited audit signal if no monitoring is in place. Leadership should treat this as a revenue-integrity and fraud exposure rather than a purely technical defect, and confirm whether any production storefronts match the required configuration.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Low
self-hosted photo tool; vulnerable path only in paid webshop edition
Social Media
2
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 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
No
Human Impact
High
Technical Impact
Partial

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
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-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

CVE-2026-57568 MEDIUM
5.7 Oct 15

Stored cross-site scripting in Lychee photo-management software (all versions prior to 7.6.0) allows an authenticated us

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