For sake of completeness, this has been fixed in

https://github.com/symfony/symfony/commit/6c67476ef049d52583ececd581cb44f80bca55cf

Cheers,
Bernhard

--
Bernhard Schussek
Blog: http://webmozarts.com
Twitter: http://twitter.com/webmozart



2012/11/22 Cameron Junge <cameron.ju...@sella.co.nz>

> I really like the idea of specifying the position! The current behaviour
> is to take the left-most IP and use that as the current IP:
>
> $clientIp = explode(',', $this->server->get('HTTP_X_FORWARDED_FOR'));
> foreach ($clientIp as $ipAddress) {
>
> So rather than trust the left-most IP, change it to instead only trust the
> IP at position X from the right. This is assuming that your proxy/other
> proxies are appending the IP correctly. An empty parameter could mean the
> first position on the left (current behaviour....) or the last on the right
> (seems safer).
>
> Much better!
>
> Cameron
>
>
> On Friday, November 23, 2012 10:36:36 AM UTC+13, Sebastian Krebs wrote:
>
>> Hi,
>>
>> because this "problem" doesn't simply disappear, because nobody is
>> talking about and because there is a follow-up article, that addresses this
>> issues [1] , I have a suggestion
>>
>> [1] http://blog.gingerlime.**com/2012/rails-ip-spoofing-**
>> vulnerabilities-and-**protection/<http://blog.gingerlime.com/2012/rails-ip-spoofing-vulnerabilities-and-protection/>
>>  Definitely
>> worth reading.
>>
>>
>> 2012/11/14 Cameron Junge <camero...@sella.co.nz>
>>
>> While not a vulnerability, per se, it is something that all web
>>> developers (PHP or otherwise) should be aware of.
>>>
>>> The summary is: The x-forwarded-for header should NEVER be trusted.
>>>
>>
>>  I wouldn't say never, but never _blindly_. The Request-class already
>> provides a method "trustProxyData()", that tells it to trust the proxies,
>> but I guess (I didn't looked at it yet) it tells the Proxy class to trust
>> _all_ proxies in the chain. So why not simply add an optional parameter to
>> tell, which one (how many) to trust.
>>
>> Request::trustProxyData(2);
>>
>> This should mean, that 2 proxies are in place and there the second last
>> entry in X-Forwarded-For is the last trustable one. As far as I can see it
>> uses the last entry right now, which is wrong, when more then one proxy is
>> used (but at least it's not critical from security point-of-view).
>>
>> I said "optional parameter", because omitting should be the same as
>>
>> Request::trustProxyData(1);
>>
>> what is the current behaviour.
>>
>> Just an idea. What do you think?
>> Regards,
>> Sebastian
>>
>>
>>
>>>
>>> If your app uses IPs for security (ie. ACLS) and you trust your proxy,
>>> then the header can be supplied upstream of your proxy, and your proxy will
>>> append the connection IP it has.
>>>
>>> So, if your proxy has a connection from 10.10.10.10, the browser can
>>> supply a header that is x-forwarded-for of 127.0.0.1. if the header is
>>> trusted, as far as your app is concerned the browser is sitting on
>>> 127.0.0.1, not 10.10.10.10.
>>>
>>> Maybe this could be spelt a little more clearly in the docs? It's a
>>> security risk in that the implications aren't very easy to figure out.
>>> Trusting your proxy is vastly different from trusting a header that can be
>>> set anywhere.
>>>
>>> Cameron
>>>
>>>
>>>
>>>
>>> On Wednesday, November 14, 2012 3:35:13 AM UTC+13, Fabien Potencier
>>> wrote:
>>>
>>>> It's not a vulnerability. You need to call the trsutProxy() method only
>>>> when you have a trusted reverse proxy in front of your website (like
>>>> Varnish for instance).
>>>>
>>>> Fabien
>>>>
>>>> --
>>>> Fabien Potencier
>>>> Sensio CEO - Symfony lead developer
>>>> sensiolabs.com | symfony.com | fabien.potencier.org
>>>> Tél: +33 1 40 99 80 80
>>>>
>>>> On 11/13/12 3:29 PM, Sam Mateosian wrote:
>>>> > Take a look at this blog post:
>>>> >
>>>> > http://blog.ircmaxell.com/**2012**/11/anatomy-of-attack-how-**i-**
>>>> hacked.html<http://blog.ircmaxell.com/2012/11/anatomy-of-attack-how-i-hacked.html>
>>>> >
>>>> > Quoting the author (near the end):
>>>> >
>>>> > "Check out Symfony2's Request class
>>>> > <https://github.com/symfony/**sy**mfony/blob/master/src/**Symfony/**
>>>> Component/**HttpFoundation/**Request.php#**L589<https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Request.php#L589>>.
>>>>
>>>> > On the surface it looks great. Until you notice that it uses a static
>>>> > variable to determine if it should use the proxy information. That
>>>> means
>>>> > that if ANY part of your application wants proxy information (such as
>>>> a
>>>> > logging class), all of your application after that will get the
>>>> proxied
>>>> > information. So to see if you're vulnerable to this style attack,
>>>> grep
>>>> > your code for /$request->trustProxy()/. Also note that there's no
>>>> > in-built mechanism to untrust the proxy. Once it switches to true, it
>>>> > will stay true. Sounds like a major design flaw to me..."
>>>> >
>>>> > Anyone want to take a look?
>>>> >
>>>> > --
>>>> > If you want to report a vulnerability issue on symfony, please send
>>>> it
>>>> > to security at symfony-project.com
>>>> >
>>>> > You received this message because you are subscribed to the Google
>>>> > Groups "symfony developers" group.
>>>> > To post to this group, send email to symfon...@googlegroups.com
>>>> > To unsubscribe from this group, send email to
>>>> > symfony-devs...@**googlegroups.**com
>>>> > For more options, visit this group at
>>>> > http://groups.google.com/**group**/symfony-devs?hl=en<http://groups.google.com/group/symfony-devs?hl=en>
>>>>
>>>>  --
>>> If you want to report a vulnerability issue on symfony, please send it
>>> to security at symfony-project.com
>>>
>>> You received this message because you are subscribed to the Google
>>> Groups "symfony developers" group.
>>> To post to this group, send email to symfon...@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> symfony-devs...@**googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/**group/symfony-devs?hl=en<http://groups.google.com/group/symfony-devs?hl=en>
>>>
>>
>>
>>
>> --
>> github.com/KingCrunch
>>
>>   --
> If you want to report a vulnerability issue on symfony, please send it to
> security at symfony-project.com
>
> You received this message because you are subscribed to the Google
> Groups "symfony developers" group.
> To post to this group, send email to symfony-devs@googlegroups.com
> To unsubscribe from this group, send email to
> symfony-devs+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/symfony-devs?hl=en
>

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony developers" group.
To post to this group, send email to symfony-devs@googlegroups.com
To unsubscribe from this group, send email to
symfony-devs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en

Reply via email to