All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dov Murik <dovmurik@linux.ibm.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: linux-efi@vger.kernel.org, Borislav Petkov <bp@suse.de>,
	Ashish Kalra <ashish.kalra@amd.com>,
	Brijesh Singh <brijesh.singh@amd.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	James Morris <jmorris@namei.org>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	Andi Kleen <ak@linux.intel.com>,
	Greg KH <gregkh@linuxfoundation.org>,
	Andrew Scull <ascull@google.com>,
	Dave Hansen <dave.hansen@intel.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Lenny Szubowicz <lszubowi@redhat.com>,
	Peter Gonda <pgonda@google.com>,
	James Bottomley <jejb@linux.ibm.com>,
	Tobin Feldman-Fitzthum <tobin@linux.ibm.com>,
	Jim Cadden <jcadden@ibm.com>,
	Daniele Buono <dbuono@linux.vnet.ibm.com>,
	linux-coco@lists.linux.dev,
	linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org, Dov Murik <dovmurik@linux.ibm.com>
Subject: Re: [PATCH v7 4/5] efi: Load efi_secret module if EFI secret area is populated
Date: Wed, 2 Feb 2022 17:09:03 +0200	[thread overview]
Message-ID: <cb548aa2-1ac3-46e7-91e4-f57a4fd63754@linux.ibm.com> (raw)
In-Reply-To: <20220202143128.jgadmr7tzetlobt7@sirius.home.kraxel.org>



On 02/02/2022 16:31, Gerd Hoffmann wrote:
> On Wed, Feb 02, 2022 at 01:08:43PM +0200, Dov Murik wrote:
>>
>>
>> On 02/02/2022 10:47, Gerd Hoffmann wrote:
>>> On Tue, Feb 01, 2022 at 12:44:12PM +0000, Dov Murik wrote:
>>>> If the efi_secret module is built, register a late_initcall in the EFI
>>>> driver which checks whether the EFI secret area is available and
>>>> populated, and then requests to load the efi_secret module.
>>>
>>>> +	area = memremap(efi.coco_secret, sizeof(*area), MEMREMAP_WB);
>>>> +	if (!area) {
>>>> +		pr_err("Failed to map confidential computing secret area descriptor\n");
>>>> +		return -ENOMEM;
>>>> +	}
>>>> +	if (!area->base_pa || area->size < sizeof(*header_guid))
>>>> +		goto unmap_desc;
>>>> +
>>>> +	header_guid = (void __force *)ioremap_encrypted(area->base_pa, sizeof(*header_guid));
>>>> +	if (!header_guid) {
>>>> +		pr_err("Failed to map secret area\n");
>>>> +		ret = -ENOMEM;
>>>> +		goto unmap_desc;
>>>> +	}
>>>> +	if (efi_guidcmp(*header_guid, EFI_SECRET_TABLE_HEADER_GUID))
>>>> +		goto unmap_encrypted;
>>>
>>> Why these sanity checks are here and not in the efi_secret module?
>>
>> The same checks indeed appear in the efi_secret module (see in patch 3:
>> efi_secret_map_area() and the beginning of efi_secret_securityfs_setup()).
>>
>> However, in the efi_secret module, the checks are noisy, because they
>> expect the secret area to be populated.  For example:
>>
>> +	if (efi.coco_secret == EFI_INVALID_TABLE_ADDR) {
>> +		pr_err("Secret area address is not available\n");
>> +		return -EINVAL;
>> +	}
> 
> Note I explicitly excluded that check ;)
> 
> Checking whenever efi.coco_secret looks valid and only try load
> efi_secret if that is the case (and otherwise stay silent) makes
> perfect sense.  The other checks should be dropped IMHO.
> 
>> Another approach could be to just try to load the module anyway, and
>> the module will fail (silently? noisily?) if there's no designated
>> secret area or it's not populated.  I feel that will be harder to
>> understand what's going on.
> 
> I think the module should fail noisily.  See above for autoload.  In
> case the module is loaded (either manually by the admin, or because
> efi.coco_secret != EFI_INVALID_TABLE_ADDR) and it can't actually load
> the secrets we want know why ...
> 

Note that the AmdSev build of OVMF always publishes
LINUX_EFI_COCO_SECRET_TABLE_GUID in the EFI table.  Even when
LAUNCH_SECRET was not executed.  In such cases the secret area will be
empty.

If we keep only the 'efi.coco_secret != EFI_INVALID_TABLE_ADDR' check,
we'll get errors from efi_secret for every VM launch that doesn't
undergo LAUNCH_SECRET.  I don't think that's good.

