Received: by 10.192.165.148 with SMTP id m20csp63109imm; Thu, 3 May 2018 14:58:44 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqR5a18bb8iF3Ky65ueli1axIjvMi/6KE42wMgDntEZIU+2VqiREDn6tM6lPWM6Eiv2gW1C X-Received: by 2002:a17:902:24c7:: with SMTP id l7-v6mr26152913plg.320.1525384724570; Thu, 03 May 2018 14:58:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525384724; cv=none; d=google.com; s=arc-20160816; b=VfFR/GFrzd063VeoCLa10L+T06yjE/PVdexQSf+Q/9QuZUy11I7nZNi6mc5CvFcP2D aSKQS4fgInCEMZ1cSs9brbNUJHZl4J7olKcTzwiP4SP/IAbs5Uj8ibrOD1TaNikQyvGt yCxheX1Ju72n8farHL9TEcjVdcdlhrNV6Lq1f9GAUpqYNNUMw06M205p57iboWpe24aN FcRNJd+WHtQvRDBxALuE74oYrHtx3LyudUv0DQNQAGiySe/ghcxXKVk80ewwoTjZPwpS l6JuC+ImWHO5NqmO+WKXmxV4mdO+PIzsxlvvsHQqk+VmRGnqPRZ+zmyaR1rdz9HSyqMF Nz+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:content-transfer-encoding :mime-version:references:in-reply-to:date:cc:to:from:subject :arc-authentication-results; bh=3heRTUMf63ajYv1ged1ksSWOU4JM/gj9mljddbzeDzQ=; b=Wn/cVgPXbWpnLDAeolucBha7GUT+Sj85I8+YXwmlyeeW6sJz4Z30xVDO0dHOUCbd7c Q8QIMxKBDnRs89HvGCmDRlaeCJuIqCCfjngUgYf8954FQ6hgfpsOibEmsF1U/2WVb8Kg IB+Zzw8GFs/IU/QLKvyG11UqMoNyhN0wcQ8omnfLX5KrW4Yw0yd09LPAu+5EUIZC3Zr5 yijkH5QgLzhqVrZ6VLo5T9v3K5Am0jgks7x3CU6rqThXOKFe5/EtQZrw5hDtTFkkFA6O WiGwJJeUvkzh1RHOyq5PuoiircZGa97AyE7saI64aHpcAOuidnE0Y6cJZhAJp479O4c3 1hFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b5-v6si6458153ple.417.2018.05.03.14.58.20; Thu, 03 May 2018 14:58:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751277AbeECV6H (ORCPT + 99 others); Thu, 3 May 2018 17:58:07 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:34114 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751216AbeECV6E (ORCPT ); Thu, 3 May 2018 17:58:04 -0400 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w43LsWlA115818 for ; Thu, 3 May 2018 17:58:04 -0400 Received: from e06smtp14.uk.ibm.com (e06smtp14.uk.ibm.com [195.75.94.110]) by mx0a-001b2d01.pphosted.com with ESMTP id 2hrajx0f4v-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 03 May 2018 17:58:04 -0400 Received: from localhost by e06smtp14.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 3 May 2018 22:58:01 +0100 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp14.uk.ibm.com (192.168.101.144) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 3 May 2018 22:57:58 +0100 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w43Lvwsl6750540; Thu, 3 May 2018 21:57:58 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 12E8B4C040; Thu, 3 May 2018 22:50:06 +0100 (BST) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E59ED4C04E; Thu, 3 May 2018 22:50:04 +0100 (BST) Received: from localhost.localdomain (unknown [9.80.107.24]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 3 May 2018 22:50:04 +0100 (BST) Subject: Re: [PATCH 0/3] kexec: limit kexec_load syscall From: Mimi Zohar To: "Eric W. Biederman" Cc: Kees Cook , David Howells , Matthew Garrett , linux-integrity@vger.kernel.org, linux-security-module@vger.kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, kernel-hardening@lists.openwall.com Date: Thu, 03 May 2018 17:57:55 -0400 In-Reply-To: <87d0yco1vy.fsf@xmission.com> References: <1523572911-16363-1-git-send-email-zohar@linux.vnet.ibm.com> <87r2mso5up.fsf@xmission.com> <1525383075.3539.67.camel@linux.vnet.ibm.com> <87d0yco1vy.fsf@xmission.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.20.5 (3.20.5-1.fc24) Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 x-cbid: 18050321-0044-0000-0000-0000054EB88E X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18050321-0045-0000-0000-0000288FE16F Message-Id: <1525384675.3539.89.camel@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-05-03_09:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1805030190 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2018-05-03 at 16:38 -0500, Eric W. Biederman wrote: > Mimi Zohar writes: > > > [Cc'ing Kees and kernel-hardening] > > > > On Thu, 2018-05-03 at 15:13 -0500, Eric W. Biederman wrote: > >> Mimi Zohar writes: > >> > >> > In environments that require the kexec kernel image to be signed, prevent > >> > using the kexec_load syscall. In order for LSMs and IMA to differentiate > >> > between kexec_load and kexec_file_load syscalls, this patch set adds a > >> > call to security_kernel_read_file() in kexec_load_check(). > >> > >> Having thought about it some more this justification for these changes > >> does not work. The functionality of kexec_load is already root-only. > >> So in environments that require the kernel image to be signed just don't > >> use kexec_load. Possibly even compile kexec_load out to save space > >> because you will never need it. You don't need a new security hook to > >> do any of that. Userspace is a very fine mechanism for being the > >> instrument of policy. > > > > True, for those building their own kernel, they can disable the old > > syscalls.  The concern is not for those building their own kernels, > > but for those using stock kernels.   > > > > By adding an LSM hook here in the kexec_load syscall, as opposed to an > > IMA specific hook, other LSMs can piggy back on top of it.  Currently, > > both load_pin and SELinux are gating the kernel module syscalls based > > on security_kernel_read_file. > > > > If there was a similar option for the kernel image, I'm pretty sure > > other LSMs would use it. > > > > From an IMA perspective, there needs to be some method for only > > allowing signed code to be loaded, executed, etc. - kernel modules, > > kernel image/initramfs, firmware, policies. > > What is the IMA perspective. Why can't IMA trust appropriately > authorized userspace? Suppose a system owner wants to define a system wide policy that requires all code be signed - kernel modules, firmware, kexec image & initramfs, executables, mmapped files, etc - without having to rebuild the kernel.  Without a call in kexec_load that isn't possible. > > >> If you don't trust userspace that needs to be spelled out very clearly. > >> You need to talk about what your threat models are. > >> > >> If the only justification is so that that we can't boot windows if > >> someone hacks into userspace it has my nack because that is another kind > >> of complete non-sense. > > > > The usecase is the ability to gate the kexec_load usage in stock > > kernels. > > But kexec_load is already gated. It requires CAP_SYS_BOOT. It isn't a matter of kexec_load already being gated, but of wanting a single place for defining a system wide policy, as described above. Mimi > > >> Given that you are not trusting userspace this changeset also probably > >> needs to have the kernel-hardening list cc'd. Because the only possible > >> justification I can imagine for something like this is kernel-hardening. > > > > Sure, Cc'ing linux-hardening and Kees. > > > > Mimi >