{"id":"CVE-2026-77470","state":"PUBLISHED","title":"Lychee: Webshop checkout lets the client override the payment `amount` sent to the gateway via malicious crafted POST request","description":"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.","publishedAt":"2026-10-15T16:36:09.597Z","updatedAt":"2026-10-15T18:30:17.464Z","severity":{"score":8.3,"label":"High","version":"4.0","vector":"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","source":"GitHub_M"},"assigner":"GitHub_M","products":["LycheeOrg Lychee"],"affected":[{"vendor":"LycheeOrg","product":"Lychee","versions":[{"version":"< 7.7.1","status":"affected"}]}],"references":["https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-476v-jr53-8rxc","https://github.com/LycheeOrg/Lychee/pull/4514","https://github.com/LycheeOrg/Lychee/commit/24e6e11f1da131ed20b192d7d7b7ca9084451a2f","https://github.com/LycheeOrg/Lychee/releases/tag/v7.7.1"],"weaknesses":["CWE-20","CWE-472","CWE-915"],"ingestedAt":"2026-10-29T20:13:07.220Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/77xxx/CVE-2026-77470.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-77470","state":"PUBLISHED","datePublished":"2026-10-15T16:36:09.597Z","dateUpdated":"2026-10-15T18:30:17.464Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-08-20T20:07:49.962Z"},"containers":{"cna":{"title":"Lychee: Webshop checkout lets the client override the payment `amount` sent to the gateway via malicious crafted POST request","descriptions":[{"lang":"en","value":"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."}],"affected":[{"vendor":"LycheeOrg","product":"Lychee","versions":[{"version":"< 7.7.1","status":"affected"}]}],"references":[{"url":"https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-476v-jr53-8rxc","name":"https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-476v-jr53-8rxc","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/LycheeOrg/Lychee/pull/4514","name":"https://github.com/LycheeOrg/Lychee/pull/4514","tags":["x_refsource_MISC"]},{"url":"https://github.com/LycheeOrg/Lychee/commit/24e6e11f1da131ed20b192d7d7b7ca9084451a2f","name":"https://github.com/LycheeOrg/Lychee/commit/24e6e11f1da131ed20b192d7d7b7ca9084451a2f","tags":["x_refsource_MISC"]},{"url":"https://github.com/LycheeOrg/Lychee/releases/tag/v7.7.1","name":"https://github.com/LycheeOrg/Lychee/releases/tag/v7.7.1","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV4_0":{"attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"PRESENT","privilegesRequired":"NONE","userInteraction":"NONE","vulnConfidentialityImpact":"LOW","vulnIntegrityImpact":"HIGH","vulnAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","subAvailabilityImpact":"NONE","baseScore":8.3,"baseSeverity":"HIGH","vectorString":"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","version":"4.0"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-20","lang":"en","description":"CWE-20: Improper Input Validation","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-472","lang":"en","description":"CWE-472: External Control of Assumed-Immutable Web Parameter","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-915","lang":"en","description":"CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-10-15T16:36:09.597Z"},"source":{"advisory":"GHSA-476v-jr53-8rxc","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","references":[{"url":"https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-476v-jr53-8rxc","tags":["exploit"]}],"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-10-15T18:29:45.817503Z","id":"CVE-2026-77470","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-15T18:30:17.464Z"}}]}}}