History theft with CSS Boolean algebra
lcamtuf.coredump.cx
lcamtuf.coredump.cx
It wouldn't disclose any information the site can't already get by tracking clicks.
The origin policy fixes that.
Oops, sorry, my tracker removed the feature for you, I feel really ashamed :(...
So even what you said is not like the grand-parent's proposal that removes the functionality totally.
Such as Google, Facebook, etc.
My favorite part is the consistency of Youtube's URLs.
href="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB8QFjAA&url=http%3A%2F%2Fycombinator.com%2F&ei=OtmqU9TnN9KNqAbhwYDoAw&usg=AFQjCNFz8v92zbzOCTKbQaynlEeOQbu1NA&sig2=loQ5iO_OGgdXSsdzQ5jqxw"So when you release the mouse button and the contextual menu gets displayed, it already has the new link with tracking included.
This is pure evilness by your favorite don't-do-evil company.
This is orthogonal to letting same-domain links have more information on their visited status too.
Yes, it's an invasion of privacy and has to be sanitized, but it's not like that websites can see all of your history, view it in chronological order, or know if you've visited this link 6 months ago or today. And plus, you need to make the user somehow disclose what he sees on the screen, which may often look suspicious.
And what would an adversarial website do with these {visitedlinks, IP} tuples? Hit me with personalized ads or sell that modicum of my history to some ad company? Big shit, I hit the reset button on my router, and I get a new dynamic IP address from the ISP. The site now knows nothing.
These work more as proof-of-concepts. The inconvenience they require to be collected, paired with the limited utility of the results, makes for an unattractive attack vector.
I agree that if someone wants to target specifically you and knows something about you, they can put this class of exploits to a more threatening use, such as (if you're at work) seeing if you've visited some company LAN URL. Or perhaps they can see if you've accessed the admin pages on some website they're targeting, so they can determine if you have admin rights there.
Seriously though, I'd like to see what the other 45 websites are and what they do, but the PDF linked 404's. And I reckon this is the getComputedStyle approach, and that was, AFAIK, fixed. The new ways of exploiting the styled :visited links are going to require more work.
A number of attacks against, e.g. banks seem implausible ("but how would the attacker know that I bank at Wells Fargo?") until you learn about history stealing.
You'd easily increase the amount of victims (conversions?) several times over.
You don't do that often, though. The dynamic IP address is still one from a pool, that greatly reduces the randomness and there are other ways of identifying users.
It's true, history hacks were a lot more "fun" when you could still check 10-100s of URLs per second without any user interaction necessary.
You could pull off some very cool and unexpected tricks by applying such knowledge in a clever manner. The important thing to realize is that what you can use history information for goes way beyond "I know where you surfed last summer". That's just a mild privacy problem.
Targeting specific end-points, profile pages, stuff like that, you can leak a lot more interesting information than just someone's browsing habits. Right up to the point where you could (for certain services, under certain circumstances) cook up someone's session key and it suddenly became an actual security exploit.
Still, a couple of those tricks (or perhaps new ones) might still be worth it even if you can only query 10-20 sites. I don't know. It's not a lot of information. Though 33 bits is enough to identify any human on Earth.
> you need to make the user somehow disclose what he sees on the screen, which may often look suspicious.
Well that's the thing what this article is about, right? How it works is, there is a 32x32 grid of "close"-buttons. But you only see one of them, all the others are CSS hidden. That one you click. By virtue of which button it was, the site now knows 10 history-visited-states.
As the article says, if that looked like a "close"-button on a pop-up ad, where's the suspicion?
I use an adblocker. I get a popup, it has nothing but a "close"-button in it. I figure, "guess it only blocked part of the ad or something" and click the "close"-button without even thinking. The pop-up closes, and I've already forgotten that it happened.
The only suspicion I see could be that the "close"-button might appear in a weird, off-centre place. But that matches perfectly with the wonky-adblocker-behaviour theory in my head, so I wouldn't think twice about it.
All four are grey in Firefox for Android.
In theory it can be made to work, the browser has to have some kind of rounding mode for opacity.
It could be solved by making the up/down rounding random.
Using opacity quantization/rounding errors to get around CSS :visited restrictions ... crazy brilliant.