GHSA-5957-c7qm-m469: Action Mailbox: Possible signature replay in Action Mailbox Mailgun ingress
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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
rubygems/actionmailboxto a version that resolves this vulnerability.Fixed in 8.0.5.2 - Upgrade
Upgrade
rubygems/actionmailboxto a version that resolves this vulnerability.Fixed in 8.1.4.1 - Upgrade
Upgrade
rails/railsto a version that resolves this vulnerability.Fixed in 8.0 - Operational
Synchronize the application server's clock with a reliable time source so it is not more than 2 minutes behind or ahead of Mailgun's clock.
Event History
Frequently Asked Questions
Which deployments are exposed?
Applications that receive inbound email through the Action Mailbox Mailgun ingress are affected.
What does an attacker need to exploit this issue?
An attacker needs to obtain a single signed Mailgun webhook request. They do not need the Mailgun signing key.
What could successful exploitation allow?
The attacker could submit arbitrary inbound email that Action Mailbox processes as genuine, potentially forging messages attributed to a sender of the attacker’s choosing.
What operational change is relevant when applying the fix?
The fixed behavior rejects requests whose timestamps are more than two minutes ahead of the server clock. Servers whose clocks are more than two minutes behind Mailgun may reject legitimate webhooks and should synchronize their clocks.