Skip to main content

Lychee EUVDEUVD-2026-102196

| CVE-2026-77470 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 unauthenticated Checkout/Process API
  2. Delivery
    Inject additional_data overriding amount/currency
  3. Exploit
    Later keys overwrite server-computed params
  4. Execution
    Gateway approves attacker-chosen underpayment
  5. Impact
    Obtain auto-fulfilled goods, defraud merchant

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 instance with the Supporter/Pro webshop feature enabled, at least one purchasable item configured, and a non-PayPal Omnipay payment gateway in use (PayPal is explicitly not affected). No authentication is required (PR:N) and no user interaction is needed, but the vulnerable code path only exists when these webshop conditions are met; the additional_data array must contain keys (amount, currency, returnUrl, cancelUrl, transactionId) that collide with and overwrite the server-computed purchase parameters during CheckoutService::preparePurchaseParameters(). The limiting factor is the opt-in, non-default webshop deployment plus gateway type, which sharply narrows the exposed population.

Impact

This is a credible, prioritizable business-logic flaw rather than an inflated high-CVSS issue. The official CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N, base 8.3) shows a network-reachable, low-complexity, unauthenticated flaw whose primary impact is high integrity (VI:H) with minor confidentiality (VC:L) and no availability impact - consistent with a mass-assignment/parameter-override that lets a buyer dictate the charged amount. The AT:P (attack requirement 'Present') and the description's stated prerequisites (enabled webshop, a purchasable item, an affected non-PayPal Omnipay gateway) are the key tempering factors: this only affects Lychee instances actively running the paid Supporter/Pro webshop, which is an opt-in, non-default deployment. A proof-of-concept exploit is confirmed to exist (the fixing PR #4514 ships tests/Webshop/Checkout/PocAmountOverrideTest.php demonstrating client-controlled amount override), so publicly available exploit code exists. No EPSS score was provided in the input and the CVE is not listed in CISA KEV, so there is no evidence of widespread or active exploitation - exploitation is plausible but would be limited to the subset of Lychee operators with a live webshop. Net: real and actionable for anyone running the Lychee webshop, but narrow in blast radius because of the required feature set.

Exploit ScenarioDerived

