Skip to content

Fix payment return forgery and release Odoo 18 security update - #4

Merged
orangebtc merged 1 commit into
mainfrom
development/odoo-payment-return-security
Oct 13, 2026
Merged

orangebtc merged 1 commit into
mainfrom
development/odoo-payment-return-security

Conversation

@orangebtc

@orangebtc orangebtc commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

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 to 18.0.1.0.1, document upgrade requirements and Odoo 18 support, and credit kta1kri for the private report.

Validation: python3 scripts/validate.py and git diff --check pass. 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 from pending to done.

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.

@orangebtc
orangebtc enabled auto-merge (squash) October 13, 2026 09:08
@orangebtc
orangebtc disabled auto-merge October 13, 2026 09:18
@orangebtc
orangebtc enabled auto-merge (squash) October 13, 2026 09:18
@orangebtc
orangebtc disabled auto-merge October 13, 2026 09:20
@orangebtc
orangebtc merged commit 5f8a15f into main Oct 13, 2026
2 checks passed
@orangebtc
orangebtc deleted the development/odoo-payment-return-security branch October 13, 2026 09:20
@orangebtc

Copy link
Copy Markdown
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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants