From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: RFC(v2): Audit Kernel Container IDs To: Simo Sorce , Steve Grubb , linux-audit@redhat.com Cc: Richard Guy Briggs , mszeredi@redhat.com, "Eric W. Biederman" , jlayton@redhat.com, Carlos O'Donell , Linux API , Linux Containers , Linux Kernel , Eric Paris , David Howells , Al Viro , Andy Lutomirski , Linux Network Development , Linux FS Devel , cgroups@vger.kernel.org, "Serge E. Hallyn" , trondmy@primarydata.com References: <20171012141359.saqdtnodwmbz33b2@madcap2.tricolour.ca> <75b7d6a6-42ba-2dff-1836-1091c7c024e7@schaufler-ca.com> <20171017003340.whjdkqmkw4lydwy7@madcap2.tricolour.ca> <2319693.5l3M4ZINGd@x2> <1508243469.6230.24.camel@redhat.com> From: Casey Schaufler Message-ID: Date: Tue, 17 Oct 2017 07:59:43 -0700 MIME-Version: 1.0 In-Reply-To: <1508243469.6230.24.camel@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 10/17/2017 5:31 AM, Simo Sorce wrote: > On Mon, 2017-10-16 at 21:42 -0400, Steve Grubb wrote: >> On Monday, October 16, 2017 8:33:40 PM EDT Richard Guy Briggs wrote: >>> There is such a thing, but the kernel doesn't know about it >>> yet.  This same situation exists for loginuid and sessionid which >>> are userspace concepts that the kernel tracks for the convenience >>> of userspace.  As for its name, I'm not particularly picky, so if >>> you don't like CAP_CONTAINER_* then I'm fine with >>> CAP_AUDIT_CONTAINERID.  It really needs to be distinct from >>> CAP_AUDIT_WRITE and CAP_AUDIT_CONTROL since we don't want to give >>> the ability to set a containerID to any process that is able to do >>> audit logging (such as vsftpd) and similarly we don't want to give >>> the orchestrator the ability to control the setup of the audit >>> daemon. >> A long time ago, we were debating what should guard against rouge >> processes from setting the loginuid. Casey argued that the ability to >> set the loginuid means they have the ability to control the audit >> trail. That means that it should be guarded by CAP_AUDIT_CONTROL. I >> think the same logic applies today.  > The difference is that with loginuid you needed to give processes able > to audit also the ability to change it. You do not want to tie the > ability to change container ids to the ability to audit. You want to be > able to do audit stuff (within the container) without allowing it to > change the container id. Without a *kernel* policy on containerIDs you can't say what security policy is being exempted. Without that you can't say what capability is (or isn't) appropriate. You need a reason to have a capability check that makes sense in the context of the kernel security policy. Since we don't know what a container is in the kernel, that's pretty hard. We don't create "fuzzy" capabilities based on the trendy application behavior of the moment. If the behavior is not related it audit, there's no reason for it, and if it is, CAP_AUDIT_CONTROL works just fine. If this doesn't work in your application security model I suggest that is where you need to make changes. > Of course if we made container id a write-once property maybe there is > no need for controls at all, but I'm pretty sure there will be > situations where write-once may not be usable in practice. > >> The ability to arbitrarily set a container ID means the process has >> the ability to indirectly control the audit trail. > The container Id can be used also for authorization purposes (by other > processes on the host), not just audit, I think this is why a separate > control has been proposed. > > Simo. >