CVE-2026-70658CWE-208

CVE-2026-70658

High · published September 14, 2026

CVSS v3.1
7.4
EPSS
1%
Percentile
46.9
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
7.4 · HIGH
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
CVSS v4.0
Not supplied
EPSS
0.00578 · 46.9th percentile
Weakness
CWE-208 · Observable Timing Discrepancy
Published
2026-09-14T22:19Z
References (4)
EPSS history
Timeline
  • 17 SEP 03:32Z
    EPSS moved — → 1%
    epss
  • 14 SEP 17:14Z
    pay-rails/pay: non-constant-time HMAC comparison in Paddle Billing webhook signature verifier
    cvelistv5