Closed Bug 338523 Opened 18 years ago Closed 18 years ago

XSS with XPCNativeWrapper(window).Function(...)


(Core :: Security, defect, P1)






(Reporter: sync2d, Assigned: mrbkap)



(Keywords: fixed1.8.1, verified1.8.0.5, Whiteboard: [sg:high][patch] not 1.7/aviary)


(1 file, 2 obsolete files)

XPCNativeWrapper(window).Function(...) allows one to
create a function that can be used for XSS attacks.
Attached file testcase
works on:
Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8.1a2)
  Gecko/20060518 BonEcho/2.0a2
Mozilla/5.0 (Windows; U; Win98; en-US; rv:
  Gecko/20060518 Firefox/
Flags: blocking1.9a1+
Flags: blocking1.8.1+
Flags: blocking1.8.0.5+
Flags: blocking1.7.14?
Flags: blocking-aviary1.0.9?
Whiteboard: [sg:high]
Assignee: dveditz → mrbkap
I think I have this mostly figured out. I'm too jetlagged at the moment to explain more, but it has to do with XPCNativeWrappers causing the outer window's Function to be found instead of the inner one's. I'll have details and hopefully a patch tomorrow.
Priority: -- → P1
Target Milestone: --- → mozilla1.9alpha
Attached patch wip (obsolete) — Splinter Review
With this patch, standard classes don't resolve at all through XPCNativeWrappers. I'll work on that soon.
> With this patch, standard classes don't resolve at all through
> XPCNativeWrappers.

The problem is simply that I need to define the resolved property on the rewrapped obj2 for things to work. I'll probably have a patch tomorrow or Monday.
Attached patch Hackable patch (obsolete) — Splinter Review
This patch goes half-way. I realized that it isn't sufficient, since it will happily return a content-supplied Function to unsuspecting XPCNativeWrapper(window) users.
Attachment #224283 - Attachment is obsolete: true
So, jst and I talked about this a bunch, and came to the conclusion that getting standard classes out of XPCNativeWrappers is unsupported and shouldn't be allowed. If you need to create a function or string in a content context from chrome, the preferred way (after this patch) will be to use w.eval(...) instead.
Attachment #224509 - Attachment is obsolete: true
Attachment #226409 - Flags: superreview?(bzbarsky)
Attachment #226409 - Flags: review?(jst)
Whiteboard: [sg:high] → [sg:high][patch]
Comment on attachment 226409 [details] [diff] [review]
No standard classes from XPCNativeWrapper

Looks reasonable, yeah.
Attachment #226409 - Flags: superreview?(bzbarsky) → superreview+
Comment on attachment 226409 [details] [diff] [review]
No standard classes from XPCNativeWrapper

Attachment #226409 - Flags: review?(jst) → review+
Fix checked into trunk.
Closed: 18 years ago
Resolution: --- → FIXED
Attachment #226409 - Flags: approval1.8.1?
Attachment #226409 - Flags: approval1.8.0.5?
Comment on attachment 226409 [details] [diff] [review]
No standard classes from XPCNativeWrapper

approved for 1.8.0 branch, a=dveditz for drivers
Attachment #226409 - Flags: approval1.8.0.5? → approval1.8.0.5+
Fix checked into the 1.8.0 branch.
Keywords: fixed1.8.0.5
Attachment #226409 - Flags: approval1.8.1? → approval1.8.1+
Fix checked into the 1.8 branch.
Keywords: fixed1.8.1
v.fixed on 1.8.0 branch with Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US;
rv: Gecko/20060626 Firefox/, no exploit with testcase:

XPCNativeWrapper(window).Function is not a function
attachment.cgi?id... (line 11)
Blocks: sbb?
Not needed for moz1.7 or aviary branches, XPCNativeWrapper() not available.
Flags: blocking1.7.14?
Flags: blocking1.7.14-
Flags: blocking-aviary1.0.9?
Flags: blocking-aviary1.0.9-
Whiteboard: [sg:high][patch] → [sg:high][patch] not 1.7/aviary
pvnick is doing a bit of research on XSS and also gathering up bugs with security related test cases to help add to the regression/certification test suites.  adding him to the cc list in these...
Group: core-security
You need to log in before you can comment on or make changes to this bug.