Code injection in the way Symfony implements translation caching in FrameworkBundle
High severity
GitHub Reviewed
Published
May 30, 2024
to the GitHub Advisory Database
•
Updated May 30, 2024
Description
Published to the GitHub Advisory Database
May 30, 2024
Reviewed
May 30, 2024
Last updated
May 30, 2024
When investigating issue #11093, Jeremy Derussé found a serious code injection issue in the way Symfony implements translation caching in FrameworkBundle.
Your Symfony application is vulnerable if you meet the following conditions:
You are using the Symfony translation system from FrameworkBundle (so basically if you are using Symfony full-stack -- you are not affected if you are using the Translation component with Silex for instance);
You don't sanitize locales coming from a URL (any route with a _locale argument for instance):
When vulnerable, an attacker can submit a non-valid locale value that can contain some PHP code that will be executed by Symfony. That's because the locale value is dumped into a PHP file generated in the cache without being sanitized first.
References