On Jan 17, 2008, at 10:17 , Stefan Esser wrote:

When someone injects you a cookie like   +++action=logout   through an
XSS or through a feature like foobar.co.kr can set cookies for *.co.kr
(in FF atleast).

Ok, you are assuming one security issue here, that is not related to the topic. So in other words, the topic at hand has the potential of worsening the impact of an application security flaw.

Then you CANNOT use the application anymore. This is a DOS. You cannot
defeat this problem except detecting and telling the user to delete his
cookies manually...
There are only hard ways to kill the cookie for you, because then you
would need to
a) parse the cookie header to know exactly how it is called (remember
whitespace in the beginning is ignored)
b) you need to guess for what domain/path combination the injected
cookie was set (because otherwise you cannot kill it)
Have fun with sending tons of Set-Cookie headers or have fun with
telling a DAU how to kill his cookies...

Right, I see the problem. The trickier issue is even figuring out that such a funky named cookie was set. I doubt many of us would even think of that. Instead when faced with a DAU customer like that they would assume its some other end user error.

I do not know enough about the details of how cookies work, but couldnt there be some way to optionally make the cookie parsing more strict?

So you see that you nearly NEVER ever want the cookie in _REQUEST. And
even if you can think up a theoretical situation where you don't care
the problem is that everyone else uses _REQUEST in unsafe places...
Therefore my recommendation in PHP source code audits is usually... If
your code uses _REQUEST then overwrite it with an array_merge() of _GET
and _POST in the beginning of the script.

Never is an exaggeration. I have used this "feature" to make certain parameters persistent across sessions. However it might be a nice touch if one could leave out items from the GPC setting and thereby prevent them to get added to _REQUEST in the first place.

regards,
Lukas

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to