From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757459AbbKFPxV (ORCPT ); Fri, 6 Nov 2015 10:53:21 -0500 Received: from imap.thunk.org ([74.207.234.97]:46026 "EHLO imap.thunk.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751502AbbKFPxT (ORCPT ); Fri, 6 Nov 2015 10:53:19 -0500 Date: Fri, 6 Nov 2015 10:53:03 -0500 From: "Theodore Ts'o" To: Klaus Ethgen Cc: "Serge E. Hallyn" , Andy Lutomirski , Linus Torvalds , Richard Weinberger , LKML , Christoph Lameter , Andy Lutomirski , Serge Hallyn , Kees Cook , Andrew Morton Subject: Re: [KERNEL] Re: [KERNEL] Re: [KERNEL] Re: [KERNEL] Re: [KERNEL] Re: Kernel 4.3 breaks security in systems using capabilities Message-ID: <20151106155303.GB6160@thunk.org> Mail-Followup-To: Theodore Ts'o , Klaus Ethgen , "Serge E. Hallyn" , Andy Lutomirski , Linus Torvalds , Richard Weinberger , LKML , Christoph Lameter , Andy Lutomirski , Serge Hallyn , Kees Cook , Andrew Morton References: <20151102191616.GA2158@ikki.ethgen.ch> <20151105101953.GA15293@ikki.ethgen.ch> <20151105161512.GA2180@mail.hallyn.com> <20151105171701.GB9307@ikki.ethgen.ch> <20151105173438.GA3378@mail.hallyn.com> <20151105174823.GD9307@ikki.ethgen.ch> <20151105220843.GA6027@mail.hallyn.com> <20151106135835.GB11901@ikki.ethgen.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20151106135835.GB11901@ikki.ethgen.ch> User-Agent: Mutt/1.5.24 (2015-08-30) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on imap.thunk.org); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Nov 06, 2015 at 02:58:36PM +0100, Klaus Ethgen wrote: > But that left out completely the, I think more important, usecase of > _removing_ SUID completely and _replacing_ it with very tight capability > setting. And that is what I always talked about. I don't believe this is ever going to be possible. And I'm not talking about it from a technical perspective, but from a practical and cultural perspective. The problem with removing SUID and inheritance completely is that you have to anticipate all possible use cases where a system administrator might want to use a root shell. This means analyzing all possible use cases for all possible system administrators how they might need to use a root shell to fix or management a system, and then either (a) provide a new, specialized tool that solves that particular use case, while respecting the rules of least privilege, or (b) figure out how to expand that executable's fI mask, and worse, if that executable fork and exec's helper programs, those helper programs will need to have expanded fI masks. And that's if all of the commands that a system administrator needs to run are compiled executables. Now consider what happens when a system administrator needs to run python, perl, or shell scripts with elevated privileges. You maybe can solve this in a very restricted environment; say, one really dedicated user who can tweak his or her own's fI masks because hopefully he or she can anticipate all possible use cases. But in the general case? For a general purpose distribution? Good luck with that. Schemes like this could work if you are willing to essentially outlaw all administrative shell/perl/python scripts. Otherwise, the fact that /bin/sh, /bin/perl, and /bin/python essentially have an unlimited fI mask means the whole system has a hole you can drive a truck hole, in which case, what's the point of going through the whole effort? In the light of that, using things like ambient capabilities, or using setuid binary that immediately drops all caps that it needs, is probably the best we're going to get. Regards, - Ted