From: Gary Lin <glin-IBi9RG/b67k@public.gmane.org>
To: x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: "H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>,
Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>,
Ard Biesheuvel
<ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Ingo Molnar <mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Matt Fleming
<matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>,
Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org>,
Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
Joey Lee <jlee-IBi9RG/b67k@public.gmane.org>
Subject: [RFC v3 PATCH 0/2] Introduce Security Version to EFI Stub
Date: Tue, 5 Dec 2017 18:01:46 +0800 [thread overview]
Message-ID: <20171205100148.5757-1-glin@suse.com> (raw)
The series of patches introduce Security Version to EFI stub.
Security Version is a monotonically increasing number and designed to
prevent the user from loading an insecure kernel accidentally. The
bootloader maintains a list of security versions corresponding to
different distributions. After fixing a critical vulnerability, the
distribution kernel maintainer bumps the "version", and the bootloader
updates the list automatically. When the user tries to load a kernel
with a lower security version, the bootloader shows a warning prompt
to notify the user the potential risk.
For more details: https://github.com/lcp/shim/wiki/Security-Version
The original idea is to add a new PE/COFF section to store the data.
However, there are some restrictions.
1. For x86, the size limit of the EFI header is 0x200, and a section entry
in the section table takes 40 bytes. Currently, the EFI header already
occupies the first 0x1da bytes, so there is no room for a new section
entry.
2. The MemoryAttributes table sets the attributes of memory pages according
to the section flags. For ARM64, the minimal granularity is 4KB, but
Security Version only needs a few bytes, and it's pointless to allocate
4KB for it.
Fortunately, there is a special section defined in PE/COFF: resource
section. The only known user of the resource section in UEFI is the HII
protocol which fetches data from "HII" directory. For Security Version, a
new directory called "LinuxSV" is created and it contains the file offset
to the struct of Security Version. The bootloader just follows the
resource table to fetch the "version" from the image file.
v3:
- Move everything to the resource section to be compatible with both
x86 and ARM64
v2:
- Decrease the size of secdata_offset to 2 bytes since the setup header
is limited to around 32KB.
- Restructure the secdata section. The signer is now a null-terminated
string. The type of distro_version changes to u32 in case the distro
uses a long version.
- Modify the Kconfig names and add help.
- Remove the signer name hack in build.c.
Cc: "H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
Cc: Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
Cc: Ard Biesheuvel <ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Ingo Molnar <mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Matt Fleming <matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
Cc: Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org>
Cc: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>
Cc: Joey Lee <jlee-IBi9RG/b67k@public.gmane.org>
Signed-off-by: Gary Lin <glin-IBi9RG/b67k@public.gmane.org>
Gary Lin (2):
x86/efi: Introduce Security Version to x86
arm64/efi: Introduce Security Version to ARM64
arch/arm64/kernel/efi-header.S | 57 ++++++++++++++++++++++++++++++++++++++++++
arch/x86/boot/header.S | 55 ++++++++++++++++++++++++++++++++++++++++
drivers/firmware/efi/Kconfig | 40 +++++++++++++++++++++++++++++
3 files changed, 152 insertions(+)
--
2.15.0
next reply other threads:[~2017-12-05 10:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-05 10:01 Gary Lin [this message]
2017-12-05 10:01 ` [RFC v3 PATCH 1/2] x86/efi: Introduce Security Version to x86 Gary Lin
2017-12-05 10:01 ` [RFC v3 PATCH 2/2] arm64/efi: Introduce Security Version to ARM64 Gary Lin
[not found] ` <20171205100148.5757-1-glin-IBi9RG/b67k@public.gmane.org>
2017-12-05 21:14 ` [RFC v3 PATCH 0/2] Introduce Security Version to EFI Stub Josh Boyer
[not found] ` <CA+5PVA4k9RN22i2d=4GCPnm9bwi5KUgp8PiV=9X1pBZxN1xPmg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-12-06 3:24 ` Gary Lin
2017-12-06 18:37 ` Ingo Molnar
2017-12-07 1:59 ` Gary Lin
2017-12-07 6:09 ` Ingo Molnar
2017-12-07 7:52 ` Gary Lin
2017-12-07 8:18 ` Ingo Molnar
[not found] ` <20171207081816.jy2rw5y5iyxeqw6n-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-12-07 10:27 ` Gary Lin
2017-12-07 10:35 ` Ingo Molnar
2017-12-08 9:00 ` Gary Lin
2017-12-07 14:26 ` Alan Cox
2017-12-08 10:03 ` Gary Lin
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=20171205100148.5757-1-glin@suse.com \
--to=glin-ibi9rg/b67k@public.gmane.org \
--cc=ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \
--cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
--cc=jlee-IBi9RG/b67k@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org \
--cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@public.gmane.org \
--cc=x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
/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;
as well as URLs for NNTP newsgroup(s).