DescriptionSeveral taming constructors (function TameFoo(feralFoo) {...}) in Domado
were not protected via inertCtor (which replaces .prototype.constructor
with a useless function), which resulted in guest code being able to
invoke them.
Some of the taming constructors called makeDOMAccessible on an argument,
leading to guest code being able to cause that; thus allowing ES5/3 guest
code to read or write nonwhitelisted properties on objects the guest
has access to.
Together, this allowed a complete breach, permitting arbitrary
manipulation of the host page.
* All taming constructors now use inertCtor properly.
* There is now a test which checks for this problem broadly.
* makeDOMAccessible now refuses to operate on objects which are already
ES5/3 objects (have a v___ property). Added a test for this. Guest
code still should not be allowed to obtain makeDOMAccessible, but this
should make it less hazardous if that does occur.
* Fixed lack of comment in jsUnit error messages for assertRoughlyEquals
and assertContains.
The Firefox quirk referred to in the previous comments of
makeDOMAccessible appears to no longer be an issue (FF 16.0.2).
Patch Set 1 #Patch Set 2 : Fix breach due to exposed taming constructors exposing arbitrary property access. #
Total comments: 9
Patch Set 3 : Fix breach due to exposed taming constructors exposing arbitrary property access. #Patch Set 4 : Fix breach due to exposed taming constructors exposing arbitrary property access. #
Total comments: 1
MessagesTotal messages: 8
|