History Sniffing Timing Attack
Categories
(Core :: Layout, defect, P1)
Tracking
()
People
(Reporter: ronmasas, Assigned: emilio)
References
()
Details
(Keywords: csectype-disclosure, reporter-external, sec-moderate, Whiteboard: [reporter-external] [client-bounty-form] [verif?][pixel-stealing][layout:backlog])
Attachments
(2 files)
Comment 1•7 years ago
|
||
Comment 2•7 years ago
|
||
Comment 4•7 years ago
|
||
Updated•7 years ago
|
Updated•7 years ago
|
Comment 6•6 years ago
|
||
The bounty committee determined that this was too similar to known bugs describing abuses of :visited painting timing to qualify for a bounty.
Assignee | ||
Comment 7•6 years ago
|
||
We should try to mitigate these somehow. What WebKit did is pretty smart (https://trac.webkit.org/projects/webkit/changeset/244642), though our :visited
architecture looks very different from that.
Assignee | ||
Comment 8•6 years ago
|
||
(In particular, in Gecko history queries are asynchronous, and in WebKit they are not).
Though actually, come think of it, I can think of something that may work and may not be too terrible to implement. In particular, we could allow at most one history query per link, and always repaint regardless of whether it's visited or not...
That last bit may be a bit perf sensitive, I'll put it behind a pref to test it first.
Assignee | ||
Comment 9•6 years ago
|
||
So that it is not time-able whether it is or isn't visited.
(In reply to Emilio Cobos Álvarez (:emilio) from comment #8)
That last bit may be a bit perf sensitive, I'll put it behind a pref to test it first.
I think we tried something like that a decade ago, and it was a pretty substantial performance regression then.
Assignee | ||
Comment 11•6 years ago
|
||
(In reply to David Baron :dbaron: 🏴 ⌚UTC-7 from comment #10)
I think we tried something like that a decade ago, and it was a pretty substantial performance regression then.
Do you have references? I'm confused since this required a fair amount of history service wrangling, so it may not be doing the same...
Assignee | ||
Comment 12•6 years ago
|
||
Ah, found bug 557579.
Assignee | ||
Comment 13•6 years ago
|
||
Talos results should (eventually) appear over here: https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=dc23e482d80ca7f2f8ded5442d3f301dfb56746b&newProject=try&newRevision=4c10edf74c721ccce533044513afbbd202d67985&framework=1
Assignee | ||
Comment 14•6 years ago
|
||
So the perf regression seems decent (specially for pages like google.com and such). Daniel, would it be ok for you if I landed this code along with a disable-pref-by-default check, so I can do profiling on our regular nightly builds rather than locally?
Comment 15•6 years ago
|
||
That may be OK, but I'd like to punt to dbaron on that decision, if he's got cycles to think about this, since he's thought through this privacy leak more than I have (in bug 557579 as well as other bugs). Also, the cost/benefit decision around this feature's perhaps-inevitable perf cost may be something that he might need to make a final call on as module owner (depending on how sizeable the regression is), so we might as well involve him in the decision-making early. :)
(One reason I'm uneasy rubberstamping this: if we don't anticipate being able to pref this on without significant additional work, then landing this as a preffed-off feature could inadvertently point a bullseye on a problem that we're not in a position to be able to fix efficiently. Having said that: on the other hand, it would also give privacy-conscious users a way to opt-in to stronger protection, which is a silver lining to that bullseye-painting.)
Assignee | ||
Comment 16•6 years ago
|
||
(One reason I'm uneasy rubberstamping this: if we don't anticipate being able to pref this on without significant additional work, then landing this as a preffed-off feature could inadvertently point a bullseye on a problem that we're not in a position to be able to fix efficiently. Having said that: on the other hand, it would also give privacy-conscious users a way to opt-in to stronger protection, which is a silver lining to that bullseye-painting.)
I think we have a bunch of open bugs related to this issue. It's not a secret anymore these days, I'd think. We also have layout.css.visited_links_enabled for this too.
I want to experiment with better batching in the history service in order to deal with this better and hopefully mitigate/eliminate the perf regression.
Sorry for the delay...
Yeah, I'm ok with landing this; I think there's been enough discussion of this in public that having this code visible isn't going to be opening up anything new here.
Assignee | ||
Updated•6 years ago
|
![]() |
||
Comment 18•6 years ago
|
||
Updated•5 years ago
|
Comment 19•5 years ago
|
||
Now that we triage by severity, setting priority to P1 to reflect backlog prioritization on this bug as either in-progress, or planned development in the near term. See https://wiki.mozilla.org/Platform/Layout#Backlog_Tracking_in_Bugzilla
Comment 20•5 years ago
|
||
The leave-open keyword is there and there is no activity for 6 months.
:emilio, maybe it's time to close this bug?
Assignee | ||
Comment 21•5 years ago
|
||
I think this should be fixed now. If this is still a problem let's file new issues.
Updated•5 years ago
|
Updated•5 years ago
|
Updated•4 years ago
|
Updated•1 year ago
|
Description
•