mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Luca Boccassi <luca.boccassi@gmail.com>,
	Paul Moore <paul@paul-moore.com>,
	 Christian Brauner	 <brauner@kernel.org>
Cc: Fan Wu <wufan@kernel.org>, Manuel Huber <manuelh@nvidia.com>,
	David Howells	 <dhowells@redhat.com>,
	Jarkko Sakkinen <jarkko@kernel.org>,
	Andrew Halaney	 <andrew@amutable.com>,
	James Morris <jmorris@namei.org>,
	"Serge E. Hallyn"	 <serge@hallyn.com>,
	linux-security-module@vger.kernel.org,  keyrings@vger.kernel.org,
	linux-kernel@vger.kernel.org,  kexec@lists.infradead.org,
	Mike Rapoport <rppt@kernel.org>,
	Pasha Tatashin	 <pasha.tatashin@soleen.com>,
	Pratyush Yadav <pratyush@kernel.org>,
	Alexander Graf <graf@amazon.com>
Subject: Re: [PATCH RFC 1/4] ipe: add the .ipe policy keyring
Date: Wed, 28 Oct 2026 08:42:56 -0400	[thread overview]
Message-ID: <37b653494cf282c6e428e2ae8fd781a0ea69bf3f.camel@HansenPartnership.com> (raw)
In-Reply-To: <CAMw=ZnR54hMBwGTps23t9Mm_VO1bAvmeX8uTf_VJ0rJsFNMLuw@mail.gmail.com>

On Tue, 2026-10-27 at 11:07 +0000, Luca Boccassi wrote:
> On Mon, 26 Oct 2026 at 12:57, <luca.boccassi@gmail.com> wrote:
> > I think there is one issue with the design pattern where keyrings
> > are set up in userspace, that I have mentioned a few times already
> > and I got documented in
> > https://www.freedesktop.org/software/systemd/man/latest/systemd-system.conf.html#RestrictFileSystemAccess=
> > as well: they are trivially bypassable if the kernel has kexec
> > enabled and it is signed. The security model relies on the "good"
> > userspace running first, but if kexec is enabled, there's no
> > guarantee that will be the case, and as far as I can tell it gives
> > root trivial capability of overriding it and extending the trust
> > chain as the attacker wishes.

The attack sounds doable, but it also seems to be exploiting a gap in
kexec policy: kexec is supposed to behave like a warm reboot so if boot
policy requires UKI only then so should kexec and that sounds like the
thing that should be fixed.

What's the mechanism boot uses to ensure UKI only? So we can see if it
can be adopted to kexec.

> > IPE specifically was designed to avoid exactly that, and ensure
> > userspace could not execute untrusted code, even with root
> > privileges. With this enabled by default, userspace can just load
> > the same signedkernel image, passing in compromised initrd and
> > command line, and gain arbitrary code execution on the host, since
> > only the kernel binary itself is verified, and anything goes for
> > the rest of the kexec parameters.

Yes, but, it the above kexec policy problem were solved, IPE would just
work as expected, wouldn't it?  So this seems like a work around for a
kexec issue rather than a fundamental IPE need.

> > This is of course not to say this new IPE keyring shouldn't be
> > added. But perhaps it would be nicer if the default build flag was
> > mutually exclusive with kexec being enabled? Not sure if that can
> > be expressed in Kconfig though? default: yes-if-kexec-off, no-if-
> > kexec-on

I wouldn't do this because a) I don't think it's an IPE problem, I
think it's a kexec one and b) distros get very tetchy about hard to
solve feature anti dependencies.

> > At the very least IMHO this relationship should be documented
> > explicitly in the kconfig blurb, as it seems to me it's a major
> > footgun to leave laying around, and users might not necessarily be
> > aware of it.

I'd document the need for trusted userspace on kexec if it was a boot
requirement, yes.

> KHO/keyring folks, what would you think about preserving sealed
> keyrings across kexec via KHO so that the chain of trust can't be
> reset by userspace? Good idea/bad idea/yes send patches/no go
> away/etc?

Well, yes, we do have a similar problem with the trusted keyrings. 
They're actually initialized from the shim created ..RT variables
(which are volatile, but don't die on kexec).  On first boot they're
initialized before user space, so we know they came from shim (or
another trusted component in the boot chain) but if root uses UEFI RT
services to add to a ..RT keyring, the added key will appear trusted
after kexec.

Regards,

James

  reply	other threads:[~2026-10-28 12:42 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-19 21:40 [PATCH RFC 0/4] IPE: add a dedicated " Manuel Huber via B4 Relay
2026-10-19 21:40 ` [PATCH RFC 1/4] ipe: add the .ipe " Manuel Huber via B4 Relay
2026-10-19 21:52   ` Randy Dunlap
2026-10-19 23:15   ` Fan Wu
2026-10-21 13:54     ` Christian Brauner
2026-10-21 16:51       ` Paul Moore
2026-10-22 10:18         ` Christian Brauner
2026-10-22 17:18           ` Paul Moore
2026-10-26 12:57             ` luca.boccassi
2026-10-27 11:07               ` Luca Boccassi
2026-10-28 12:42                 ` James Bottomley [this message]
2026-10-28 14:26                   ` Luca Boccassi
2026-10-28 16:14                     ` James Bottomley
2026-10-28 19:03                       ` Luca Boccassi
2026-10-22 18:01     ` Manuel Huber
2026-10-22 20:25       ` Fan Wu
2026-10-23 11:59         ` Christian Brauner
2026-10-27 20:12     ` Manuel Huber
2026-10-27 20:51       ` Fan Wu
2026-10-19 21:40 ` [PATCH RFC 2/4] keys: add KEY_SPEC_IPE_KEYRING Manuel Huber via B4 Relay
2026-10-19 23:24   ` Fan Wu
2026-10-21 13:51     ` Christian Brauner
2026-10-19 21:40 ` [PATCH RFC 3/4] Documentation: ipe: document the IPE keyring Manuel Huber via B4 Relay
2026-10-19 21:40 ` [PATCH RFC 4/4] selftests/ipe: test the IPE policy keyring Manuel Huber via B4 Relay
2026-10-19 23:28   ` Fan Wu
2026-10-22 17:22     ` Manuel Huber
2026-10-19 21:54 ` [PATCH RFC 0/4] IPE: add a dedicated " Jarkko Sakkinen

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=37b653494cf282c6e428e2ae8fd781a0ea69bf3f.camel@HansenPartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=andrew@amutable.com \
    --cc=brauner@kernel.org \
    --cc=dhowells@redhat.com \
    --cc=graf@amazon.com \
    --cc=jarkko@kernel.org \
    --cc=jmorris@namei.org \
    --cc=kexec@lists.infradead.org \
    --cc=keyrings@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=luca.boccassi@gmail.com \
    --cc=manuelh@nvidia.com \
    --cc=pasha.tatashin@soleen.com \
    --cc=paul@paul-moore.com \
    --cc=pratyush@kernel.org \
    --cc=rppt@kernel.org \
    --cc=serge@hallyn.com \
    --cc=wufan@kernel.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

all inboxes | Powered by JetHome®