- Package
- contao/core-bundle
- Fixed in
- 5.3.50, 5.7.12
- Published
- Fri 9 Oct 2026, 21:54 LisbonUpdated Mon 26 Oct 2026, 03:27 Lisbon
- Installs on Packagist
- 2M
In plain words
An attacker can cause a logged-in Contao back end user to perform actions by getting them to load a URL, without a security token or confirmation. This affects GET actions dispatched through parameters other than act, including key actions, and is limited to modules the user can access. Verified actions were destructive or changed state; no privilege-granting key action was found.
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| contao/core-bundle | >= 4.0.0, < 5.3.50 | 5.3.50 |
| contao/core-bundle | >= 5.4.0-RC1, < 5.7.12 | 5.7.12 |
Am I affected?
Check composer.lock for contao/core-bundle at >= 4.0.0, < 5.3.50 or >= 5.4.0-RC1, < 5.7.12. If affected, review back end actions dispatched through GET parameters other than act, including key, in modules your back end users can access. Exploitation requires a logged-in back end user to load an attacker-supplied URL. The fixed versions are 5.3.50 and 5.7.12.
What to do
Check which version you have, then update to a fixed release for your branch (5.3.50, 5.7.12):
composer show contao/core-bundle | grep versions
composer update contao/core-bundle
If your version constraint in composer.json keeps you below a fixed release, raise it first. Whether your configuration is affected, and the exact version ranges, are in the advisory itself.
The advisory's description
RequestTokenListener is the only generic REQUEST_TOKEN validator in Contao and it only runs on POST. On the GET side the guard is local and declarative, and it only fires when an act parameter is present. Every back end action dispatched through a different parameter therefore has no CSRF protection at all. This is a family rather than a single bug.
Impact
An attacker who gets a logged in back end user to load a URL performs back end actions as that user, with no token and no confirmation. Because the exposure follows from the dispatch mechanism rather than from one callback, every present and future key= action inherits it.
Honest bound. The victim must be authenticated in the back end and must load the URL, and the reachable actions are limited to the modules that user can access. We have not found a key= action that grants privileges; the ones we verified are destructive or state changing rather than escalating.
Weakness: CWE-352 Cross-Site Request Forgery (CSRF). Reported by HDWSec.
The advisory
- GitHub Advisory Database: GHSA-9ff2-p842-45wq, with who is affected and how
- OSV.dev: GHSA-9ff2-p842-45wq
- The week's digest, with the other advisories from 5 Oct 2026
- All advisories for contao/core-bundle