Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp270424pxj; Thu, 3 Jun 2021 06:21:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjkcofygKNSWLV4ibhVN92uMvb1MIsW+FmUmfbn6nnDnbOhTG8b3aUmjTVYJz6SJKcYLKX X-Received: by 2002:a17:906:7d0:: with SMTP id m16mr12256480ejc.319.1622726466793; Thu, 03 Jun 2021 06:21:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622726466; cv=none; d=google.com; s=arc-20160816; b=wbf8USCT2QPA1F6SLNESt4N4RmQvdv3dGlG95FHHnL6pOgo+oqiJF+Gnup1LM+1whH fx7HdHPV/bnUo3I9iPM0oULuUEnyd9+VsQI/WSShZC9Bs/i+9xNrO8m8/GqnurJdYd4x CORfa7RVT6ChYHYI8FOTU28Sf/OfU5UPdLZphyjcUbdUh1nWULhDk1VktAq2o9vPHMU1 fyU9r2EpI+LItCGWlOQtU5EYapqGX+Qyepb7kMAHhzYywdIR0xWieNCK04WwSEulONbn g+3GCHLh3YveZztlSv4kvt8Shi2jtXrC7wIYlQk3p5u4u+sUztgF5s4Vr3NFkaNGU5wH FSfQ== 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=91+hjfyG820CAfnYaxK4ZuPVvtK1O+I4jui7pB+rpuY=; b=HtoiOJrmRRAE0tCbjHvruaih30i+nxOPONmQ9E/qiARj9bkUaQnonH0HscZpQVtnxe vDl8R/tsboU2tya7w4FA7jDTkXyUS+GJ47Tr2HnbBZjSb1H7RIChJ371Fiu2rBCrGe5n IlR4b/wL6IljtAGDgqPapDchgfwty8HXEIdnLakP2egQbfeZZsC0DmrgDbiTQKTTKUIr JfF1BuDXFy2QnY37W8MBFVrZ/VT8UhG58AMt+RC2C3eqYJuyGmJkPzum/8FgO6F6Kf73 sLHC7DhWlmr75I8HnG4mrAj2DZ43kDGzfWO9BbmcqdJDB1bRLQP7DWa4P45Bz+dBEPSh S2eA== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id co10si2289134edb.509.2021.06.03.06.20.44; Thu, 03 Jun 2021 06:21:06 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231295AbhFCNTe (ORCPT + 99 others); Thu, 3 Jun 2021 09:19:34 -0400 Received: from frasgout.his.huawei.com ([185.176.79.56]:3141 "EHLO frasgout.his.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230351AbhFCNTe (ORCPT ); Thu, 3 Jun 2021 09:19:34 -0400 Received: from fraeml714-chm.china.huawei.com (unknown [172.18.147.200]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4FwmRr5FFtz6V09Q; Thu, 3 Jun 2021 21:08:40 +0800 (CST) Received: from roberto-ThinkStation-P620.huawei.com (10.204.62.217) by fraeml714-chm.china.huawei.com (10.206.15.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Thu, 3 Jun 2021 15:17:47 +0200 From: Roberto Sassu To: , CC: , , , Roberto Sassu Subject: [RESEND][PATCH v2 6/7] ima: Define new template evm-sig Date: Thu, 3 Jun 2021 15:17:05 +0200 Message-ID: <20210603131705.1426671-1-roberto.sassu@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <9e5f5ddca94fb1915fb15302e2b7b5f2bf4a68a7.camel@linux.ibm.com> References: <9e5f5ddca94fb1915fb15302e2b7b5f2bf4a68a7.camel@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.204.62.217] X-ClientProxiedBy: lhreml753-chm.china.huawei.com (10.201.108.203) 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 With the recent introduction of the evmsig template field, remote verifiers can obtain the EVM portable signature instead of the IMA signature, to verify file metadata. After introducing the new fields to include file metadata in the measurement list, this patch finally defines the evm-sig template, whose format is: d-ng|n-ng|evmsig|xattrnames|xattrlengths|xattrvalues|iuid|igid|imode xattrnames, xattrlengths and xattrvalues are populated only from defined EVM protected xattrs, i.e. the ones that EVM considers to verify the portable signature. xattrnames and xattrlengths are populated only if the xattr is present. xattrnames and xattrlengths are not necessary for verifying the EVM portable signature, but they are included for completeness of information, if a remote verifier wants to infer more from file metadata. Signed-off-by: Roberto Sassu Signed-off-by: Mimi Zohar --- Documentation/security/IMA-templates.rst | 1 + security/integrity/ima/ima_template.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Documentation/security/IMA-templates.rst b/Documentation/security/IMA-templates.rst index 6a58760a0a35..5adc22f99496 100644 --- a/Documentation/security/IMA-templates.rst +++ b/Documentation/security/IMA-templates.rst @@ -91,6 +91,7 @@ Below, there is the list of defined template descriptors: - "ima-sig": its format is ``d-ng|n-ng|sig``; - "ima-buf": its format is ``d-ng|n-ng|buf``; - "ima-modsig": its format is ``d-ng|n-ng|sig|d-modsig|modsig``; + - "evm-sig": its format is ``d-ng|n-ng|evmsig|xattrnames|xattrlengths|xattrvalues|iuid|igid|imode``; Use diff --git a/security/integrity/ima/ima_template.c b/security/integrity/ima/ima_template.c index 159a31d2fcdf..a85963853a91 100644 --- a/security/integrity/ima/ima_template.c +++ b/security/integrity/ima/ima_template.c @@ -22,6 +22,8 @@ static struct ima_template_desc builtin_templates[] = { {.name = "ima-sig", .fmt = "d-ng|n-ng|sig"}, {.name = "ima-buf", .fmt = "d-ng|n-ng|buf"}, {.name = "ima-modsig", .fmt = "d-ng|n-ng|sig|d-modsig|modsig"}, + {.name = "evm-sig", + .fmt = "d-ng|n-ng|evmsig|xattrnames|xattrlengths|xattrvalues|iuid|igid|imode"}, {.name = "", .fmt = ""}, /* placeholder for a custom format */ }; @@ -69,7 +71,8 @@ static const struct ima_template_field supported_fields[] = { * need to be accounted for since they shouldn't be defined in the same template * description as 'd-ng' and 'n-ng' respectively. */ -#define MAX_TEMPLATE_NAME_LEN sizeof("d-ng|n-ng|sig|buf|d-modisg|modsig") +#define MAX_TEMPLATE_NAME_LEN \ + sizeof("d-ng|n-ng|evmsig|xattrnames|xattrlengths|xattrvalues|iuid|igid|imode") static struct ima_template_desc *ima_template; static struct ima_template_desc *ima_buf_template; -- 2.25.1