/

CVE-2026-111607

Severity:

HIGH RISK

(7.1)

IDOR (CWE-639) in Jeepay Merchant Payment Configuration

CVE-2026-111607

Deferred

Vulnerability type

Category:

Insecure Direct Object Reference

CWE:

CWE-639

Impact:

Unauthorized payment configuration tampering

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Jeepay contains an insecure direct object reference in the merchant payment configuration update flow. An authenticated merchant user with the relevant default permission may supply another merchant's identifier and modify payment channels, signing material, certificates, or fee rates.

Jeepay contains an insecure direct object reference in the merchant payment configuration update flow. An authenticated merchant user with the relevant default permission may supply another merchant's identifier and modify payment channels, signing material, certificates, or fee rates.

Affected context

The issue occurs in Jeepay's merchant payment configuration management, specifically the MchPayInterfaceConfigController.saveOrUpdate operation. It becomes risky when authorization checks rely on a caller-controlled infoId without confirming that the referenced payment configuration belongs to the authenticated merchant. Deployments that grant the default ENT_MCH_PAY_CONFIG_ADD permission to merchant users may expose this cross-merchant modification path.

The issue occurs in Jeepay's merchant payment configuration management, specifically the MchPayInterfaceConfigController.saveOrUpdate operation. It becomes risky when authorization checks rely on a caller-controlled infoId without confirming that the referenced payment configuration belongs to the authenticated merchant. Deployments that grant the default ENT_MCH_PAY_CONFIG_ADD permission to merchant users may expose this cross-merchant modification path.

Exploit preconditions

  • Attack surface: Authenticated merchant payment configuration endpoint
  • Required access: A valid merchant account with the applicable payment-configuration permission
  • Trigger point: A configuration save or update request handled by MchPayInterfaceConfigController.saveOrUpdate
  • Why exploitation is possible: The referenced merchant object may be selected through a caller-supplied identifier without adequate ownership or tenant-bound authorization checks
  • Attack surface: Authenticated merchant payment configuration endpoint
  • Required access: A valid merchant account with the applicable payment-configuration permission
  • Trigger point: A configuration save or update request handled by MchPayInterfaceConfigController.saveOrUpdate
  • Why exploitation is possible: The referenced merchant object may be selected through a caller-supplied identifier without adequate ownership or tenant-bound authorization checks

Why this happens

The vulnerability is caused by treating a client-provided object identifier as sufficient authority to access or modify a payment configuration. This is an insecure direct object reference, mapped to CWE-639, because authorization is not reliably enforced for the relationship between the authenticated merchant and the referenced resource. The insecure pattern allows object lookup and update decisions to be separated from tenant ownership validation.

The vulnerability is caused by treating a client-provided object identifier as sufficient authority to access or modify a payment configuration. This is an insecure direct object reference, mapped to CWE-639, because authorization is not reliably enforced for the relationship between the authenticated merchant and the referenced resource. The insecure pattern allows object lookup and update decisions to be separated from tenant ownership validation.

Potential impact

  • An attacker may overwrite another merchant's payment channel configuration
  • Payment processing could be disrupted or redirected
  • Signing keys or certificates could be replaced, potentially affecting transaction authentication
  • Fee rates could be altered, causing financial or reconciliation issues
  • Cross-merchant data integrity and tenant isolation could be weakened
  • An attacker may overwrite another merchant's payment channel configuration
  • Payment processing could be disrupted or redirected
  • Signing keys or certificates could be replaced, potentially affecting transaction authentication
  • Fee rates could be altered, causing financial or reconciliation issues
  • Cross-merchant data integrity and tenant isolation could be weakened

General mitigation guidance

Mitigation generally focuses on enforcing object-level authorization at every read and write boundary.

Common defensive patterns include:

  • Deriving the target merchant or tenant from the authenticated session rather than trusting a client-supplied identifier
  • Verifying resource ownership and tenant scope before loading or updating configuration
  • Applying deny-by-default authorization policies to sensitive payment configuration operations
  • Separating administrative and merchant permissions using least privilege
  • Validating signing material, certificates, and fee settings with controlled workflows and audit trails
  • Requiring explicit reauthorization or approval for high-impact configuration changes

Mitigation generally focuses on enforcing object-level authorization at every read and write boundary.

Common defensive patterns include:

  • Deriving the target merchant or tenant from the authenticated session rather than trusting a client-supplied identifier
  • Verifying resource ownership and tenant scope before loading or updating configuration
  • Applying deny-by-default authorization policies to sensitive payment configuration operations
  • Separating administrative and merchant permissions using least privilege
  • Validating signing material, certificates, and fee settings with controlled workflows and audit trails
  • Requiring explicit reauthorization or approval for high-impact configuration changes

How teams detect issues like this

Organizations can detect similar weaknesses through:

  • Static analysis and code review checks for update operations that use request identifiers without ownership predicates
  • Review of controller and service methods for missing tenant, merchant, or subject-level authorization
  • Tests that attempt cross-merchant access using valid accounts from different tenants
  • API policy enforcement requiring resource scope to match authenticated identity
  • Audit monitoring for payment configuration changes involving unexpected merchant identifiers, certificates, keys, or fee rates
  • Automated application security testing focused on authorization and object-level access control

Organizations can detect similar weaknesses through:

  • Static analysis and code review checks for update operations that use request identifiers without ownership predicates
  • Review of controller and service methods for missing tenant, merchant, or subject-level authorization
  • Tests that attempt cross-merchant access using valid accounts from different tenants
  • API policy enforcement requiring resource scope to match authenticated identity
  • Audit monitoring for payment configuration changes involving unexpected merchant identifiers, certificates, keys, or fee rates
  • Automated application security testing focused on authorization and object-level access control

Sources

SourceLink
github.comgithub.com/jeequan/jeepay/blob/V3.2.9/jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/merchant/MchPayInterfaceConfigController.java#L146-L186
hackmd.iohackmd.io/@hieuPenguinnn/jeepay-mch-payconfig-write-and-division-receiver-delete-cross-merchant-authz
vulncheck.comvulncheck.com/advisories/jeepay-through-3.2.9-idor-via-post-api-mch-payconfigs

Frequently asked

questions

It can be exploitable through the Jeepay payment configuration API when an attacker has authenticated merchant access and the endpoint is reachable through the deployed application.

Not necessarily. The described attack can involve a merchant user holding the default ENT_MCH_PAY_CONFIG_ADD permission, provided that the authorization controls do not enforce ownership of the targeted configuration.

Enforce server-side object-level authorization by deriving tenant context from the authenticated identity and confirming ownership before every configuration update.

Use deny-by-default permissions, centralize authorization checks, test cross-tenant access boundaries, and monitor sensitive configuration changes with immutable audit records.

It can be exploitable through the Jeepay payment configuration API when an attacker has authenticated merchant access and the endpoint is reachable through the deployed application.

Not necessarily. The described attack can involve a merchant user holding the default ENT_MCH_PAY_CONFIG_ADD permission, provided that the authorization controls do not enforce ownership of the targeted configuration.

Enforce server-side object-level authorization by deriving tenant context from the authenticated identity and confirming ownership before every configuration update.

Use deny-by-default permissions, centralize authorization checks, test cross-tenant access boundaries, and monitor sensitive configuration changes with immutable audit records.

Find out what's already
exploitable in your codebase.