CVE Pending

Shipped administrative credentials in Juspay Hyperswitch

Hyperswitch ships a working admin key and JWT secret in its default configuration — and the startup validator refuses only blank values, never these published defaults. Any instance left on shipped config runs with credentials printed in the public source.

Critical · CVSS 9.8 CWE-798 Affected: through v2026.07.08.1 Vendor: Juspay Technologies Class: Hardcoded credentials
01 · The boundary

A shipped configuration boots into full administrative access over the network

The credentials were never hidden. The validator just never looked for them.

Hyperswitch is open-source payment infrastructure that operators run on their own servers. The shipped example configs contain a working admin API key — the literal string test_admin — and a JWT secret, the literal word secret.

The default that was never rejected

Attacker → validator → full admin

ATTACKER Network reach presents published default api-key: “test_admin” STARTUP VALIDATOR POST /organization api-key: test_admin HYPERSWITCH Accepts it checks empty only — default passes 200 OK — full admin control
Identifier
CVE requestedpending MITRE assignment
Severity
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
Hard-coded CredentialsCWE-798
Affected
Hyperswitchthrough v2026.07.08.1 · commit 51a6960 (2026-07-08)
Vendor
Juspay Technologiesnotified security@juspay.in
Vector
Networkself-hosted, default config
Researcher
Drew Morana@dmorana · Whitenbaker
Status
Disclosed90-day window elapsed
02 · At a glance

One published string is the whole exploit

The startup validator in crates/router/src/configs/validations.rs applies is_default_or_empty() to the credential fields. Because they are typed Secret<String>, the “default” compared against is the empty string — so a blank credential is rejected but the published default is accepted.

An instance deployed on shipped configuration boots and runs with credentials printed, in plain text, in the public repository.

Root cause

The credentials were never hidden. The validator just never looked for them.

Every instance is served the same shipped config — and the check refuses only the empty string, not the default that follows it.

03 · Technical analysis

No boundary between reaching the network and administering the deployment

The three scenarios were confirmed against the current release. Each grants control that should require issued administrative credentials. The same key path also reads stored customer PII and creates payments.

The pattern is recognized and CVE-worthy. Apache APISIX was assigned CVE-2020-13945 for the identical class — a shipped default admin token accepted by a self-hosted service — independent of whether an operator “should have” rotated it.

AAuthenticate with the published key
POST /organization
api-key: test_admin

→ 200 OK  org created under attacker control
BMint API keys / provision merchants
POST /api_keys/{merchant_id}
api-key: test_admin

→ 200 OK  live API key issued
CDestructive administrative control
DELETE /accounts/{merchant_id}
api-key: test_admin

→ 200 OK  merchant permanently deleted
04 · Impact

Full administrative compromise of a payment system

An attacker who can reach a default-configuration instance over the network gains administrative control: creating organizations and merchants, minting API keys, exfiltrating customer PII, creating payments, and permanently deleting merchant accounts.

Exploitation requires no discovery step and no privilege — only network reachability to an instance deployed on shipped configuration.

Affected operators requiring remediation guidance should contact Whitenbaker Security Research.

05 · Disclosure timeline

Initial disclosure. Reported to Juspay at security@juspay.in under coordinated disclosure, opening a 90-day window.

Window elapsed. The 90-day deadline was reached with no fixed release published.

Re-confirmed on current release. Defaults and validator behavior verified at v2026.07.08.1, commit 51a6960489caa3bb246e547b4b3cc11bd890a190.

CVE requested. Filed with MITRE with version and commit identifiers; this advisory published as the public reference.

Whitenbaker

Adversarial security research — silent-patch detection, vulnerability disclosure, and the gap between what vendors ship and what they tell you.

Drew Morana · @dmorana

Published for coordinated disclosure and defensive purposes. Findings confirmed against the referenced public release. © 2026 Whitenbaker. All rights reserved.