[dev] Token lifetimes (was Re: [imp] EMERG: HORDE Diese Anfrage konnte nicht durchgeführt werden)
Jan Schneider
jan at horde.org
Mon Nov 4 14:40:42 UTC 2013
Zitat von Michael M Slusarz <slusarz at horde.org>:
> Quoting Michael M Slusarz <slusarz at horde.org>:
>
>> Quoting Jan Schneider <jan at horde.org>:
>>
>>> Zitat von Michael M Slusarz <slusarz at horde.org>:
>>>
>>>> Changing tokens within the session is meant to prevent *dynamic*
>>>> attacks. I don't think we gain much since if an attacker has to
>>>> somehow gain access to your session information and grab the
>>>> token to perform the attack 1) they are probably going to launch
>>>> a more direct attack anyway (since, to get this information, they
>>>> have likely gained access through a different security hole),
>>>
>>> What do you consider a more direct attack? Such an attack vector
>>> is not necessarily available, just because you have been able to
>>> trigger a CSRF. Those are usually possible by exploiting some
>>> unfixed XSS vulnerability, that's why XSS and CSRF often go
>>> hand-in-hand.
>>> And this is the most common scenario that changing tokens could
>>> protect against.
>>
>> I don't understand how changing the token in the case of XSS
>> provides any additional security. The XSS can easily determine
>> whether the token changed or not. This is trivial. How does
>> switching fix this?
>>
>> Once you have an XSS vulnerability, token checking becomes moot.
>
> So I've done a bit of research on the subject, and expiring tokens
> is worthless. It provides no appreciable additional security
> protection, at the expense of severely affecting the UI.
>
> From the OWASP white-page on CSRF:
>
> "In general, developers need only generate this token once for the
> current session. After initial generation of this token, the value
> is stored in the session and is utilized for each subsequent request
> until the session expires."
>
> https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet
Thanks for looking this up. Makes sense.
> Tokens are worthless as a security measure when it comes to XSS
> attacks, so that is no justification.
> The only place token regeneration at an interval would be useful is
> if the token somehow "leaked" to a foreign page - e.g. in a URL.
> But 1) that shouldn't happen with our code and 2) it still only
> provides minimal protection; after all, the attacker can still
> attack if it does happen. For destructive actions, it's kind of
> pointless if the attacker can no longer perform the task 30 minutes
> later since they've already accomplished what they wanted in the
> first request.
True.
--
Jan Schneider
The Horde Project
http://www.horde.org/
More information about the dev
mailing list