An attacker browses to a Lychee instance that has the Supporter/Pro webshop enabled with a purchasable item and a non-PayPal Omnipay gateway configured. Without authenticating, they submit POST /api/v2/Shop/Checkout/Process with valid card data plus an additional_data array that overrides the server-computed amount (and optionally currency/returnUrl/transactionId), causing the gateway to approve a drastically reduced payment while Lychee auto-fulfills the goods. A working proof-of-concept exists in the vendor fix PR (#4514).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 15, 2026

Unauthenticated buyers on Lychee instances running the Supporter/Pro webshop can tamper with the parameters handed to the payment gateway, overriding the server-computed amount, currency, returnUrl, cancelUrl, or transactionId so that a gateway approves a payment for an attacker-chosen price while the merchant is underpaid and auto-fulfilled goods are still delivered. The flaw lives in CheckoutService::preparePurchaseParameters(), which merges the client-supplied additional_data array after the server's own purchase parameters, allowing later string keys to overwrite earlier ones before processPayment() reaches a non-PayPal Omnipay gateway. Exploitation is not a network-wide exposure: it requires an enabled webshop, at least one purchasable item, and an affected Omnipay gateway (PayPal is explicitly not affected), which sharply narrows the population at risk; no public exploit code was identified at time of analysis, though the upstream fix ships a regression test that demonstrates the parameter override, and no CISA KEV entry exists. This is best treated as a credible, prioritizable business-logic flaw rather than an inflated high-severity issue, since the integrity impact on the merchant's billing is real but the prerequisites are opt-in and non-default.

RemediationAI

Vendor-released patch: 7.7.1 - upgrade Lychee to v7.7.1 or later (release https://github.com/LycheeOrg/Lychee/releases/tag/v7.7.1, fixing PR https://github.com/LycheeOrg/Lychee/pull/4514, commit 24e6e11f1da131ed20b192d7d7b7ca9084451a2f), which strips any additional_data keys that already exist in the server-computed $params before merging so client input can no longer overwrite amount, currency, returnUrl, cancelUrl, or transactionId; the patch also bumps the internal config version to 070701 and clears the application cache, so operators should run the database migration and verify the configured version after upgrading. If an immediate upgrade is not possible, the most effective compensating control is to disable the webshop entirely, which fully removes the vulnerable code path at the cost of losing storefront functionality; a narrower alternative is to restrict the webshop to PayPal as the sole Omnipay gateway, since the advisory states PayPal is explicitly not affected and re-derives the charge server-side, though this changes the merchant's payment-provider mix and may carry its own commercial constraints. Operators who must leave a non-PayPal gateway live should temporarily restrict access to POST /api/v2/Shop/Checkout/Process (for example at the reverse proxy or WAF) to trusted networks or add server-side reconciliation that compares the gateway-reported captured amount against the order's server-computed total before auto-fulfilment, accepting that reconciliation adds manual review overhead and does not prevent the malformed request from reaching the gateway. Regardless of mitigation, review recent webshop orders for underpayment anomalies until the upgrade is in place, and consult the vendor advisory https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-476v-jr53-8rxc for any updates.

Affected VersionsENISA

Lychee < 7.7.1

Affected Packages

euvd lychee fix: 7.7.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 a PHP/Laravel photo-management application, and the affected component is its optional Supporter/Pro webshop, which uses the Omnipay payment-abstraction library to talk to multiple gateways. The root-cause class is CWE-20 (Improper Input Validation): CheckoutService::preparePurchaseParameters() builds a server-authoritative $params array (amount, currency, returnUrl, cancelUrl, transactionId) and then overlays the request's unrestricted additional_data array on top of it. Because PHP array merging lets later string keys replace earlier ones, any key the attacker supplies that collides with a server-computed key wins, and the poisoned array is subsequently passed by CheckoutService::processPayment() into the Omnipay gateway's purchase() call. The vulnerability is therefore a parameter-injection/price-tampering issue, not a memory-safety or injection-in-the-classic-sense bug, and it is gateway-dependent: Omnipay integrations that re-derive amounts server-side or that ignore client-supplied fields (notably PayPal) are explicitly not affected. One cross-source note: the supplied tag set labels this as 'Information Disclosure', which does not reflect the actual integrity/business-logic nature of the flaw - the CVSS vector and independent assessment both point to integrity (I:H) with only limited confidentiality exposure. Per the CPE (cpe:2.3:a:lycheeorg:lychee:*:*:*:*:*:*:*:*), all Lychee builds before 7.7.1 carry the vulnerable code path.

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 6.5 MEDIUM

Network, unauthenticated, no interaction; AC:H reflects required non-default webshop/gateway configuration; impact is integrity (price tampering) with minor confidentiality and no availability effect.

3.1 AV:N/AC:H/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.1, the Supporter or Pro webshop POST /api/v2/Shop/Checkout/Process flow accepts an unrestricted additional_data array and CheckoutService::preparePurchaseParameters() merges it after server-computed purchase parameters. Because later string keys overwrite earlier keys, an unauthenticated buyer can replace amount, currency, returnUrl, cancelUrl, or transactionId before CheckoutService::processPayment() passes the parameters to a non-PayPal Omnipay gateway. An attacker can therefore make a gateway accept a successful payment for an attacker-selected amount and obtain auto-fulfilled goods while underpaying the merchant. The issue requires an enabled webshop, a purchasable item, and an affected Omnipay gateway. This issue is fixed in version 7.7.1.

Technical POC Analysis

Improper input validation (CWE-20 as assigned; the advisory also maps CWE-472 External Control of Assumed-Immutable Web Parameter and CWE-915 Improperly Controlled Modification of Dynamically-Determi…

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 instances running the Supporter/Pro webshop with an affected non-PayPal Omnipay payment gateway are exposed to a high-severity payment-tampering flaw (CVSS 8.3) that can let a buyer alter checkout parameters so the gateway approves an attacker-chosen amount while the merchant is underpaid and auto-fulfilled goods are still delivered. This creates a revenue-integrity and order-fulfillment risk for affected merchants, though exposure requires an enabled webshop, at least one purchasable item, and an affected gateway; PayPal is explicitly not affected. No vendor-released patch identified at time of analysis, and no public exploit identified at time of analysis, so leadership should prioritize interim controls and transaction monitoring for affected storefronts.

Business Impact: High
Compensating Controls

Disable the webshop or affected non-PayPal Omnipay gateway, switch to PayPal where supported, strip or reject client-supplied additional_data before processPayment, enforce server-side payment amount/currency/URL/transaction ID validation, reconcile gateway approvals to order totals, and monitor for auto-fulfillment mismatches. No vendor-released patch identified at time of analysis.

Threat Intelligence Overview

EPSS Score
0.5%
Top 62% exploitable
Prevalence
Low
niche self-hosted photo tool; paid webshop feature rarely enabled
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.5%
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

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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-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