Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp306970pxj; Fri, 28 May 2021 04:35:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwyCrAZxnrLgUW8PXTWvWNRq4VfxBUPaZTFbXUiLFV23c7kQftHYJpHJ3dU2dCXX+PV4r8z X-Received: by 2002:a05:6e02:130f:: with SMTP id g15mr7024392ilr.73.1622201732380; Fri, 28 May 2021 04:35:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622201732; cv=none; d=google.com; s=arc-20160816; b=xX9S3X/EE3lQihBjjj5lTaq+SFxn15xfnCi5g6fo7Rvx5pD8GpUuxgPel3iOh+qYGF w9y037ozL8Jq+vB9Phj2GFwu/wU6VF+RtEKVOfgUexnNw9JbP4NPLg7Ncg5oAnvRAONd f3rVjyGLKSrMcEKMB9XzYdnMICb4HKULGRCmLofxawYJspel3IFY8ClMjBjrplcvhDqt 3JiSy/eZBJyJWcmR/AJUZi6PHQZnk4fJyGGeYeeyOqSk8OWjurMSs1hLC0AA6ZE3jRye 7yssfaZyOFyJWnPfx3anKE1CCaP/ZbKuScQRQSt1MvIms4wqrOkwLbggR1TOSrtYM4HP RZmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=6xw76SYf2iQK5wN/ZpS7XUVe1XUnPrtqRcltmE9iC6s=; b=ChJXsOxACwHhrYjfo97UOUGyTJQmPe9mXGlbcglWCPtUpDWjgy+KNlW14o6w036kpx hWQs6zOJF4lh18XxDWxto/4TrY+Zrz2o25MDIrKzJii80xmesg0R5WJeAHeUGFuhzGaC Ap/FwhkF4tVwDUr5CLvfeXZQ2ucj/8uZVkY31mQSj1bQGIsP+sHhRDreZdSxBcuhfIiY oy3TxU7SQFt2d3NStshJ8P5igK0z2cvvq/NZoX/0z+PSrYSRuD22WJLtRCQhePYhQXE7 +DLUVIFHLwRn2/ztgBDwUb4BHsJBJ0QYiFxZ2Tsjf199eLP7oeZNBn4U7DXYg1xZfKZ+ o3yA== 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 j11si5697552jat.42.2021.05.28.04.35.13; Fri, 28 May 2021 04:35:32 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235827AbhE1I0u (ORCPT + 99 others); Fri, 28 May 2021 04:26:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:47636 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236190AbhE1I0r (ORCPT ); Fri, 28 May 2021 04:26:47 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9955F613E3; Fri, 28 May 2021 08:25:11 +0000 (UTC) Date: Fri, 28 May 2021 10:25:08 +0200 From: Christian Brauner To: Roberto Sassu Cc: zohar@linux.ibm.com, mjg59@srcf.ucam.org, linux-integrity@vger.kernel.org, linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 2/7] ima: Define new template fields iuid and igid Message-ID: <20210528082508.lqolb3r2oepf3god@wittgenstein> References: <20210528073812.407936-1-roberto.sassu@huawei.com> <20210528073812.407936-3-roberto.sassu@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20210528073812.407936-3-roberto.sassu@huawei.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 28, 2021 at 09:38:07AM +0200, Roberto Sassu wrote: > This patch defines the new template fields iuid and igid, which include > respectively the inode UID and GID. For idmapped mounts, still the original > UID and GID are provided. > > These fields can be used to verify the EVM portable signature, if it was > included with the template fields sig or evmsig. > > Cc: Christian Brauner > Signed-off-by: Roberto Sassu > --- That's fine with me. Thanks, Robert! Acked-by: Christian Brauner > Documentation/security/IMA-templates.rst | 2 + > security/integrity/ima/ima_template.c | 4 ++ > security/integrity/ima/ima_template_lib.c | 45 +++++++++++++++++++++++ > security/integrity/ima/ima_template_lib.h | 4 ++ > 4 files changed, 55 insertions(+) > > diff --git a/Documentation/security/IMA-templates.rst b/Documentation/security/IMA-templates.rst > index 9f3e86ab028a..bf8ce4cf5878 100644 > --- a/Documentation/security/IMA-templates.rst > +++ b/Documentation/security/IMA-templates.rst > @@ -75,6 +75,8 @@ descriptors by adding their identifier to the format string > - 'modsig' the appended file signature; > - 'buf': the buffer data that was used to generate the hash without size limitations; > - 'evmsig': the EVM portable signature; > + - 'iuid': the inode UID; > + - 'igid': the inode GID; > > > Below, there is the list of defined template descriptors: > diff --git a/security/integrity/ima/ima_template.c b/security/integrity/ima/ima_template.c > index 7a60848c04a5..a5ecd9e2581b 100644 > --- a/security/integrity/ima/ima_template.c > +++ b/security/integrity/ima/ima_template.c > @@ -47,6 +47,10 @@ static const struct ima_template_field supported_fields[] = { > .field_show = ima_show_template_sig}, > {.field_id = "evmsig", .field_init = ima_eventevmsig_init, > .field_show = ima_show_template_sig}, > + {.field_id = "iuid", .field_init = ima_eventinodeuid_init, > + .field_show = ima_show_template_uint}, > + {.field_id = "igid", .field_init = ima_eventinodegid_init, > + .field_show = ima_show_template_uint}, > }; > > /* > diff --git a/security/integrity/ima/ima_template_lib.c b/security/integrity/ima/ima_template_lib.c > index f23296c33da1..87b40f391739 100644 > --- a/security/integrity/ima/ima_template_lib.c > +++ b/security/integrity/ima/ima_template_lib.c > @@ -551,3 +551,48 @@ int ima_eventevmsig_init(struct ima_event_data *event_data, > kfree(xattr_data); > return rc; > } > + > +static int ima_eventinodedac_init_common(struct ima_event_data *event_data, > + struct ima_field_data *field_data, > + bool get_uid) > +{ > + unsigned int id; > + > + if (!event_data->file) > + return 0; > + > + if (get_uid) > + id = i_uid_read(file_inode(event_data->file)); > + else > + id = i_gid_read(file_inode(event_data->file)); > + > + if (ima_canonical_fmt) { > + if (sizeof(id) == sizeof(u16)) > + id = cpu_to_le16(id); > + else > + id = cpu_to_le32(id); > + } > + > + return ima_write_template_field_data((void *)&id, sizeof(id), > + DATA_FMT_UINT, field_data); > +} > + > +/* > + * ima_eventinodeuid_init - include the inode UID as part of the template > + * data > + */ > +int ima_eventinodeuid_init(struct ima_event_data *event_data, > + struct ima_field_data *field_data) > +{ > + return ima_eventinodedac_init_common(event_data, field_data, true); > +} > + > +/* > + * ima_eventinodegid_init - include the inode GID as part of the template > + * data > + */ > +int ima_eventinodegid_init(struct ima_event_data *event_data, > + struct ima_field_data *field_data) > +{ > + return ima_eventinodedac_init_common(event_data, field_data, false); > +} > diff --git a/security/integrity/ima/ima_template_lib.h b/security/integrity/ima/ima_template_lib.h > index 54b67c80b315..b0aaf109f386 100644 > --- a/security/integrity/ima/ima_template_lib.h > +++ b/security/integrity/ima/ima_template_lib.h > @@ -50,4 +50,8 @@ int ima_eventmodsig_init(struct ima_event_data *event_data, > struct ima_field_data *field_data); > int ima_eventevmsig_init(struct ima_event_data *event_data, > struct ima_field_data *field_data); > +int ima_eventinodeuid_init(struct ima_event_data *event_data, > + struct ima_field_data *field_data); > +int ima_eventinodegid_init(struct ima_event_data *event_data, > + struct ima_field_data *field_data); > #endif /* __LINUX_IMA_TEMPLATE_LIB_H */ > -- > 2.25.1 >