RE: [PATCH v5 5/5] sidechannel: Linux Security Module for sidechannel

From: Schaufler, Casey
Date: Fri Sep 28 2018 - 13:41:06 EST


> -----Original Message-----
> From: James Morris [mailto:jmorris@xxxxxxxxx]
> Sent: Friday, September 28, 2018 9:33 AM
> To: Jann Horn <jannh@xxxxxxxxxx>
> Cc: Schaufler, Casey <casey.schaufler@xxxxxxxxx>; Casey Schaufler
> <casey@xxxxxxxxxxxxxxxx>; kristen@xxxxxxxxxxxxxxx; Kernel Hardening
> <kernel-hardening@xxxxxxxxxxxxxxxxxx>; Dock, Deneen T
> <deneen.t.dock@xxxxxxxxx>; kernel list <linux-kernel@xxxxxxxxxxxxxxx>;
> Hansen, Dave <dave.hansen@xxxxxxxxx>; linux-security-module <linux-security-
> module@xxxxxxxxxxxxxxx>; selinux@xxxxxxxxxxxxx; Arjan van de Ven
> <arjan@xxxxxxxxxxxxxxx>
> Subject: Re: [PATCH v5 5/5] sidechannel: Linux Security Module for sidechannel
>
> On Fri, 28 Sep 2018, Jann Horn wrote:
>
> > > so with this hard-coded logic, you are saying this case is
> > > 'safe' in a sidechannel context.
> > >
> > > Which hints at the deeper issue that containers are a userland
> > > abstraction. Protection of containers needs to be defined by userland
> > > policy.
> >
> > Or just compare mount namespaces additionally/instead. I think that
> > containers will always use those, because AFAIK nobody uses chroot()
> > for containers, given that the kernel makes absolutely no security
> > guarantees about chroot().
>
> We can't define this in the kernel. It has no concept of containers.
>
> People utilize some combination of namespaces and cgroups and call them
> containers,

There is an amazing variety of things called containers out there.
I cite them as a use case, not a requirement.

> but we can't make assumptions from the kernel on what any of
> this means from a security point of view, and hard-code kernel policy
> based on those assumptions.

We can assume that namespaces are being used as a separation mechanism.
That makes processes in different namespaces potentially vulnerable to
side-channel attacks. That's true regardless of whether or not someone is
using namespaces to implement containers.

> This is violating the principal of separating mechanism and policy, and
> also imposing semantics across the kernel/user boundary. The latter
> creates an ABI which we can then never break.

The effects of the sidechannel security module are not API visible.
The potential impact is on performance. This implementation of
PTRACE_MODE_SCHED does not change what happens, but may affect
when it happens. It is intended to aid in optimizing the use of expensive
anti-side-channel countermeasures.