A client could make your app see any IP address they chose. If your app used the client's IP to decide who gets in, such as an admin area limited to one network, an attacker could get past that check.

With trust proxy mode turned on through Request::trustProxyData(), Request::getClientIp() trusted forwarded IP headers without checking that they came from a proxy you trust. See Symfony's announcement and the patches for 2.0 and 2.1.

Who is affected

Apps on symfony/symfony 2.0 or 2.1 that call Request::trustProxyData() and use Request::getClientIp() for security decisions, such as IP-based access control. Apps that never turn on trust proxy mode aren't affected.

What to do

Update to 2.0.19 or 2.1.4. Then replace Request::trustProxyData() with Request::setTrustedProxies(), passing the IP addresses of your own reverse proxies. The old method is deprecated, and after the update it trusts only the address the request came from.

Symfony 2.0 and 2.1 stopped getting fixes long ago, so plan a move to a supported version.

Reported by Damien Tournoud of the Drupal security team.