Vulnerability DatabaseGHSA-fp4v-3mhm-pwjx

GHSA-fp4v-3mhm-pwjx: 
PHP vulnerability analysis and mitigation

Summary

When response signature verification is enabled, the SDK skips the check entirely if the API response carries no signature (or an empty one). An attacker who can modify API responses can strip the signature and substitute arbitrary response data, which the SDK then returns as verified.

Affected versions

EcosystemPackageAffectedPatched
Packagistpayos/payos<= 2.0.02.0.1
The Go (github.com/payOSHQ/payos-lib-golang/v2) and Java (vn.payos:payos-java) SDKs already rejected a missing signature and are not affected. Their patched releases only switch the comparison to constant time.

Severity

Low — CVSS 3.1 base score 3.7, CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N CWE-347 (Improper Verification of Cryptographic Signature), CWE-290 (Authentication Bypass by Spoofing).

Details

Response verification applies to payment-request create, get and cancel, and to invoice retrieval. The affected SDKs guarded the check with a condition equivalent to "if a signature is present and data is present, verify". A response with the signature removed therefore passed without any check:

  • Node: if (resSignature && data) in the client response handler.
  • Python (sync and async clients): the check was skipped when the signature was falsy.
  • PHP: the check ran only when the signature header was present.
  • .NET: the header lookup threw on absence instead of failing verification, and the surrounding logic skipped the check. The signature comparison also used a non-constant-time equality operator. Precondition: the attacker must be able to modify responses between the merchant server and the payOS API, for example through a compromised or malicious proxy or a TLS interception point the merchant trusts.

Fix

When response verification is enabled, a missing or empty signature now raises Missing response signature. A mismatch still raises Data integrity check failed. The comparison runs in constant time.

Workarounds

Until upgrading, re-fetch payment state with a separate verified call, or confirm payments only through verified webhooks, and ensure the HTTPS path to the payOS API does not traverse untrusted proxies.

Credits

Vo Le Anh Tuan (Swinburne University of Technology), GitHub @tuankhongbietcode


Source: NVD

Related PHP vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-7rj2-q7vr-2299MEDIUM6.1
  • PHP logoPHP
  • marjose123/filament-lockscreen
NoNoNov 12, 2026
GHSA-8f7v-xf7j-hc3qMEDIUM4.8
  • PHP logoPHP
  • payos/payos
NoYesNov 12, 2026
GHSA-v5hc-3j8r-9h37LOW3.7
  • PHP logoPHP
  • payos/payos
NoYesNov 12, 2026
GHSA-h4qh-3qph-xfm6LOW3.7
  • PHP logoPHP
  • payos/payos
NoYesNov 12, 2026
GHSA-fp4v-3mhm-pwjxLOW3.7
  • PHP logoPHP
  • payos/payos
NoYesNov 12, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management