Meltdown and Spectre: Security is a Systems Property
I don’t (and probably won’t) have anything substantive to say about the technical details of the just-announced Meltdown and Spectre attacks. (For full technical details, go here; for an intermediate-level description, go here.) What I do want to stress is that these show, yet again, that security is a systems property: being secure requires that every component, including ones you’ve never heard of, be secure. These attacks depend on hardware features such as "speculative execution" (someone I know said that that sounded like something Stalin did), "cache timing", and the "translation lookaside buffer"—and no, many computer programmers don’t know what those are, either. Furthermore, the interactions between components need to be secure, too.
Let me give an example of that last point. These two attacks are only exploitable by programs running on your own computer: a hacker probing from the outside can’t directly trigger them. Besides, since the effect of the flaws is to let one program read the operating system’s memory, single-users computers, i.e., your average home PC or Mac, would seem to be unaffected; the only folks who have to worry are the people who run servers, especially cloud servers. Well, no.
Most web browsers support a technology called JavaScript, which lets the web site you’re visiting run code on your computer. For Spectre, "the Google Chrome browser… allows JavaScript to read private memory from the process in which it runs". In other words, a malicious web site can exploit this flaw. And the malice doesn’t have to be on the site you’re visiting; ads come from third-party ad brokers.
In other words, your home computer is vulnerable because of (a) a hardware design flaw; (b) the existence of JavaScript; and (c) the economic ecosystem of the web.
Security is a systems property…