Description
FrontAccounting through 2.4.20 generates a CSRF token in end_form() in includes/ui/ui_controls.inc and embeds it as the _token hidden field in every form it renders, but only admin/users.php and admin/change_current_user_password.php call check_csrf_token() to validate it. No financial transaction handler validates the token, including gl/gl_journal.php, gl/gl_bank.php, purchasing/supplier_invoice.php, sales/customer_invoice.php, sales/customer_payments.php and admin/company_preferences.php, so those endpoints act on POST data with no origin check. An attacker who gets an authenticated user to load a page under attacker control can auto-submit a cross-origin form to any of them and have the forged journal entry, invoice, customer payment, bank transaction or company configuration change recorded under the victim's session.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| FrontAccounting | FrontAccounting | ≤ 2.4.20 | — |
References
- geo-chen/oss: FrontAccounting Finding 1 third-party-advisory
- https://github.com/FrontAccountingERP/FA product
- https://github.com/FrontAccountingERP/FA/blob/9464a3ffef03c139d9396e697bce9a0a9f131a72/includes/ui/ui_controls.inc#L89 technical-description
- VulnCheck Advisory: FrontAccounting through 2.4.20 Cross-Site Request Forgery on Financial Transaction Forms third-party-advisory