Closed
Bug 975052
Opened 11 years ago
Closed 11 years ago
The global object in workers is not rooted properly
Categories
(Core :: DOM: Core & HTML, defect)
Core
DOM: Core & HTML
Tracking
()
RESOLVED
FIXED
mozilla30
Tracking | Status | |
---|---|---|
firefox27 | --- | unaffected |
firefox28 | + | fixed |
firefox29 | + | fixed |
firefox30 | + | fixed |
firefox-esr24 | --- | unaffected |
b2g18 | --- | unaffected |
b2g-v1.1hd | --- | unaffected |
b2g-v1.2 | --- | unaffected |
b2g-v1.3 | --- | fixed |
b2g-v1.3T | --- | fixed |
b2g-v1.4 | --- | fixed |
People
(Reporter: khuey, Assigned: khuey)
References
Details
(Keywords: csectype-uaf, sec-critical, Whiteboard: [qa-])
Attachments
(1 file, 1 obsolete file)
(deleted),
patch
|
abillings
:
approval-mozilla-aurora+
abillings
:
approval-mozilla-beta+
|
Details | Diff | Splinter Review |
ejpbruel discovered that we're not actually tracing the worker global's JSObject. Turns out that PreserveWrapper() is required, not just HoldJSObjects.
Attachment #8379176 -
Flags: review?(bent.mozilla)
Updated•11 years ago
|
Keywords: csectype-uaf,
sec-critical
Assignee | ||
Comment 2•11 years ago
|
||
Because we don't trace the wrapper unless it's preserved. http://mxr.mozilla.org/mozilla-central/source/dom/base/nsWrapperCache.h#172
Assignee | ||
Comment 3•11 years ago
|
||
Fwiw, I haven't actually been able to get this to happen in practice. Any event listener or timeout will entrain the global cyclically. So while this is sec-critical in theory I'm not sure how one would go about exploiting anything.
Comment on attachment 8379176 [details] [diff] [review]
Patch
I'm not the right reviewer for this.
Attachment #8379176 -
Flags: review?(bent.mozilla) → review?(bugs)
Updated•11 years ago
|
Attachment #8379176 -
Flags: review?(bugs) → review+
Comment 5•11 years ago
|
||
Please update the comment in http://mxr.mozilla.org/mozilla-central/source/dom/workers/WorkerScope.cpp#45
Comment 6•11 years ago
|
||
Comment on attachment 8379176 [details] [diff] [review]
Patch
Actually, still trying to understand this (since I'm not familiar with worker global stuff).
Attachment #8379176 -
Flags: review+ → review?(bugs)
Assignee | ||
Comment 7•11 years ago
|
||
(In reply to Olli Pettay [:smaug] from comment #5)
> Please update the comment in
> http://mxr.mozilla.org/mozilla-central/source/dom/workers/WorkerScope.cpp#45
Actually I think that could go away entirely.
Comment 8•11 years ago
|
||
Comment on attachment 8379176 [details] [diff] [review]
Patch
Could we assert in CreateGlobal that UnwrapDOMObjectToISupports(global)
is non-null. (Just because TryPreserveWrapper has odd behavior.)
Attachment #8379176 -
Flags: review?(bugs) → review+
Updated•11 years ago
|
status-firefox30:
--- → affected
tracking-firefox28:
--- → ?
tracking-firefox29:
--- → +
tracking-firefox30:
--- → +
Updated•11 years ago
|
status-b2g18:
--- → unaffected
status-b2g-v1.1hd:
--- → unaffected
status-b2g-v1.2:
--- → unaffected
status-b2g-v1.3:
--- → affected
status-b2g-v1.3T:
--- → affected
status-b2g-v1.4:
--- → affected
Updated•11 years ago
|
Assignee | ||
Comment 9•11 years ago
|
||
Do I need to request sec-approval here or can we go straight to branch approvals?
Flags: needinfo?(continuation)
Comment 10•11 years ago
|
||
This affects more than trunk, and is sec-high or sec-critical, so it needs sec-approval. Al can probably give you branch approvals at the same time.
Flags: needinfo?(continuation)
Assignee | ||
Comment 11•11 years ago
|
||
Comment on attachment 8379176 [details] [diff] [review]
Patch
[Security approval request comment]
How easily could an exploit be constructed based on the patch?
Unclear. My attempts to produce a crash were unsuccessful.
Do comments in the patch, the check-in comment, or tests included in the patch paint a bulls-eye on the security problem?
Yes. I think it's reasonably obvious what is going on.
Which older supported branches are affected by this flaw?
Beta is as far back as it goes.
If not all supported branches, which bug introduced the flaw?
Bug 936327.
Do you have backports for the affected branches? If not, how different, hard to create, and risky will they be?
Backports are trivial.
How likely is this patch to cause regressions; how much testing does it need?
Unlikely to cause regressions.
Attachment #8379176 -
Flags: sec-approval?
Updated•11 years ago
|
status-firefox-esr24:
--- → unaffected
Comment 12•11 years ago
|
||
Comment on attachment 8379176 [details] [diff] [review]
Patch
sec-approval+ for trunk. Please backport to Beta and Aurora and nominate those patches so we can get them in following mozilla-central.
Attachment #8379176 -
Flags: sec-approval? → sec-approval+
Assignee | ||
Comment 14•11 years ago
|
||
Flags: needinfo?(khuey)
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
Updated•11 years ago
|
Comment 16•11 years ago
|
||
Please nominate this for Aurora/Beta uplift when ready :)
Flags: needinfo?(khuey)
Assignee | ||
Comment 18•11 years ago
|
||
[Approval Request Comment]
Bug caused by (feature/regressing bug #): Bug 936327
User impact if declined: Potentially an sg:crit, although we don't know how to exploit it.
Testing completed (on m-c, etc.): Baked on m-c for a few days, simple enough to verify via code inspection.
Risk to taking this patch (and alternatives if risky): Low risk
String or IDL/UUID changes made by this patch:None
Attachment #8379176 -
Attachment is obsolete: true
Attachment #8383934 -
Flags: approval-mozilla-beta?
Attachment #8383934 -
Flags: approval-mozilla-aurora?
Comment 19•11 years ago
|
||
Comment on attachment 8383934 [details] [diff] [review]
As landed
Yes, each branch is its own thing, especially for security bugs. Approved for beta and aurora.
Attachment #8383934 -
Flags: approval-mozilla-beta?
Attachment #8383934 -
Flags: approval-mozilla-beta+
Attachment #8383934 -
Flags: approval-mozilla-aurora?
Attachment #8383934 -
Flags: approval-mozilla-aurora+
Comment 20•11 years ago
|
||
Comment 21•11 years ago
|
||
Updated•10 years ago
|
Group: core-security
Updated•6 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•