{"id":"CVE-2026-119421","kind":"vulnerability","aliases":["CVE-2026-119421"],"related":[],"title":"Hyperswitch: missing authorization lets anyone confirm and redirect payouts","description":"Juspay Hyperswitch through 1.128.0 (and builds before 2026.10.19.0) contains a missing authorization vulnerability that allows unauthenticated attackers to confirm payouts with any client_secret via POST /payouts/{payout_id}/confirm. Attackers holding the merchant's publishable key and a payout_id can confirm payouts and overwrite amount, currency, connector, and routing fields to trigger unauthorized merchant payouts.","summary":"Juspay Hyperswitch, an open-source payments switch, does not check authorization on its payout confirm endpoint, so unauthenticated callers can confirm payouts with any client_secret. An attacker holding a merchant's publishable key and a payout_id can overwrite amount, currency, connector and routing fields to trigger unauthorized merchant payouts.","severity":"high","cvss":8.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["hyperswitch","package","payments","self-hosted"],"not_affected_if":["build-2026.10.19.0-or-later","managed-hosting"],"how_to_check":"- Check the deployed Hyperswitch build version against the `2026.10.19.0` threshold named in the advisory.\n- Review whether `POST /payouts/{payout_id}/confirm` is reachable from the internet through your gateway or load balancer.","fix":"- Move to a Hyperswitch build at or after `2026.10.19.0`, as stated in the advisory.","status":"open","published_at":"2026-10-30T12:16:38+00:00","first_seen_at":"2026-10-30T12:30:25+00:00","triaged_at":"2026-10-30T12:32:14+00:00","updated_at":"2026-10-30T12:32:14+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-30T12:32:14Z","model":"claude-haiku-5-5","output":{"fix":"- Move to a Hyperswitch build at or after `2026.10.19.0`, as stated in the advisory.","reach":"internet","title":"Hyperswitch: missing authorization lets anyone confirm and redirect payouts","impact":"high","summary":"Juspay Hyperswitch, an open-source payments switch, does not check authorization on its payout confirm endpoint, so unauthenticated callers can confirm payouts with any client_secret. An attacker holding a merchant's publishable key and a payout_id can overwrite amount, currency, connector and routing fields to trigger unauthorized merchant payouts.","audience":"businesses","category":"package","nicknames":[],"who_cares":["hyperswitch","payments","self-hosted"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"Attackers trigger unauthorized merchant payouts to chosen destinations.","analyst_note":"Confirm the affected version range and fixed build from the Juspay advisory or the NVD entry, and check whether the publishable key alone is enough to reach the confirm endpoint.","how_to_check":"- Check the deployed Hyperswitch build version against the `2026.10.19.0` threshold named in the advisory.\n- Review whether `POST /payouts/{payout_id}/confirm` is reachable from the internet through your gateway or load balancer.","plain_action":"","needs_analyst":true,"not_affected_if":["managed-hosting","build-2026.10.19.0-or-later"],"who_is_affected":"Teams that self-host Juspay Hyperswitch through 1.128.0 or builds before 2026.10.19.0 and expose the payouts API to callers outside their network. The attacker needs the merchant's publishable key and a payout_id, so the exposure depends on how widely those values are known.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.00075,"input_tokens":4189,"output_tokens":662,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-119421':12A,15A '-2026':11A,14A '/confirm':103C '/payouts':100C '1.128.0':77C '2026.10.19.0':81C 'allow':88C 'amount':63B,120C 'anyon':5A 'attack':50B,90C,104C 'author':3A,33B,85C 'build':79C 'caller':41B 'check':32B 'client':47B,96C 'confirm':6A,37B,43B,92C,116C 'connector':65B,122C 'contain':82C 'currenc':64B,121C 'cve':10A,13A 'endpoint':38B 'field':68B,125C 'hold':51B,105C 'host':21B 'hyperswitch':1A,16B,23B,75C 'id':60B,102C,114C 'juspay':22B,74C 'key':56B,110C 'let':4A 'merchant':53B,72B,107C,129C 'miss':2A,84C 'open':26B 'open-sourc':25B 'overwrit':62B,119C 'packag':17B 'payment':18B,28B 'payout':9A,36B,44B,59B,73B,93C,101C,113C,117C,130C 'post':99C 'publish':55B,109C 'redirect':8A 'rout':67B,124C 'secret':48B,97C 'self':20B 'self-host':19B 'sourc':27B 'switch':29B 'trigger':70B,127C 'unauthent':40B,89C 'unauthor':71B,128C 'via':98C 'vulner':86C","nicknames":[],"mitigations":[],"who_affected":"Teams that self-host Juspay Hyperswitch through 1.128.0 or builds before 2026.10.19.0 and expose the payouts API to callers outside their network. The attacker needs the merchant's publishable key and a payout_id, so the exposure depends on how widely those values are known.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T12:16:38+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119421","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119421","severity":null,"published_at":"2026-10-30T12:16:38+00:00","modified_at":"2026-10-30T12:16:38+00:00","first_seen_at":"2026-10-30T12:30:25+00:00","fetched_at":"2026-10-30T12:30:25+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}