Live data from Hacker News

A Spectre proof-of-concept for a Spectre-proof web

security.googleblog.com

11–20 of 33 posts

Re: A Spectre proof-of-concept for a Spectre-proof web

#11
post #9
post #2

If you're just interested in the PoC, it's available here: https://leaky.page/ and looks like the code is at https://github.com/google/security-research-pocs/tree/master...

The memory dump demo seemed to work for my computer. Does that mean I am missing some spectre mitigation stuff? I thought this was already fixed a few years ago? How do I stop this demo from working? (linux, intel i7, chrome 89)

Last year Chrome published a great paper on this[1]. The summary is that we no longer think it is possible to completely prevent speculative execution bugs. A big focus nowadays is on providing tools (mainly via HTTP headers) that allow a website to opt-in to a more strict security model where specific sensitive resources can't end up in a process that is running untrusted code. If you're curious, check out this[2] document which explains a bunch of these different mechanisms.

Disclosure: I work at Google and am involved in deploying some of these features internally.

[1]: https://arxiv.org/pdf/1902.05178.pdf [2]: https://w3c.github.io/webappsec-post-spectre-webdev/

Re: A Spectre proof-of-concept for a Spectre-proof web

#12
post #3

> in our tests the attack was successful on several other processors, including the Apple M1 ARM CPU, without any major changes. Interesting!

Not interesting to my eyes. If M1 was vulnerable to Meltdown then Apple need a smacked bottom, but Spectre is a lesser but much harder evil to get rid of - there isn't an obvious solution to avoiding these side channels on a processor with multiple cores sharing a memory bus

Re: A Spectre proof-of-concept for a Spectre-proof web

#13
post #10

Really? Their proposed mitigations are various Cross Origin Resource restrictions? That's the equivalent of saying "just don't run bad JS code". It's not workable. Have they given up?

See this[1] paper for more information. I think from the browser POV it is more about admitting that it just isn't possible to reliably mitigate Spectre and instead focusing on what can be done at the browser level. And at the browser level, it is possible to ensure that sensitive resources don't end up in processes running attacker JS.

Of course this could be fixed at the CPU level, but realistically very few people want that since that would drastically slow down modern CPUs which rely on speculative execution.

[1]: https://arxiv.org/pdf/1902.05178.pdf

Disclosure: I work at Google and am involved in deploying some of these cross-origin resource restrictions internally.

Re: A Spectre proof-of-concept for a Spectre-proof web

#14
post #9

Earlier quoted context omitted.

The memory dump demo seemed to work for my computer. Does that mean I am missing some spectre mitigation stuff? I thought this was already fixed a few years ago? How do I stop this demo from working? (linux, intel i7, chrome 89)

Last year Chrome published a great paper on this[1]. The summary is that we no longer think it is possible to completely prevent speculative execution bugs. A big focus nowadays is on providing tools (mainly via HTTP headers) that allow a website to opt-in to a more strict security model where specific sensitive resources can't end up in a process that is running untrusted code. If you're curious, check out this[2] d…

> Chromium’s threat model, for instance, now asserts that "active web content … will be able to read any and all data in the address space of the process that hosts it"

This was a huge WTF to me. I have been doing web dev for 10+ years and can barely get origin based security right. Now we're expected to understand process level security boundaries too???

That said, are there any resources explaining how the chromium process works? It has always been a black box to me. For example if a form is being autofilled, don't those personal info/passwords have to be loaded into memory? There's an infinite amount of things that I thought was inaccessible solely because there's no JS api to access the data that I now need to think about. Direct memory access is just a huge can of worms, no?

Re: A Spectre proof-of-concept for a Spectre-proof web

#15

Earlier quoted context omitted.

Tried it in Firefox, but the timing result in the first step was already quite noisy (the two peaks overlapped to about 60%), and the second step didn't complete after 3 minutes of dismissing repeated "a website is slowing the page down" prompts. That doesn't mean Firefox is safe, to be clear. Just that this PoC doesn't work well for my combination of browser and CPU.

It may not work in Firefox due to the restricted resolution of performance.now() there; per the demo page, that is 5μs in desktop Chrome - Firefox meanwhile rounds to the nearest millisecond, per https://developer.mozilla.org/en-US/docs/Web/API/Performance... . That said, the demo also mentions a paper [1] on high-resolution timing channels available in Javascript without needing to rely on the performance API. I don…

Now of course if they enabled COOP/COEP like their own guide recommends[1], that woukd be different.

[1]: https://web.dev/coop-coep/

Re: A Spectre proof-of-concept for a Spectre-proof web

#16
post #10

Really? Their proposed mitigations are various Cross Origin Resource restrictions? That's the equivalent of saying "just don't run bad JS code". It's not workable. Have they given up?

See this[1] paper for more information. I think from the browser POV it is more about admitting that it just isn't possible to reliably mitigate Spectre and instead focusing on what can be done at the browser level. And at the browser level, it is possible to ensure that sensitive resources don't end up in processes running attacker JS. Of course this could be fixed at the CPU level, but realistically very few people…

But it's still going to help exploits against the browser, isn't it? Letting code poke around until it finds addresses it needs or something like that.

Re: A Spectre proof-of-concept for a Spectre-proof web

#17
post #10

Really? Their proposed mitigations are various Cross Origin Resource restrictions? That's the equivalent of saying "just don't run bad JS code". It's not workable. Have they given up?

> "just don't run bad JS code". It's not workable.

A little NoScript goes a long way. At least that way you can pick what you want to run.

Re: A Spectre proof-of-concept for a Spectre-proof web

#18
post #10

Really? Their proposed mitigations are various Cross Origin Resource restrictions? That's the equivalent of saying "just don't run bad JS code". It's not workable. Have they given up?

> "just don't run bad JS code". It's not workable. A little NoScript goes a long way. At least that way you can pick what you want to run.

Oh yes, if you ask me, throw this JIT shit out. Whats the spectre rate like if you need to do it through slow as molasses bytecode? 1b/minute?

Re: A Spectre proof-of-concept for a Spectre-proof web

#20
post #14

Earlier quoted context omitted.

Last year Chrome published a great paper on this[1]. The summary is that we no longer think it is possible to completely prevent speculative execution bugs. A big focus nowadays is on providing tools (mainly via HTTP headers) that allow a website to opt-in to a more strict security model where specific sensitive resources can't end up in a process that is running untrusted code. If you're curious, check out this[2] d…

> Chromium’s threat model, for instance, now asserts that "active web content … will be able to read any and all data in the address space of the process that hosts it" This was a huge WTF to me. I have been doing web dev for 10+ years and can barely get origin based security right. Now we're expected to understand process level security boundaries too??? That said, are there any resources explaining how the chromium…

Yeah, I think it is a bit unfortunate that there doesn't seem to be any way of hiding this implementation detail from developers. In general though, Chrome is very thoughtfully designed so things mostly work as you'd hope. The core of the process model is that each site (e.g. `ycombinator.com` not `news.ycombinator.com`) gets its own process. This [0] has a great list of things they've considered when designing site-isolation. For example, Chrome's password manager does respect site isolation and is designed to operate across multiple processes[1].

[0]: https://chromium.googlesource.com/chromium/src/+/master/docs... [1]: https://chromium.googlesource.com/chromium/src/+/master/comp...

Post reply on HN