Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754097AbdGNMkE (ORCPT ); Fri, 14 Jul 2017 08:40:04 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:37859 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754051AbdGNMkB (ORCPT ); Fri, 14 Jul 2017 08:40:01 -0400 Subject: Re: [PATCH v2] xattr: Enable security.capability in user namespaces To: "Eric W. Biederman" References: <1499785511-17192-1-git-send-email-stefanb@linux.vnet.ibm.com> <1499785511-17192-2-git-send-email-stefanb@linux.vnet.ibm.com> <87mv89iy7q.fsf@xmission.com> <20170712170346.GA17974@mail.hallyn.com> <877ezdgsey.fsf@xmission.com> <74664cc8-bc3e-75d6-5892-f8934404349f@linux.vnet.ibm.com> <20170713011554.xwmrgkzfwnibvgcu@thunk.org> <87y3rscz9j.fsf@xmission.com> <20170713164012.brj2flnkaaks2oci@thunk.org> <87k23cb6os.fsf@xmission.com> <847ccb2a-30c0-a94c-df6f-091c8901eaa0@linux.vnet.ibm.com> <87bmoo8bxb.fsf@xmission.com> <9a3010e5-ca2b-5e7a-656b-fcc14f7bec4e@linux.vnet.ibm.com> <87h8yf7szd.fsf@xmission.com> <65dbe654-0d99-03fa-c838-5a726b462826@linux.vnet.ibm.com> <87vamv2pj0.fsf@xmission.com> Cc: "Theodore Ts'o" , "Serge E. Hallyn" , containers@lists.linux-foundation.org, lkp@01.org, linux-kernel@vger.kernel.org, zohar@linux.vnet.ibm.com, tycho@docker.com, James.Bottomley@HansenPartnership.com, vgoyal@redhat.com, christian.brauner@mailbox.org, amir73il@gmail.com, linux-security-module@vger.kernel.org, casey@schaufler-ca.com From: Stefan Berger Date: Fri, 14 Jul 2017 08:39:49 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <87vamv2pj0.fsf@xmission.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 x-cbid: 17071412-0036-0000-0000-000002491792 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007364; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000214; SDB=6.00887431; UDB=6.00443084; IPR=6.00667581; BA=6.00005470; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00016225; XFM=3.00000015; UTC=2017-07-14 12:39:53 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17071412-0037-0000-0000-00004117E32F Message-Id: <6eb8226e-58b7-88cc-a8e4-35df47ae5688@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-07-13_13:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1706020000 definitions=main-1707140207 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2196 Lines: 52 On 07/14/2017 08:04 AM, Eric W. Biederman wrote: > Stefan Berger writes: > >> On 07/13/2017 08:38 PM, Eric W. Biederman wrote: >>> Stefan Berger writes: >>> >>>> On 07/13/2017 01:49 PM, Eric W. Biederman wrote: >>>> >>>>> My big question right now is can you implement Ted's suggested >>>>> restriction. Only one security.foo or secuirty.foo@... attribute ? >>>> We need to raw-list the xattrs and do the check before writing them. I am fairly sure this can be done. >>>> >>>> So now you want to allow security.foo and one security.foo@uid=<> or just a single one security.foo(@[[:print:]]*)? >>>> >>> The latter. >> That case would prevent a container user from overriding the xattr on >> the host. Is that what we want? > Most definitely. If a more privileged use has set secure.capable that > is better. > >> For limiting the number of xattrs and >> getting that functionality (override IMA signature for example) the >> former seems better... > I don't know about IMA. But my feeling is that we will only be dealing > with a single signing key, so I don't see how having multiple IMA xattrs > make sense. Could you explain that to me? Admittedly I would need to construct and example where the user inside the container doesn't want to share the public key with the host on a file mounted from the host for some reason. An example related to security.capability could be a Fedora Docker container where the container is distributed with the ping tool installed. The ping tool is installed with cap_net_admin,cap_net_raw+ep. On a normal Fedora container I cannot use this tool due to my capabilities bounding set not including cap_net_admin. So, I overwrite this and set only cap_net_raw+ep and I can use for pinging. I may loose some functionality on the way due to the lost cap_net_admin but I can now use the tool. I guess the point is one can override the capabilities set of a distributed container if the container is started with less capabilities. Stefan > >> For the former I now have the topmost patch here: >> https://github.com/stefanberger/linux/commits/xattr_for_userns.v3 > Thank you. > > Eric >