Re: Proposal: CAP_PAYLOAD to reduce Meltdown and Spectre mitigation costs

From: Avi Kivity
Date: Sun Jan 07 2018 - 07:52:13 EST




On 01/07/2018 02:29 PM, Theodore Ts'o wrote:
On Sun, Jan 07, 2018 at 11:16:28AM +0200, Avi Kivity wrote:
I think capabilities will work just as well with cgroups. The container
manager will set CAP_PAYLOAD to payload containers; and if those run an init
system or a container manager themselves, they'll drop CAP_PAYLOAD for all
process/sub-containers but their payloads.
The reason why cgroups are better is Spectre can be used to steal
information from within the same privilege level --- e.g., you could
use Javascript to steal a user's Coindesk credentials or Lastpass
data, which is going to be *way* more lucrative than trying to mine
cryptocurrency in the sly in a user's browser. :-)

As a result, you probably want Spectre mitigations to be enabled in a
root process --- which means capabilities aren't the right answer.



I don't see the connection. The browser wouldn't run with CAP_PAYLOAD set.

In a desktop system, only init retains CAP_PAYLOAD.

On a server that runs one application (and some supporting processes), only init and that one application have CAP_PAYLOAD (if the sysadmin makes it so).

On a containerized server that happens to run just one application, init will retain CAP_PAYLOAD, as well as the process in the container (if the sysadmin makes it so).

On a containerized server that happens to run just one application, which itself runs an init system, the two inits will retain CAP_PAYLOAD, as well as the application process (if the sysadmin makes it so).