Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp5430278ybn; Sat, 28 Sep 2019 21:25:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqyQO71ZFY9og+lEDQ4Zx1i9ZFXBZ0j/1rib5knqlpWkC2eUa5QthL5q7AX9IHA49riwbHfA X-Received: by 2002:a05:6402:a48:: with SMTP id bt8mr12874291edb.298.1569731107349; Sat, 28 Sep 2019 21:25:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569731107; cv=none; d=google.com; s=arc-20160816; b=RStEfcHS+HD+yWmmFj9qsjBXH+o5oirPatMpoB3JXZTakUzszGaI7lxrZYlNp2XY9A noDpuDXaVgbFnGRNMlD1s5LZ7XiGqq+hV5ywTbIP/H88N4F10aZn9f8nf/v78NDAFJyt hUW5XHWBCuLTsARpxhOt71D23pACUjltgdsz1ENTIvu1KeZk9xsA0ur7TXr1JUa3YNt3 0w3Y4KXq/jjOM4NpDe4TCRTIyXkM7Ic4S2ubOwPu/qPSKvnltdPMG2SeEkp/0g4HnQ/2 +qLd9ieiVuGY6PYHZL9VPfAyD+IvzOPZ095eCQ1L7QSHrt59/NTN7fPZvQxIGDVcGHni /eJQ== 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; bh=XL3qtxHMnQhPAkuFNir8ICXlbmmEZKRAk3PSvgkGZlE=; b=Toi0OyE/E2fxD5vBHdFnSO4f6nm1fGAJIOuJHE8Z6BjD5LXXSjRywgVLgxo1dAEOKC Fr1aqkm69xwkSjPmDZ6aV62a7Df0uBPXqgrsz7BK5hn/G+85Kqu8HE/e1RAVOxTkV1bl ZT/uWJurm2gnngcjExFLu/a483zMK7nPQFQZdcR/tIiz6jEVcEY9pCDq0pfqfqic9DqN G9trTfid79BIxc9kxsKwC26m4mnQBI5B8fyTy/X4mDnbPdinYySVq5FK6elMNHaftgOA 3edhUrnScn8OPsvgg0+39brGvjYi0Xl7bwuoOlzZtlKr+q753GjIxT/fRYjfBtA8dKHB NH5g== 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 52si4935362edz.413.2019.09.28.21.24.33; Sat, 28 Sep 2019 21:25:07 -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 S1726510AbfI2EUw (ORCPT + 99 others); Sun, 29 Sep 2019 00:20:52 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:33922 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726018AbfI2EUv (ORCPT ); Sun, 29 Sep 2019 00:20:51 -0400 Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x8T47AwC145444 for ; Sun, 29 Sep 2019 00:20:50 -0400 Received: from e06smtp07.uk.ibm.com (e06smtp07.uk.ibm.com [195.75.94.103]) by mx0a-001b2d01.pphosted.com with ESMTP id 2van1urj2y-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Sun, 29 Sep 2019 00:20:50 -0400 Received: from localhost by e06smtp07.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sun, 29 Sep 2019 05:20:47 +0100 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp07.uk.ibm.com (192.168.101.137) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Sun, 29 Sep 2019 05:20:42 +0100 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x8T4Kf8m42926160 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 29 Sep 2019 04:20:41 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 14F41A4051; Sun, 29 Sep 2019 04:20:41 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D89D1A404D; Sun, 29 Sep 2019 04:20:38 +0000 (GMT) Received: from localhost.localdomain (unknown [9.85.142.195]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Sun, 29 Sep 2019 04:20:38 +0000 (GMT) Subject: Re: [PATCH v6 5/9] powerpc/ima: add measurement rules to ima arch specific policy From: Mimi Zohar To: Nayna Jain , linuxppc-dev@ozlabs.org, linux-efi@vger.kernel.org, linux-integrity@vger.kernel.org, devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , Ard Biesheuvel , Jeremy Kerr , Matthew Garret , Greg Kroah-Hartman , Claudio Carvalho , George Wilson , Elaine Palmer , Eric Ricther , "Oliver O'Halloran" , Rob Herring , Mark Rutland Date: Sun, 29 Sep 2019 00:20:38 -0400 In-Reply-To: <1569594360-7141-6-git-send-email-nayna@linux.ibm.com> References: <1569594360-7141-1-git-send-email-nayna@linux.ibm.com> <1569594360-7141-6-git-send-email-nayna@linux.ibm.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: 19092904-0028-0000-0000-000003A3A3C0 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19092904-0029-0000-0000-00002465C963 Message-Id: <1569730838.4999.31.camel@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-09-29_02:,, 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 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1909290047 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2019-09-27 at 10:25 -0400, Nayna Jain wrote: > This patch adds the measurement rules to the arch specific policies for the > systems with trusted boot. > on trusted boot enabled systems. > Signed-off-by: Nayna Jain Minor comment correction below. Reviewed-by: Mimi Zohar > --- > arch/powerpc/kernel/ima_arch.c | 44 +++++++++++++++++++++++++++++++--- > 1 file changed, 41 insertions(+), 3 deletions(-) > > diff --git a/arch/powerpc/kernel/ima_arch.c b/arch/powerpc/kernel/ima_arch.c > index 39401b67f19e..77c61b142042 100644 > --- a/arch/powerpc/kernel/ima_arch.c > +++ b/arch/powerpc/kernel/ima_arch.c > @@ -12,8 +12,18 @@ bool arch_ima_get_secureboot(void) > return is_powerpc_os_secureboot_enabled(); > } > > -/* Defines IMA appraise rules for secureboot */ > +/* > + * The "arch_rules" contains both the securebot and trustedboot rules for adding > + * the kexec kernel image and kernel modules file hashes to the IMA measurement > + * list and verifying the file signatures against known good values. > + * > + * The "appraise_type=imasig|modsig" option allows the good signature to be > + * stored as an xattr or as an appended signature. The "template=ima-modsig" > + * option includes the appended signature in the IMA measurement list. includes the appended signature, when available, in the IMA measurement list.  > + */ > static const char *const arch_rules[] = { > + "measure func=KEXEC_KERNEL_CHECK template=ima-modsig", > + "measure func=MODULE_CHECK template=ima-modsig", > "appraise func=KEXEC_KERNEL_CHECK appraise_type=imasig|modsig", > #if !IS_ENABLED(CONFIG_MODULE_SIG) > "appraise func=MODULE_CHECK appraise_type=imasig|modsig", > @@ -22,12 +32,40 @@ static const char *const arch_rules[] = { > }; > > /* > - * Returns the relevant IMA arch policies based on the system secureboot state. > + * The "measure_rules" are enabled only on "trustedboot" enabled systems. > + * These rules add the kexec kernel image and kernel modules file hashes to > + * the IMA measurement list. > + */ > +static const char *const measure_rules[] = { > + "measure func=KEXEC_KERNEL_CHECK", > + "measure func=MODULE_CHECK", > + NULL > +}; > + > +/* > + * Returns the relevant IMA arch policies based on the system secureboot > + * and trustedboot state. > */ > const char *const *arch_get_ima_policy(void) > { > - if (is_powerpc_os_secureboot_enabled()) > + const char *const *rules; > + int offset = 0; > + > + for (rules = arch_rules; *rules != NULL; rules++) { > + if (strncmp(*rules, "appraise", 8) == 0) > + break; > + offset++; > + } > + > + if (is_powerpc_os_secureboot_enabled() > + && is_powerpc_trustedboot_enabled()) > return arch_rules; > > + if (is_powerpc_os_secureboot_enabled()) > + return arch_rules + offset; > + > + if (is_powerpc_trustedboot_enabled()) > + return measure_rules; > + > return NULL; > }