From: "Marvin Häuser" <mhaeuser@posteo.de>
To: devel@edk2.groups.io, Laszlo Ersek <lersek@redhat.com>,
Andrew Fish <afish@apple.com>,
Michael Kinney <michael.d.kinney@intel.com>
Subject: [GSoC proposal] Secure Image Loader
Date: Mon, 5 Apr 2021 01:01:54 +0200 [thread overview]
Message-ID: <c4e4ecc9-f4d2-f379-cbe9-2dee86f0cdb5@posteo.de> (raw)
Good day everyone,
I'll keep the introduction brief because I've been around for a while
now. :)
I'm Marvin Häuser, a third-year Computer Science student from TU
Kaiserslautern, Germany. Late last year, my colleague Vitaly from ISP
RAS and me introduced a formally verified Image Loader for UEFI usage at
ISP RAS Open[1] due to various defects we outlined in the corresponding
paper. Thank you once again Laszlo for your *incredible* review work on
the publication part.
I now want to make an effort to mainline it, preferably as part of the
current Google Summer of Code event. To be clear, my internship at ISP
RAS has concluded, and while Vitaly will be available for design
discussion, he has other priorities at the moment and the practical part
will be on me. I have previously submitted a proposal via the GSoC
website for your review.
There are many things to consider:
1. The Image Loader is a core component, and there needs to be a
significant level of quality and security assurance.
2. Being consumed by many packages, the proposed patch set will take a
lot of time to review and integrate.
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.
4. Some UEFI APIs like the Security Architecture protocols are
inconveniently abstract, see 5.
5. Some of the current code does not use the existing context, or
accesses it outside of the exposed APIs. The control flow of the
dispatchers may need to be adapted to make the context available to
appropriate APIs.
But obviously there are not only unpleasant considerations:
A. The Image Loader is mostly formally verified, and only very few
changes will be required from the last proven state. This gives a lot of
trust in its correctness and safety.
B. All outlined defects that are of critical nature have been fixed
successfully.
C. The Image Loader has been tested with real-world code loading
real-world OSes on thousands of machines in the past few months,
including rejecting malformed images (configurable by PCD).
D. The new APIs will centralise everything PE, reducing code duplication
and potentially unsafe operations.
E. Centralising and reduced parse duplication may improve overall boot
performance.
F. The code has been coverage-tested to not contain dead code.
G. The code has been fuzz-tested including sanitizers to not invoke
undefined behaviour.
H. I already managed to identify a malformed image in OVMF with its help
(incorrectly reported section alignment of an Intel IPXE driver). A fix
will be submitted shortly.
I. I plan to support PE section permissions, allowing for read-only data
segments when enabled.
There are likely more points for both lists, but I hope this gives a
decent starting point for discussion. What are your thoughts on the
matter? I strongly encourage everyone to read the section regarding
defects of our publication[2] to better understand the motivation. The
vague points above can of course be elaborated in due time, as you see fit.
Thank you for your time!
Best regards,
Marvin
[1] https://github.com/mhaeuser/ISPRASOpen-SecurePE
[2] https://arxiv.org/pdf/2012.05471.pdf
next reply other threads:[~2021-04-04 23:01 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-04 23:01 Marvin Häuser [this message]
2021-04-06 9:41 ` [edk2-devel] [GSoC proposal] Secure Image Loader 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
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=c4e4ecc9-f4d2-f379-cbe9-2dee86f0cdb5@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