Repository navigation
Fix payment return forgery and release Odoo 18 security update - #4
Merged
Merged
Conversation
orangebtc
enabled auto-merge (squash)
October 13, 2026 09:08
orangebtc
disabled auto-merge
October 13, 2026 09:18
orangebtc
enabled auto-merge (squash)
October 13, 2026 09:18
jamesw383
approved these changes
Oct 13, 2026
Collaborator
Author
|
Thank you @kta1kri for privately finding and reporting this issue, and for suggesting the fix: keep the browser return route as a redirect and rely on signed webhooks to confirm payments. Your contribution helped us secure the MakePay Odoo plugin. We have added @kta1kri to our bug bounty founders list. The current status of the future bounty program and the planned follow-up have been explained to him by email. Public acknowledgement: #6. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The public MakePay return route could process browser-supplied payment status under sudo and mark an unpaid Odoo transaction as confirmed. Make the return route redirect-only and require signed webhook reconciliation for payment state changes.
Preserve real confirmations by accepting MakePay's plain JSON deliveries and
session.status=complete. Reject malformed webhook payloads and match paid event names exactly. Bump the Odoo 18 module to18.0.1.0.1, document upgrade requirements and Odoo 18 support, and credit kta1kri for the private report.Validation:
python3 scripts/validate.pyandgit diff --checkpass. All 10 Odoo 18 HTTP regression tests pass locally in PostgreSQL 16 and in GitHub Actions. Tests cover checkout rendering, forged returns, valid signed webhooks, invalid signatures, tampered bodies, malformed payloads, and state reconciliation. Running the return regression against the original revision reproduces an unpaid transaction changing frompendingtodone.Payment-link creation is mocked in the checkout test; no real MakePay payment or customer deployment was used. This release supports Odoo 18 and requires the merchant's webhook URL and signing secret to be configured.