From: "Marvin Häuser" <mhaeuser@posteo.de>
To: devel@edk2.groups.io, mcb30@ipxe.org,
Laszlo Ersek <lersek@redhat.com>, Andrew Fish <afish@apple.com>,
Michael Kinney <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [GSoC proposal] Secure Image Loader
Date: Wed, 7 Apr 2021 23:31:36 +0200 [thread overview]
Message-ID: <e80b2fdc-c8e4-00d8-4a3e-7ce459383518@posteo.de> (raw)
In-Reply-To: <a4e93ea3-bfe1-9a4c-ec44-52d74e4dd9dc@ipxe.org>
Good day Michael,
Sorry, but I do not see why this would be the case. In fact the solution
is (temporary) co-existence, as already is the case with
InstallProtocolInterface() and InstallMultipleProtocolInterfaces(). As
the new APIs would be a superset of the old ones, latter can be
implemented with former, as also previously done (*2_PROTOCOL instances
and shims in e.g. EdkCompatibilityPkg). In some cases, the original
protocol interfaces were actually deprecated successfully from the EDK
II code base. I would probably offer PCDs to disable the expose of the
old APIs, so platforms with little need for backwards-compatibility and
more focus on security can tighten the constraints as they see fit.
Considering the shimmed interfaces for the old protocols/PPIs/... can be
implemented on top of the new public API, and the public API must not
change, this code would be practically maintenance-free too in my opinion.
As for your example, I do not believe what is described is "broken".
Ideally, the platform loads all images to have a centralized place for
the security verification. While we do a very similar thing at
Acidanthera with our OpenCore bootloader to support Apple Secure Boot, I
hope you agree that this behaviour is actually a risky hack (now there
are two points of failure for security verification). Meanwhile, the
changes I'd like to propose to the current interfaces are mandatory to
ensure secure parsing of data. Lastly, this sort of API I would not
expect to be accessed outside of platform code.
Am I missing or overlooking something?
Best regards,
Marvin
On 07.04.21 23:05, Michael Brown wrote:
> On 05/04/2021 00:01, Marvin Häuser wrote:
>> 3. During my initial exploration, I discovered defective PPIs and
>> protocols (e.g. returning data with no corresponding size)
>> originating from the UEFI PI and UEFI specifications. Changes need to
>> be discussed, settled on, and submitted to the UEFI Forum.
>
> Would any of these changes break backwards compatibility? With the
> UEFI development model, any protocol that has ever existed in the
> specification will practically need to always be supported in that
> form: breaking backwards compatibility is simply not an option.
>
> For example: there is a fundamental design flaw in the LoadImage() and
> StartImage() API that makes it logically impossible for arbitrary code
> to install an EFI_LOADED_IMAGE_PROTOCOL instance (see
> https://github.com/ipxe/ProxyLoaderPkg/#why-is-it-needed for details
> on this). But there's zero chance that this design flaw will ever be
> fixed, because there's no way to eliminate code that relies on the
> existing LoadImage()/StartImage() APIs.
>
> So: if the formally verified image loader can fit within the
> constraints of "must not modify any externally exposed APIs" then it
> sounds like a potentially good idea. If it requires breaking changes
> to public APIs then I don't see how it could be integrated in practice.
>
> Thanks,
>
> Michael
>
>
>
>
>
next prev parent reply other threads:[~2021-04-07 21:31 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-04 23:01 [GSoC proposal] Secure Image Loader Marvin Häuser
2021-04-06 9:41 ` [edk2-devel] " Nate DeSimone
2021-04-06 10:06 ` Marvin Häuser
2021-04-06 16:16 ` [EXTERNAL] " Bret Barkelew
2021-04-08 11:16 ` Laszlo Ersek
2021-04-08 14:13 ` Andrew Fish
2021-04-08 16:06 ` Marvin Häuser
2021-04-08 16:44 ` Andrew Fish
2021-04-08 17:02 ` Marvin Häuser
2021-04-08 17:39 ` Andrew Fish
2021-04-08 21:07 ` Marvin Häuser
2021-04-08 21:48 ` Andrew Fish
2021-04-08 22:42 ` Michael Brown
2021-04-12 17:22 ` Marvin Häuser
2021-04-12 18:30 ` [EXTERNAL] " Bret Barkelew
2021-04-13 0:19 ` Michael D Kinney
2021-04-13 0:56 ` Nate DeSimone
2021-04-13 7:31 ` Marvin Häuser
2021-04-13 15:05 ` Andrew Fish
2021-04-13 18:04 ` Nate DeSimone
2021-04-13 18:08 ` Michael D Kinney
2021-04-13 18:14 ` Andrew Fish
2021-04-16 7:36 ` Marvin Häuser
2021-04-07 21:05 ` Michael Brown
2021-04-07 21:31 ` Marvin Häuser [this message]
2021-04-07 21:50 ` Michael Brown
2021-04-07 22:02 ` Andrew Fish
[not found] ` <1673B28429E5B4FE.4742@groups.io>
2021-04-07 22:10 ` Andrew Fish
2021-04-08 9:04 ` Marvin Häuser
2021-04-08 9:40 ` Michael Brown
2021-04-08 8:53 ` Marvin Häuser
2021-04-08 9:26 ` Michael Brown
2021-04-08 9:41 ` Marvin Häuser
2021-04-08 9:50 ` Marvin Häuser
2021-04-08 9:55 ` Michael Brown
2021-04-08 10:13 ` Marvin Häuser
2021-04-08 10:31 ` Michael Brown
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-list 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=e80b2fdc-c8e4-00d8-4a3e-7ce459383518@posteo.de \
--to=devel@edk2.groups.io \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox