Summary | Upgrade Prototype to 1.5.1_rc3 and make use of CSRF protection |
Queue | Horde Base |
Queue Version | HEAD |
Type | Bug |
State | Resolved |
Priority | 2. Medium |
Owners | Horde Developers (at) , slusarz (at) horde (dot) org |
Requester | chuck (at) horde (dot) org |
Created | 04/25/2007 (6646 days ago) |
Due | |
Updated | 06/20/2007 (6590 days ago) |
Assigned | 06/19/2007 (6591 days ago) |
Resolved | 06/20/2007 (6590 days ago) |
Github Issue Link | |
Github Pull Request | |
Milestone | |
Patch | No |
State ⇒ Resolved
Assigned to
Assigned to Michael Slusarz
protect them, someone can request them remotely (assuming a user is
logged in to horde, which isn't far-fetched for these purposes) and
steal a session id embedded in the javascript. So these need to be
changed to go through the /*secure* trick somehow (and they can't just
call evalJson in those files - then the attacker would just define
evalJson), or inlined like I did for Kronolith and Gollem.
I'm hoping to pass this off since Michael, you're more familiar with
the current js structure of dimp/imp, and frankly I'm a bit friend on
bugs at the moment. Had a bad weekend with Turba. :)
Type ⇒ Bug
Priority ⇒ 2. Medium
scripts; it's that without the security header, a malicious site can
load the javascript we output without the user knowing (provided that
they're logged in to Horde).
gollem.js.php doesn't contain anything that I could imagine being
useful, but since it can be requested directly, it's the sort of thing
that should probably be protected.
For things like Horde_Tree we're probably okay unless we make the data
available with a text/javascript (or */*) content-type.
use it in Gollem in a similar style as to IMP/DIMP I believe.
than writing some javascript code such as "var a = { b: 1 };". That
is JSON, but you can't tell me we need to run every single object we
create through evalJSON().
I think the question boils down to "how much do we trust any input
that we are outputting via JSON." Obviously, we can exploit all we
want if we ourselves are outputting bad JSON. But if that is
happening, we are either scheming and mischievous people (unlikely) or
we need to do a better job of filtering the data on the PHP side
rather than the browser side.
it in Gollem in a similar style as to IMP/DIMP I believe.
State ⇒ Feedback
we seem to simply be using JSON as a shorthand to serialize objects in
the javascript code we output. As far as I can tell, this is not the
security issue the commenting is meant to avoid - only the case where
we are directly returning JSON from an open XmlHttpRequest channel.
Or maybe I am wrong.
Not sure where else we are using JSON returns (ansel maybe?)
Not sure where else we are using JSON returns (ansel maybe?)
the inevitable scriptaculous upgrades) until the stable version is
released - since they have promised it "soon".
Priority ⇒ 2. Medium
State ⇒ Accepted
Queue ⇒ Horde Base
Summary ⇒ Upgrade Prototype to 1.5.1_rc3 and make use of CSRF protection
Type ⇒ Enhancement
It'd be good to add a security delimiter of some sort to our ajax,
also, taking advantage of the support in rc3 for stripping them before
eval'ing. See
http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf and
http://dev.rubyonrails.org/ticket/7910