If we *do* want to check that the area starts with
EFI_SECRET_TABLE_HEADER_GUID (like I think we should), we need all the
checks before that, like checking that the area is big enough, and that
all the memremap()s succeed -- before actually comparing the
header_guid.  The checks are basically prerequisites for calling
efi_guidcmp() safely.

-Dov


  reply	other threads:[~2022-02-02 15:09 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-01 12:44 [PATCH v7 0/5] Allow guest access to EFI confidential computing secret area Dov Murik
2022-02-01 12:44 ` [PATCH v7 1/5] efi: Save location of EFI confidential computing area Dov Murik
2022-02-02  8:38   ` Gerd Hoffmann
2022-02-01 12:44 ` [PATCH v7 2/5] efi/libstub: Reserve confidential computing secret area Dov Murik
2022-02-02  8:41   ` Gerd Hoffmann
2022-02-02 11:13     ` Dov Murik
2022-02-01 12:44 ` [PATCH v7 3/5] virt: Add efi_secret module to expose confidential computing secrets Dov Murik
2022-02-02  8:45   ` Gerd Hoffmann
2022-02-02 10:55     ` Dov Murik
2022-02-01 12:44 ` [PATCH v7 4/5] efi: Load efi_secret module if EFI secret area is populated Dov Murik
2022-02-02  8:47   ` Gerd Hoffmann
2022-02-02 11:08     ` Dov Murik
2022-02-02 14:31       ` Gerd Hoffmann
2022-02-02 15:09         ` Dov Murik [this message]
2022-02-03  6:16           ` Gerd Hoffmann
2022-02-03 11:03             ` Dov Murik
2022-02-03 12:11               ` Gerd Hoffmann
2022-02-01 12:44 ` [PATCH v7 5/5] docs: security: Add coco/efi_secret documentation Dov Murik
2022-02-02  8:49   ` Gerd Hoffmann
2022-02-02 11:19     ` Dov Murik
2022-02-01 13:50 ` [PATCH v7 0/5] Allow guest access to EFI confidential computing secret area Greg KH
2022-02-01 14:24   ` James Bottomley
2022-02-01 14:24     ` James Bottomley
2022-02-01 14:41     ` Greg KH
2022-02-01 14:41       ` Greg KH
2022-02-01 15:05       ` James Bottomley
2022-02-01 15:05         ` James Bottomley
2022-02-01 18:07     ` Dr. David Alan Gilbert
2022-02-01 18:07       ` Dr. David Alan Gilbert
2022-02-02  4:01     ` Matthew Garrett
2022-02-02  4:01       ` Matthew Garrett
2022-02-02  6:10       ` Greg KH
2022-02-02  6:10         ` Greg KH
2022-02-02  6:54         ` Matthew Garrett
2022-02-02  6:54           ` Matthew Garrett
2022-02-02  7:05           ` Greg KH
2022-02-02  7:05             ` Greg KH
2022-02-02  7:10             ` Matthew Garrett
2022-02-02  7:10               ` Matthew Garrett
2022-02-02  7:22               ` Ard Biesheuvel
2022-02-02  7:22                 ` Ard Biesheuvel
2022-02-02  8:04                 ` Matthew Garrett
2022-02-02  8:04                   ` Matthew Garrett
2022-02-02  8:25                   ` Greg KH
2022-02-02  8:25                     ` Greg KH
2022-02-09  0:19                     ` Nayna
2022-02-09  0:25                     ` Nayna
2022-02-09  0:25                       ` Nayna
2022-02-02  8:36                   ` Gerd Hoffmann
2022-02-02  8:36                     ` Gerd Hoffmann
2022-02-02  8:45                     ` Matthew Garrett
2022-02-02  8:45                       ` Matthew Garrett
2022-02-07 18:50                       ` Dov Murik
2022-02-07 18:50                         ` Dov Murik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cb548aa2-1ac3-46e7-91e4-f57a4fd63754@linux.ibm.com \
    --to=dovmurik@linux.ibm.com \
    --cc=ak@linux.intel.com \
    --cc=ardb@kernel.org \
    --cc=ascull@google.com \
    --cc=ashish.kalra@amd.com \
    --cc=bp@suse.de \
    --cc=brijesh.singh@amd.com \
    --cc=dave.hansen@intel.com \
    --cc=dbuono@linux.vnet.ibm.com \
    --cc=dgilbert@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jcadden@ibm.com \
    --cc=jejb@linux.ibm.com \
    --cc=jmorris@namei.org \
    --cc=kraxel@redhat.com \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=lszubowi@redhat.com \
    --cc=pgonda@google.com \
    --cc=serge@hallyn.com \
    --cc=thomas.lendacky@amd.com \
    --cc=tobin@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.