pay-rails/pay: non-constant-time HMAC comparison in Paddle Billing webhook signature verifier
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| pay-rails | pay | affected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Pay-rails | Pay |
|
No CVSS v4.0
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.578% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Pay-rails
Pay-rails pay |
|
| Vendors & Products |
Pay-rails
Pay-rails pay |
| Type | Values Removed | Values Added |
|---|---|---|
| Description | Pay is a payments engine for Ruby on Rails 6.0 and higher. Prior to 11.6.2, Pay::Webhooks::PaddleBillingController#valid_signature? in app/controllers/pay/webhooks/paddle_billing_controller.rb compares the computed 64-character SHA-256 HMAC with the attacker-controlled h1 token from the Paddle-Signature header using Ruby String#==. An unauthenticated remote attacker who can repeatedly submit requests to /pay/webhooks/paddle_billing and obtain sufficiently precise timing measurements can infer matching digest prefixes and recover a valid signature. A forged accepted webhook is enqueued through Pay::Webhooks::ProcessJob and can cause a host application to update billing state, provision paid features, record refunds, or trigger customer notifications. This issue is fixed in version 11.6.2. | |
| Title | pay-rails/pay: non-constant-time HMAC comparison in Paddle Billing webhook signature verifier | |
| Weaknesses | CWE-208 | |
| References |
| |
| Metrics |
cvssV3_1
|