Possible signature replay in Action Mailbox Mailgun ingress
Published: November 04, 2026
SECURITY IDENTIFIERS
- GHSA: GHSA-5957-c7qm-m469
- Vendor Advisory: https://github.com/rails/rails/security/advisories/GHSA-5957-c7qm-m469
GEM
FRAMEWORK
SEVERITY
CVSS v3.x: 3.7 (Low)
PATCHED VERSIONS
~> 8.0.5, >= 8.0.5.2
>= 8.1.4.1
DESCRIPTION
Impact
The Action Mailbox Mailgun ingress authenticates a request with an HMAC of the
timestamp and token parameters concatenated without a separator, and
ActionMailbox::Ingresses::Mailgun::InboundEmailsController::Authenticator#recent?
rejects only timestamps more than 2 minutes in the past. Because the signature
does not fix the boundary between the two values, a captured signed request
can be presented with a timestamp far in the future, which the ingress then
accepts indefinitely. An attacker who obtains one signed Mailgun webhook
request, but not the signing key, could submit arbitrary inbound email that
Action Mailbox processes as genuine, possibly leading to forged messages
attributed to the sender of the attacker's choosing.
Applications that receive inbound email through the Action Mailbox Mailgun ingress are affected.
Details
The fixed releases also reject a Mailgun request whose timestamp is more than 2 minutes ahead of the server's clock, as they already did for one more than 2 minutes behind it. An application whose clock runs more than 2 minutes behind Mailgun's will now reject genuine webhooks and should synchronize its clock.
Releases
The fixed releases are available at the normal locations.
Patches for those who cannot upgrade at once:
- 8.1: https://github.com/rails/rails/commit/c3a295c5c22266e8ec4d0e664e6923a299235e7a.patch
- 8.0: https://github.com/rails/rails/commit/4aa2ec66822bc4eb8b341a0608f1c90a3e371a34.patch
Credit
This issue was responsibly reported by HackerOne researcher davutselcuk.
RELATED
- https://rubygems.org/gems/actionmailbox/versions/8.1.4.1
- https://github.com/rails/rails/releases/tag/v8.1.4.1
- https://rubygems.org/gems/actionmailbox/versions/8.0.5.2
- https://github.com/rails/rails/releases/tag/v8.0.5.2
- https://github.com/rails/rails/commit/c3a295c5c22266e8ec4d0e664e6923a299235e7a
- https://github.com/rails/rails/commit/4aa2ec66822bc4eb8b341a0608f1c90a3e371a34
- https://github.com/rails/rails/security/advisories/GHSA-5957-c7qm-m469
