GHSA-m8r3-22v6-g877: CSRF

Published Sep 23, 2026
·
Updated

Summary The rexapiinstallpackageupdate API function (install addon) does not override requiresCsrfProtection(), which defaults to false in the base class rexapifunction. Any authenticated admin can therefore be tricked via a CSRF attack into silently triggering a package update from the REDAXO package server.

Details File: redaxo/src/core/lib/apifunction.php:277-280 php protected function requiresCsrfProtection() { return false; // DEFAULT — subclasses must opt in }

File: redaxo/src/addons/install/lib/api/apipackageupdate.php:8-39 php class rexapiinstallpackageupdate extends rexapifunction { public function execute() { if (!rex::getUser()?->isAdmin()) { throw new rexapiexception('You do not have the permission!'); } $addonkey = rexrequest('addonkey', 'string'); $fileId = rexrequest('file', 'int'); $installer = new rexinstallpackageupdate(); // ... downloads and installs $addonkey version $fileId from redaxo.org } // requiresCsrfProtection() NOT overridden — defaults to false }

For comparison, rexapiinstallpackageadd and rexapiinstallpackagedelete both correctly return true. Only rexapiinstallpackageupdate is missing this.

PoC html <!-- Attacker-controlled page --> <img src="https://victim-redaxo.example.com/index.php?page=install/packages&rex-api-call=installpackageupdate&addonkey=someaddon&file=42" /> When an authenticated admin visits this page, the request is automatically made with their session cookie, causing someaddon to be updated to version fileid=42.

Impact An attacker who can lure an admin to a malicious page can force-install specific addon versions. If combined with a supply-chain compromise of a package on redaxo.org, or by targeting a downgrade to a known-vulnerable version, this becomes a remote code execution vector. Even without supply-chain compromise, it can be used to disrupt the site by forcing unwanted updates.

Fix Add requiresCsrfProtection() to rexapiinstallpackageupdate: php protected function requiresCsrfProtection() { return true; }

Affected Software

1 affected componentFixes available
composer/redaxo/source<=5.21.1
5.21.2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade composer/redaxo/source to a version that resolves this vulnerability.

    Fixed in 5.21.2
  2. Configuration

    Override requiresCsrfProtection() in rex_api_install_package_update to return true, enabling CSRF protection for the install_package_update API function.

    rex_api_install_package_update requiresCsrfProtection() = true

Event History

Sep 23, 2026
Advisory Published
via GitHub·02:09 PM
Data Sourced
via GitHub·02:09 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which users are at risk of being targeted?

An authenticated REDAXO administrator is the relevant target. The administrator must be induced to interact with a CSRF request while authenticated.

2

What can a successful request do?

It can trigger installation of a selected package update from the REDAXO package server. The affected operation uses the addon key and file identifier supplied to the update API.

3

Are other package-management actions affected in the same way?

The package add and package delete API functions are described as explicitly requiring CSRF protection. The missing override is identified only for the package update API function.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203