Re: [PATCH 09/24] kexec_file: Disable at runtime if securelevel has been set

From: Mimi Zohar
Date: Fri Apr 07 2017 - 04:28:38 EST


On Fri, 2017-04-07 at 15:41 +0800, Dave Young wrote:
> On 04/07/17 at 08:07am, David Howells wrote:
> > Dave Young <dyoung@xxxxxxxxxx> wrote:
> >
> > > > > > + /* Don't permit images to be loaded into trusted kernels if we're not
> > > > > > + * going to verify the signature on them
> > > > > > + */
> > > > > > + if (!IS_ENABLED(CONFIG_KEXEC_VERIFY_SIG) && kernel_is_locked_down())
> > > > > > + return -EPERM;
> > > > > > +
> > > > > >
> > > >
> > > > IMA can be used to verify file signatures too, based on the LSM hooks
> > > > in Âkernel_read_file_from_fd(). ÂCONFIG_KEXEC_VERIFY_SIG should not be
> > > > required.
> > >
> > > Mimi, I remember we talked somthing before about the two signature
> > > verification. One can change IMA policy in initramfs userspace,
> > > also there are kernel cmdline param to disable IMA, so it can break the
> > > lockdown? Suppose kexec boot with ima disabled cmdline param and then
> > > kexec reboot again..
> >
> > I guess I should lock down the parameter to disable IMA too.
>
> That is one thing, user can change IMA policy in initramfs userspace,
> I'm not sure if IMA enforce the signed policy now, if no it will be also
> a problem.

I'm not sure how this relates to the question of whether IMA verifies
the kexec kernel image signature, as the test would not be based on a
Kconfig option, but on a runtime variable.

To answer your question, the rule for requiring the policy to be
signed is: Âappraise func=POLICY_CHECK appraise_type=imasig

When the ability to append rules is Kconfig enabled, the builtin
policy requires the new policy or additional rules to be signed.
ÂUnfortunately, always requiring the policy to be signed, would have
broken userspace.

Mimi