20% OFF using the code 20LISBON48
REGISTER NOW offer expires in 24 hours

CVE-2018-11386: Denial of service when using PDOSessionHandler

Affected versions

Symfony 2.7.0 to 2.7.47, 2.8.0 to 2.8.40, 3.3.0 to 3.3.16, 3.4.0 to 3.4.10, and 4.0.0 to 4.0.10 versions of the Symfony http-foundation component are affected by this security issue.

The issue has been fixed in Symfony 2.7.48, 2.8.41, 3.3.17, 3.4.11, and 4.0.11. 4.1.0 has also been fixed before its final release.

Note that no fixes are provided for Symfony 3.0, 3.1, and 3.2 as they are not maintained anymore.

Description

The PDOSessionHandler class allows to store sessions on a PDO connection. Under some configurations (see below) and with a well-crafted payload, it was possible to do a denial of service on a Symfony application without too much resources.

An application is vulnerable when:

  • It is using PDOSessionHandler to store its sessions;

  • And it uses MySQL as a backend for sessions managed by PDOSessionHandler;

  • And the SQL mode does not contain STRICT_ALL_TABLES or STRICT_TRANS_TABLES (check via SELECT @@sql_mode).

When an application has this configuration, doing a denial of service is made easier as a well-crafted session leads to an infinite loop in the code.

Resolution

We fixed this issue by avoiding the inifinite loop.

Credits

I would like to thank Federico Stange for reporting this security issue and for working with us trying to figure out when this issue occurred, Nicolas Grekas for working on a fix, and the Symfony Core Team for reviewing the patch.

Manage your notification preferences to receive an email as soon as a Symfony security release is published.
If you have found a security issue in Symfony, please send the details to security [at] symfony.com and don't disclose it publicly until we can provide a fix for it.

Comments

Comments are closed.

To ensure that comments stay relevant, they are closed for old posts.