From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753922AbdKISCC (ORCPT ); Thu, 9 Nov 2017 13:02:02 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:20020 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752622AbdKISCA (ORCPT ); Thu, 9 Nov 2017 13:02:00 -0500 Subject: Re: [kernel-hardening] Re: [PATCH resend 2/2] userns: control capabilities of some user namespaces To: "Serge E. Hallyn" , Daniel Micay Cc: =?UTF-8?B?TWFoZXNoIEJhbmRld2FyICjgpK7gpLngpYfgpLYg4KSs4KSC4KSh4KWH4KS1?= =?UTF-8?B?4KS+4KSwKQ==?= , Mahesh Bandewar , LKML , Netdev , Kernel-hardening , Linux API , Kees Cook , "Eric W . Biederman" , Eric Dumazet , David Miller References: <20171103004436.40026-1-mahesh@bandewar.net> <20171104235346.GA17170@mail.hallyn.com> <20171106150302.GA26634@mail.hallyn.com> <1510003994.736.0.camel@gmail.com> <20171106221418.GA32543@mail.hallyn.com> <1510020963.736.42.camel@gmail.com> <20171107032310.GA6429@mail.hallyn.com> From: chris hyser Message-ID: Date: Thu, 9 Nov 2017 13:01:24 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20171107032310.GA6429@mail.hallyn.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/06/2017 10:23 PM, Serge E. Hallyn wrote: > I think I definately prefer what I mentioned in the email to Boris. > Basically a "permanent capability bounding set". The normal bounding > set gets reset to a full set on every new user_ns creation. In this > proposal, it would instead be set to the calling task's permanent > capability set, which starts (at boot) full, and which privileged > tasks can pull capabilities out of. Actually, this may solve a similar problem I've been looking at. The idea was basically at strategic points in the kernel (possibly LSM hook sites, still evaluating, and probably syscall entry) validate that a task has not "magically" acquired capabilities that it or parent specifically said it cannot have and then take some action like say killing it immediately. Using your terms, basically make the "permanent capability set" a write-once privilege escalation defense. To handle the 0-day threat, perhaps make it writable but only with more "restrictive" values. -chrish