From: Jarkko Sakkinen <jarkko@kernel.org>
To: Gallop Permission <permissiontogallop@gmail.com>
Cc: keyrings@vger.kernel.org, David Howells <dhowells@redhat.com>,
linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH] KEYS: request_key: enforce keyring restrictions on constructed keys
Date: Sat, 31 Oct 2026 09:53:49 +0200 [thread overview]
Message-ID: <auWejQPzciYJWHj3@kernel.org> (raw)
In-Reply-To: <CAMdFwLH_cg_=cLaL-j2B_0kzAEof89r13=cYR--hgeLxC7Bubw@mail.gmail.com>
On Sat, Oct 31, 2026 at 10:10:36AM +0530, Gallop Permission wrote:
> Hi, Jarkko
>
> 1. you asked: What does "key becoming positive" mean here broken down?
> Here key becoming positive” means the transition from
> KEY_IS_UNINSTANTIATED to KEY_IS_POSITIVE
> after the type’s instantiate() succeeded and the payload is present.
Great use concrete termininology.
>
> 2. And on the second para
> For an unrestricted destination, construct_alloc_key() still
> pre-links the under-construction key,
> so concurrent request_key() calls for the same type/description
> find it and wait instead of
> starting another helper. That visibility is what deduplicates construction.
>
> For a restricted destination, the patch skips that provisional
> link until the key has been
> constructed and checked. A concurrent request for the same key may
> therefore fail to find
> the in-progress key and start a second helper. The keyring still
> holds at most one link for
> a given type/description; each result is offered through
> key_link(), and only a key accepted by
> the restriction is cached. This is a duplicate-work tradeoff, not
> duplicate links in the keyring.
>
> KEY_ALLOC_BYPASS_RESTRICTION callers are excluded from the deferral,
> they keep the existing provisional-link behavior and bypass the
> restriction check as before.
Ditto.
>
> 3. the rationale for the code change will be to stop an un priviledge
> actor with write access to
> a restricted keyring from bypassing the restriction checks.
OK, so I did not mean that. That is motivation to do a code change,
which is I guess what previous paragraph try to answer.
It says nothing about solution per se. And neither I see how this
answer would give anything on that.
>
> As for the points raised by sashiko ai (concerning
> potential outer-search bypasses in request_key_and_link)
> im going to need some more time to verify them and fold any necessary
> fixes for v2.
Address what I said about commit message by writing a proper commit
message.
>
> Best regards,
> Anvik
>
>
> On Fri, 30 Oct 2026 at 23:48, Jarkko Sakkinen <jarkko@kernel.org> wrote:
> >
> > On Fri, Oct 30, 2026 at 11:09:30PM +0530, Anvik Loitongbam wrote:
> > > construct_alloc_key() pre-links a newly allocated key into the destination
> > > keyring with __key_link(), bypassing __key_link_check_restriction(). If
> > > the request-key helper instantiates the key with ringid 0 (or any keyring
> > > other than the restricted destination), the key becomes positive while the
> > > provisional link in a restricted keyring remains, so the restriction never
> > > sees the payload, potentially resulting in a policy violation, where a
> > > user with write access can inject keys which are restricted on the restricted
> > > keyring.
> >
> > What does "key becoming positive" mean here broken down?
> >
> > Also I have really hard time on reading the second paragrah as it is,
> > let me count, over five lines long. I honestly cannot say that I
> > understood what I read. I tried it three times.
> >
> > If you understand your fix, you should be able to nail it.
> >
> > >
> > > Restricted destinations lose the provisional-link deduplication while the
> > > key is being constructed. Callers that pass
> > > KEY_ALLOC_BYPASS_RESTRICTION keep the existing provisional-link behavior.
> >
> > The second paragraph should be reformatted and there is no rationale
> > or descriptio for the code change.
> >
> > Br, Jarkko
Br, Jarkko
next prev parent reply other threads:[~2026-10-31 7:53 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-30 17:39 [PATCH] KEYS: request_key: enforce keyring restrictions on constructed keys Anvik Loitongbam
2026-10-30 18:07 ` sashiko-bot
2026-10-30 18:18 ` Jarkko Sakkinen
2026-10-31 4:40 ` Gallop Permission
2026-10-31 7:53 ` Jarkko Sakkinen [this message]
2026-10-31 7:56 ` Jarkko Sakkinen
2026-10-31 7:58 ` Jarkko Sakkinen
2026-10-31 8:20 ` Jarkko Sakkinen
2026-10-31 9:19 ` 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=auWejQPzciYJWHj3@kernel.org \
--to=jarkko@kernel.org \
--cc=dhowells@redhat.com \
--cc=keyrings@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=permissiontogallop@gmail.com \
--cc=stable@vger.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.