News for hackers. Stuff that matters.
Re:Reading privileged memory with a side-channel by dannyw on Wednesday January 03, 2018 @07:40PM (#16066928)
The mitigations are to disable SharedArrayBuffer and severely round performance.now(). Not good that there aren’t other less intrusive ways to mitigate.
Re:Reading privileged memory with a side-channel by kibwen on Wednesday January 03, 2018 @07:46PM (#16066957)
I don't get the impression that those are the full extent of the changes though; I think those two were called out only because they're API changes rather than implementation details. Haven't checked the code so I could be wrong, of course.
Re:Reading privileged memory with a side-channel by mirashii on Wednesday January 03, 2018 @09:04PM (#16067400)
A little bit more info can be found here [1]. In particular, site isolation [2] will also assist in protecting against this vulnerability.

[1] https://support.google.com/faqs/answer/7622138#chrome [2] http://www.chromium.org/Home/chromium-security/site-isolatio...

Re:Reading privileged memory with a side-channel by DannyDaemonic on Thursday January 04, 2018 @01:01AM (#16068371)
Would it be practical to run each javascript VM in it's own sandbox?

Edit: Apparently you can already do something like this. Seems to be an option for Chrome starting with 63. (Which was an October release I believe?

http://www.chromium.org/Home/chromium-security/site-isolatio...

Re:Reading privileged memory with a side-channel by aidenn0 on Wednesday January 03, 2018 @08:18PM (#16067160)
That can't be right because they already round performance.now() so the Spectre attack didn't use it (it instead used a webworker with a tight-loop incrementing a counter)
Re:Reading privileged memory with a side-channel by olliej on Wednesday January 03, 2018 @09:07PM (#16067417)
the tight loop iteration used a shared array buffer to provide a high resolution timer, specifically to deal with the obvious fix of truncating precision of performance.now().

The reason for /further/ truncating performance.now() is that the relative cost in this attack means that you don't need as much precision as was needed for the original (page table? I think) attack.

A SAB timer just needs to increment a counter in one thread and read it in the host thread and the granularity is however long it takes to get through a for-loop.

Re:Reading privileged memory with a side-channel by aidenn0 on Wednesday January 03, 2018 @10:52PM (#16067910)
Thanks, I missed how important SAB was to their webworker timer.
Re:Reading privileged memory with a side-channel by jchw on Wednesday January 03, 2018 @08:10PM (#16067116)
> ...severely round performance.now().

This sucks, and is a side-effect that I didn't even think about. I guess it's probably pretty effective, but it will make benchmarking a lot harder, since you'll probably now have to do a lot more runs.

Re:Reading privileged memory with a side-channel by gchadwick on Thursday January 04, 2018 @05:25AM (#16069225)
If it was a big issue you can always introduce a 'benchmark mode' switch that allows you to put resolution back into the counter when you want to run a benchmark. Display a 'WARNING BROWSER INSECURE IN THIS MODE' banner for good measure.
Re:Reading privileged memory with a side-channel by user5994461 on Thursday January 04, 2018 @02:12AM (#16068579)
Doubt that. The Firefox news said they will round to 20 us.

That's much more accurate than necessary to benchmark any software code.

Re:Reading privileged memory with a side-channel by londons_explore on Thursday January 04, 2018 @07:55AM (#16069960)
Those are the mitigations firefox is doing. Is chrome doing the same?
Re:Reading privileged memory with a side-channel by mschuetz on Thursday January 04, 2018 @06:45AM (#16069615)
For some reason, performance.now() and even the performance profiler are capped at 1 milisecond precision on my machine, which make both pretty much useles. Can only get better for me. :|