Closed
Bug 1043778
Opened 10 years ago
Closed 9 years ago
pdfjs privilege escalation round 3
Categories
(Firefox :: PDF Viewer, defect)
Firefox
PDF Viewer
Tracking
()
RESOLVED
FIXED
Tracking | Status | |
---|---|---|
firefox31 | --- | wontfix |
firefox32 | --- | wontfix |
firefox33 | --- | wontfix |
firefox34 | --- | wontfix |
firefox35 | --- | affected |
firefox36 | --- | affected |
firefox37 | --- | affected |
firefox39 | --- | fixed |
firefox40 | --- | fixed |
firefox41 | --- | fixed |
firefox-esr24 | --- | unaffected |
firefox-esr31 | --- | affected |
firefox-esr38 | 39+ | fixed |
People
(Reporter: codycrews00, Assigned: bzbarsky)
References
Details
(Keywords: sec-high, Whiteboard: [reporter-external])
Attachments
(1 obsolete file)
It's possible yet again to manipulate the pdfjs implementation when rendered as a plugin. The issue here is that most things at content level totally ignore the pseudo view-source: protocol, so properly loading a pdf document then switching the src/data attribute of an object/embed to a url that begins with view-source: doesn't trigger the underlying logic which should be triggered for the plugin url changing. This also prevents the type changing which means that when combined with bug 1022919 to load the usually ignored view-source: protocol its possible for one to disclose information about local files or even possibly obtain chrome level code execution. Here I show off accessing navigator.mozApps.mgmt, and I feel I'm pretty close to code execution there but I have two other issues that need to get filed and my time has to be spread as much as possible. There's also issues that concern me regarding the remapping of the prototypes of embed and object elements, as I have already seen this lead to chrome level code trying to access a dead object when it should have been loading a perfectly valid embed element. I'll go into more detail about that and a practically impossible to reproduce SOW bypass that can also occur tomorrow I think. I already have two other issues to get testcases ready for either tonight or as early as I can tomorrow. Sorry guys I'm a little lack luster on this one I know but I'm running into many issues leading in many different directions lately and I think getting as much out there about them as I can piece together might be for the best. BTW the newest nightly has it locked down pretty well, but some XBL work is about to make another appearance, meh =/
Comment 1•10 years ago
|
||
So this is an actual playPreview bug, caused sort-of by bug 973837, but the bigger issue is playPreview is checking on all fallback types and hijacking them, meaning you can get into a play-preview state on a URI that failed security checks.
Assignee: nobody → jschoenick
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
OS: Linux → All
Hardware: x86_64 → All
Updated•10 years ago
|
status-firefox31:
--- → affected
status-firefox32:
--- → affected
status-firefox33:
--- → affected
status-firefox34:
--- → affected
status-firefox-esr24:
--- → unaffected
status-firefox-esr31:
--- → affected
Comment 2•10 years ago
|
||
@gfritzsche, are you at all familiar with this code? The change is pretty simple, but if you're uncomfortable reviewing feel free to bounce the review to benjamin when he gets back
Comment 3•10 years ago
|
||
Comment on attachment 8463646 [details] [diff] [review]
Don't check plugin playPreview status for null object types unless the fallback reason is unsupported
Neglected to actually flag, let's try again:
@gfritzsche, are you at all familiar with this code? The change is pretty simple, but if you're uncomfortable reviewing feel free to bounce the review to benjamin when he gets back
Attachment #8463646 -
Flags: review?(georg.fritzsche)
Comment 4•10 years ago
|
||
Comment on attachment 8463646 [details] [diff] [review]
Don't check plugin playPreview status for null object types unless the fallback reason is unsupported
Actually, this still is very shaky since the 'ignoreCTP' style playPreview plugins can step in for otherwise completely unknown types and open their own channel, but pdf.js is opening this into a privileged iframe assuming <object> loaded the channel, so neither does security checks, and things just kind-of-work except for view-source. I need to look at this more closely.
Attachment #8463646 -
Attachment is obsolete: true
Attachment #8463646 -
Flags: review?(georg.fritzsche)
nom for bounty
Flags: sec-bounty?
Whiteboard: [reporter-external]
Comment 6•10 years ago
|
||
Sounds bad. Let me know if you think that's too high or too low or whatever, John.
Keywords: sec-high
Reporter | ||
Comment 7•10 years ago
|
||
Any word on the status of the security bounty here? Just thought I would ask as I'm about to start some traveling, I did send Chris my updated payment info in case I'm not easily reachable. It's time to go see if the coast is still secure :-)
Comment 8•10 years ago
|
||
John, any progress here? There's been no update here in two months.
status-firefox35:
--- → affected
Flags: needinfo?(jschoenick)
Reporter | ||
Comment 9•10 years ago
|
||
Strangely I don't feel the sense of motivation to tear through the mozilla source, but meh that's expected. I think three months would be seen as a little excessive to anyone. I do have something very nice in the works, but my love for mozilla makes it hard to just disconnect. I guess as they say on to the next one.
Comment 10•10 years ago
|
||
Hey cody,
Sorry for the delay on this (we should have updated the status in the bug). The issue is that the real/robust fix for this bug is bug 558184, and John has been sidetracked with e10s and <picture> element stuff. He's going to try to get that bug landed in the next two weeks.
Reporter | ||
Comment 11•10 years ago
|
||
It's fine, I understand and by on to the next one I just meant I officially filed my first bug for chrome last night. I'm trying to branch out(maybe in too many directions), and have a ton of work but still in a tight situation. I also believe it may be possible to push bug 1045034 up to a critical in the current release based on some of my other work that was promptly fixed in nightly. I'll dig into it later today probably.
Updated•10 years ago
|
Group: firefox-core-security
Reporter | ||
Comment 12•10 years ago
|
||
It's now been almost over 4 months on this, and the bug that's supposed to be the fix has been on file since 2010. My opinion in regards to Mozilla is beginning to change recently. I know that if I had released these publicly there would have been fixes for this and bug 1045034 probably within 48 hours if not a week.
I use firefox as my primary browser and I don't want to change that, but how am I supposed to feel secure using it when it can take 4 months to address issues(not just the payable ones) that I have on file? I know Google says for chrome wait a week and if there's no progress on a serious security issue publish it yourself as they've obviously dropped the ball.
Just another note there's still a need info flag on this bug that's been there for months, so long even the email for it has changed I think.
Updated•10 years ago
|
Depends on: jsplugins-base
Comment 13•10 years ago
|
||
I think somebody else is working on the jsplugins bug.
Assignee: john → nobody
status-firefox36:
--- → affected
status-firefox37:
--- → affected
Flags: needinfo?(john)
Comment 14•10 years ago
|
||
bz is working on it now. I'll just leave this unassigned for now.
Updated•10 years ago
|
Flags: sec-bounty? → sec-bounty+
Updated•10 years ago
|
Attachment #8474576 -
Attachment description: codycrews00@gmail.com,,2014-07-24,,,,, → codycrews00@gmail.com,5000?,2014-07-24,,,,,
Comment 16•10 years ago
|
||
This is a sec-high that has been sitting for quite a while with no updates. Do you have an ETA on when you might be able to work on it, Boris?
Flags: needinfo?(bzbarsky)
Comment 17•10 years ago
|
||
Boris has started landing some stuff in the dependencies a few weeks ago. Bug 1136379 landed on 2/25.
Assignee | ||
Comment 18•10 years ago
|
||
I _am_ working on it, yes. If we just wanted this bug fixed, I could probably hack together something faster than the thing we actually want to do, I guess, at the expense of taking longer to do the thing we really want to do.
Flags: needinfo?(bzbarsky)
Updated•10 years ago
|
Attachment #8474576 -
Attachment description: codycrews00@gmail.com,5000?,2014-07-24,,,,, → codycrews00@gmail.com,5000?,2014-07-24,2014-10-15,2014-11-17,true,,,
Comment 19•9 years ago
|
||
Someone just filed bug 1191284 which seems to essentially show this is being exploited in the wild today to access local files.
Comment 20•9 years ago
|
||
This bug is not longer applicable for Firefox 42 and later due to bug 1179262, which removes Play Preview usage from PDF Viewer code somewhat fixing this bug.
Updated•9 years ago
|
Group: firefox-core-security
Updated•9 years ago
|
Updated•9 years ago
|
Group: firefox-core-security
Comment 21•9 years ago
|
||
Does pdfjs.disabled=true prevent this bug for happening?
Comment 22•9 years ago
|
||
(In reply to Sylvestre Ledru [:sylvestre] from comment #22)
> Does pdfjs.disabled=true prevent this bug for happening?
Yes, so does the removal of playPreview in bug 1179262.
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Updated•9 years ago
|
status-firefox39:
--- → fixed
status-firefox40:
--- → fixed
status-firefox41:
--- → fixed
status-firefox-esr38:
--- → fixed
tracking-firefox-esr38:
--- → 39+
Updated•9 years ago
|
Group: firefox-core-security
Updated•9 years ago
|
Group: core-security → core-security-release
Updated•8 years ago
|
Attachment #8462305 -
Attachment is private: true
Updated•8 years ago
|
Group: core-security-release
Updated•8 years ago
|
Attachment #8474576 -
Attachment description: codycrews00@gmail.com,5000?,2014-07-24,2014-10-15,2014-11-17,true,,, → codycrews00@gmail.com,5000,2014-07-24,2014-10-15,2014-11-17,true,,,
You need to log in
before you can comment on or make changes to this bug.
Description
•