Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2103479pxb; Fri, 5 Mar 2021 07:21:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJxY8gjZevLsejSpYrLMnCR70xuBGfZXTfiXrUgeBZGvNX+6/etPCWljCoAl8cNYFF4+8NQ0 X-Received: by 2002:a05:6402:1545:: with SMTP id p5mr9424917edx.155.1614957714993; Fri, 05 Mar 2021 07:21:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614957714; cv=none; d=google.com; s=arc-20160816; b=WdwJuxQa4ZkjPY6uPhTq8Ant6Eooy3Ewo/wnkBUykT5adrKLY8xylhO+Syce7NqYKj CglNm/ifxwMviwxLWGzkfjfrZO0B0E/AzQOJxbVM551sm/o2IdIyOkNwyj8TCrlrmc1s arNQZFZMBaJ44szBITlGbf17/3ibEIgbijTb4EO5xNV7DkpXzAdQyZZMIKk6leSqdesy y0r6IN/io1XmpODZm8r7EX1gVGWx9k2290WGPRo1uW3ZnofRkyHLDFeF4X40ZUsu3v4z gmOJFd6te62ujSY8EFM19g2zXpnizu0xsxZfuNEqv+yC95fqyM0Ja3KM3uASo46+V1oC b2Ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Qou/DS3pcZYJfFvy+cidaJ9mkhMIhYFGSml+M8xcdhE=; b=SES3Q9uRW2kmbwkKJKFzKzKluh+qtAEwoICd6Y/4KlJbOnPpi2vLGAqu3qtKHwUY+v 7yp6xeewDSm3i6+9D3yBKDYlo+tK175ObsnlZFwyiBQB5QW0ZfoMC/+idNwjUsDaG82l r/B4+XLTgnGdegV/LhsdEhKvTZ4Lo+SB5Kjg4J66oUI5MsZFwUsbmCSKt4dKn2uabgyz Kdg2EBHsWjO+I7LOCjUrFJnWL3p1hE9UmKZya5PSLA2CPVFjzp39VaDaPdPZujTua5eQ qqN3uOdHG9dfqJtEA0ap0UaLJvksKit0RapHkp64GhHzc4M6l/9bARKOpVfV1/EsO6C3 AlfQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n19si1466161ejx.370.2021.03.05.07.21.32; Fri, 05 Mar 2021 07:21:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229505AbhCEPUo (ORCPT + 99 others); Fri, 5 Mar 2021 10:20:44 -0500 Received: from frasgout.his.huawei.com ([185.176.79.56]:2625 "EHLO frasgout.his.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229651AbhCEPUE (ORCPT ); Fri, 5 Mar 2021 10:20:04 -0500 Received: from fraeml714-chm.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4DsWV848kcz67vwn; Fri, 5 Mar 2021 23:14:08 +0800 (CST) Received: from fraphisprd00473.huawei.com (7.182.8.141) by fraeml714-chm.china.huawei.com (10.206.15.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2106.2; Fri, 5 Mar 2021 16:19:55 +0100 From: Roberto Sassu To: , CC: , , , , Roberto Sassu Subject: [PATCH v4 02/11] evm: Load EVM key in ima_load_x509() to avoid appraisal Date: Fri, 5 Mar 2021 16:19:14 +0100 Message-ID: <20210305151923.29039-3-roberto.sassu@huawei.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210305151923.29039-1-roberto.sassu@huawei.com> References: <20210305151923.29039-1-roberto.sassu@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [7.182.8.141] X-ClientProxiedBy: lhreml707-chm.china.huawei.com (10.201.108.56) To fraeml714-chm.china.huawei.com (10.206.15.33) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The public builtin keys do not need to be appraised by IMA as the restriction on the IMA/EVM trusted keyrings ensures that a key can be loaded only if it is signed with a key on the builtin or secondary keyrings. However, when evm_load_x509() is called, appraisal is already enabled and a valid IMA signature must be added to the EVM key to pass verification. Since the restriction is applied on both IMA and EVM trusted keyrings, it is safe to disable appraisal also when the EVM key is loaded. This patch calls evm_load_x509() inside ima_load_x509() if CONFIG_IMA_LOAD_X509 is enabled, which crosses the normal IMA and EVM boundary. Signed-off-by: Roberto Sassu Reviewed-by: Mimi Zohar --- security/integrity/iint.c | 4 +++- security/integrity/ima/ima_init.c | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/security/integrity/iint.c b/security/integrity/iint.c index 1d20003243c3..c487e74a35fb 100644 --- a/security/integrity/iint.c +++ b/security/integrity/iint.c @@ -200,7 +200,9 @@ int integrity_kernel_read(struct file *file, loff_t offset, void __init integrity_load_keys(void) { ima_load_x509(); - evm_load_x509(); + + if (!IS_ENABLED(CONFIG_IMA_LOAD_X509)) + evm_load_x509(); } static int __init integrity_fs_init(void) diff --git a/security/integrity/ima/ima_init.c b/security/integrity/ima/ima_init.c index 6e8742916d1d..5076a7d9d23e 100644 --- a/security/integrity/ima/ima_init.c +++ b/security/integrity/ima/ima_init.c @@ -108,6 +108,10 @@ void __init ima_load_x509(void) ima_policy_flag &= ~unset_flags; integrity_load_x509(INTEGRITY_KEYRING_IMA, CONFIG_IMA_X509_PATH); + + /* load also EVM key to avoid appraisal */ + evm_load_x509(); + ima_policy_flag |= unset_flags; } #endif -- 2.26.2