From: "Ard Biesheuvel" <ardb@kernel.org>
To: devel@edk2.groups.io, kraxel@redhat.com
Cc: Alexander Graf <agraf@csgraf.de>,
dann frazier <dann.frazier@canonical.com>,
Leif Lindholm <quic_llindhol@quicinc.com>
Subject: Re: [edk2-devel] [PATCH v3 03/16] ArmVirtPkg: make EFI_LOADER_DATA non-executable
Date: Thu, 5 Jan 2023 12:44:15 +0100 [thread overview]
Message-ID: <CAMj1kXEgFWGF6YVKG=T52NC+=OjFrzTg75ca23mHsp=O4n1BBg@mail.gmail.com> (raw)
In-Reply-To: <20230105111929.wgjtafvbht5gl2x4@sirius.home.kraxel.org>
On Thu, 5 Jan 2023 at 12:19, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> Hi,
>
> > > What number would you expect? I'd hope that we get to <100 realistically.
> > >
> > > I'm happy to hear about alternatives to this approach. I'm very confident that forcing NX on always is going to have the opposite effect of what we want: Everyone who ships AAVMF binaries will disable NX because they eventually get bug reports from users that their shiny update regressed some legit use case.
> > >
> > > The only alternative I can think of would be logic similar to the patch I sent without any grub hash check: Exclude AllocatePages for LoaderData from the NX logic. Keep NX for any other non-code memory type as well as LoaderData pool allocations.
>
> > Another thing we might consider is trapping exec permission violations
> > and switching the pages in question from rw- to r-x.
>
> That sounds neat, especially as we can print a big'n'fat warning in that
> case, so the problem gets attention without actually breaking users.
>
That, and a sleep(5)
> Looking at the efi calls it looks like edk2 doesn't track the owner of
> an allocation (say by image handle), so I suspect it is not possible to
> automatically figure who is to blame?
>
> > Does GRUB generally load/map executable modules at page granularity?
>
> I don't think so, at least the code handles modules not being page
> aligned. But I think it's not grub modules, that fix was actually
> picked up meanwhile. But there are downstream patches for image
> loader code which look suspicious to me ...
>
OK, so the GRUB PE/COFF loader strikes again :-(
So shim may be broken in the exact same way, and the things shim loads
may not adhere to page alignment for the sections. Loading the kernel
itself this way should be fine, though - we always had section
alignment in the EFI stub kernel.
The downside of this approach is that it can only be done on a
page-by-page basis, given that the EFI_LOADER_DATA region in question
will cover both the .text/.rodata and the .data/.bss of the loaded
image.
Could someone check/confirm whether shim builds need to be take into
account here? Thanks.
next prev parent reply other threads:[~2023-01-05 11:44 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-26 8:24 [PATCH v3 00/16] ArmVirtPkg/ArmVirtQemu: Performance streamlining Ard Biesheuvel
2022-09-26 8:24 ` [PATCH v3 01/16] ArmVirtPkg: remove EbcDxe from all platforms Ard Biesheuvel
2022-09-26 8:24 ` [PATCH v3 02/16] ArmVirtPkg: do not enable iSCSI driver by default Ard Biesheuvel
2022-09-26 8:24 ` [PATCH v3 03/16] ArmVirtPkg: make EFI_LOADER_DATA non-executable Ard Biesheuvel
2022-09-26 22:28 ` [edk2-devel] " Leif Lindholm
2022-11-28 15:46 ` Gerd Hoffmann
2022-12-29 18:00 ` dann frazier
2023-01-03 9:59 ` Ard Biesheuvel
2023-01-03 19:39 ` Alexander Graf
2023-01-03 22:47 ` dann frazier
2023-01-04 9:35 ` Ard Biesheuvel
2023-01-04 11:11 ` Gerd Hoffmann
2023-01-04 12:04 ` Ard Biesheuvel
2023-01-04 12:56 ` Gerd Hoffmann
2023-01-06 9:55 ` Laszlo Ersek
2023-01-06 10:06 ` Laszlo Ersek
2023-01-04 13:13 ` Alexander Graf
2023-01-05 0:09 ` Alexander Graf
2023-01-05 8:11 ` Gerd Hoffmann
2023-01-05 8:43 ` Alexander Graf
2023-01-05 9:41 ` Ard Biesheuvel
2023-01-05 11:19 ` Gerd Hoffmann
2023-01-05 11:44 ` Ard Biesheuvel [this message]
2023-01-05 15:12 ` Gerd Hoffmann
2023-01-05 19:58 ` Gerd Hoffmann
2023-01-06 2:19 ` Sean
2023-01-06 8:44 ` Gerd Hoffmann
2023-01-05 23:37 ` Alexander Graf
2022-09-26 8:24 ` [PATCH v3 04/16] ArmVirtPkg/ArmVirtQemu: wire up timeout PCD to Timeout variable Ard Biesheuvel
2022-09-26 8:25 ` [PATCH v3 05/16] ArmPkg/ArmMmuLib: don't replace table entries with block entries Ard Biesheuvel
2022-09-26 22:32 ` Leif Lindholm
2022-09-26 8:25 ` [PATCH v3 06/16] ArmPkg/ArmMmuLib: Disable and re-enable MMU only when needed Ard Biesheuvel
2022-09-26 23:28 ` Leif Lindholm
2022-09-26 8:25 ` [PATCH v3 07/16] ArmPkg/ArmMmuLib: permit initial configuration with MMU enabled Ard Biesheuvel
2022-09-26 22:35 ` Leif Lindholm
2022-09-26 8:25 ` [PATCH v3 08/16] ArmPkg/ArmMmuLib: Reuse XIP MMU routines when splitting entries Ard Biesheuvel
2022-09-26 22:38 ` Leif Lindholm
2022-09-26 8:25 ` [PATCH v3 09/16] ArmPlatformPkg/PrePeiCore: permit entry with the MMU enabled Ard Biesheuvel
2022-09-26 22:39 ` [edk2-devel] " Leif Lindholm
2022-09-26 8:25 ` [PATCH v3 10/16] ArmVirtPkg/ArmVirtQemu: implement ArmPlatformLib with static ID map Ard Biesheuvel
2022-09-26 8:25 ` [PATCH v3 11/16] ArmVirtPkg/ArmVirtQemu: use first 128 MiB as permanent PEI memory Ard Biesheuvel
2022-09-26 8:25 ` [PATCH v3 12/16] ArmVirtPkg/ArmVirtQemu: enable initial ID map at early boot Ard Biesheuvel
2022-12-29 21:10 ` [edk2-devel] " dann frazier
2023-01-03 9:02 ` Ard Biesheuvel
2023-01-03 19:38 ` dann frazier
2022-09-26 8:25 ` [PATCH v3 13/16] ArmVirtPkg/ArmVirtQemu: Drop unused variable PEIM Ard Biesheuvel
2022-09-26 8:25 ` [PATCH v3 14/16] ArmVirtPkg/ArmVirtQemu: avoid shadowing PEIMs unless necessary Ard Biesheuvel
2022-09-26 8:25 ` [PATCH v3 15/16] ArmVirtPkg/QemuVirtMemInfoLib: use HOB not PCD to record the memory size Ard Biesheuvel
2022-09-26 8:25 ` [PATCH v3 16/16] ArmVirtPkg/ArmVirtQemu: omit PCD PEIM unless TPM support is enabled Ard Biesheuvel
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='CAMj1kXEgFWGF6YVKG=T52NC+=OjFrzTg75ca23mHsp=O4n1BBg@mail.gmail.com' \
--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