Subject: Re: [PATCH] ima: add a new CONFIG for loading arch-specific policies

From: Mimi Zohar <[email-masked]>
Date: Mon, 02 Mar 2020 09:56:58 -0500

On Mon, 2020-03-02 at 15:52 +0100, Ard Biesheuvel wrote:
> On Mon, 2 Mar 2020 at 15:48, Mimi Zohar <[email-masked]> wrote:
> >
> > On Wed, 2020-02-26 at 14:10 -0500, Nayna Jain wrote:
> > > Every time a new architecture defines the IMA architecture specific
> > > functions - arch_ima_get_secureboot() and arch_ima_get_policy(), the IMA
> > > include file needs to be updated. To avoid this "noise", this patch
> > > defines a new IMA Kconfig IMA_SECURE_AND_OR_TRUSTED_BOOT option, allowing
> > > the different architectures to select it.
> > >
> > > Suggested-by: Linus Torvalds <[email-masked]>
> > > Signed-off-by: Nayna Jain <[email-masked]>
> > > Cc: Ard Biesheuvel <[email-masked]>
> > > Cc: Martin Schwidefsky <[email-masked]>
> > > Cc: Philipp Rudo <[email-masked]>
> > > Cc: Michael Ellerman <[email-masked]>
> > > ---
> > >  arch/powerpc/Kconfig           | 2 +-
> > >  arch/s390/Kconfig              | 1 +
> > >  arch/x86/Kconfig               | 1 +
> > >  include/linux/ima.h            | 3 +--
> > >  security/integrity/ima/Kconfig | 9 +++++++++
> > >  5 files changed, 13 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> > > index 497b7d0b2d7e..b8ce1b995633 100644
> > > --- a/arch/powerpc/Kconfig
> > > +++ b/arch/powerpc/Kconfig
> > > @@ -246,6 +246,7 @@ config PPC
> > >       select SYSCTL_EXCEPTION_TRACE
> > >       select THREAD_INFO_IN_TASK
> > >       select VIRT_TO_BUS                      if !PPC64
> > > +     select IMA_SECURE_AND_OR_TRUSTED_BOOT   if PPC_SECURE_BOOT
> > >       #
> > >       # Please keep this list sorted alphabetically.
> > >       #
> > > @@ -978,7 +979,6 @@ config PPC_SECURE_BOOT
> > >       prompt "Enable secure boot support"
> > >       bool
> > >       depends on PPC_POWERNV
> > > -     depends on IMA_ARCH_POLICY
> > >       help
> > >         Systems with firmware secure boot enabled need to define security
> > >         policies to extend secure boot to the OS. This config allows a user
> > > diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
> > > index 8abe77536d9d..90ff3633ade6 100644
> > > --- a/arch/s390/Kconfig
> > > +++ b/arch/s390/Kconfig
> > > @@ -195,6 +195,7 @@ config S390
> > >       select ARCH_HAS_FORCE_DMA_UNENCRYPTED
> > >       select SWIOTLB
> > >       select GENERIC_ALLOCATOR
> > > +     select IMA_SECURE_AND_OR_TRUSTED_BOOT
> > >
> > >
> > >  config SCHED_OMIT_FRAME_POINTER
> > > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> > > index beea77046f9b..cafa66313fe2 100644
> > > --- a/arch/x86/Kconfig
> > > +++ b/arch/x86/Kconfig
> > > @@ -230,6 +230,7 @@ config X86
> > >       select VIRT_TO_BUS
> > >       select X86_FEATURE_NAMES                if PROC_FS
> > >       select PROC_PID_ARCH_STATUS             if PROC_FS
> > > +     select IMA_SECURE_AND_OR_TRUSTED_BOOT   if EFI
> >
> > Not everyone is interested in enabling IMA or requiring IMA runtime
> > policies.  With this patch, enabling IMA_ARCH_POLICY is therefore
> > still left up to the person building the kernel.  As a result, I'm
> > seeing the following warning, which is kind of cool.
> >
> > WARNING: unmet direct dependencies detected for
> > IMA_SECURE_AND_OR_TRUSTED_BOOT
> >   Depends on [n]: INTEGRITY [=y] && IMA [=y] && IMA_ARCH_POLICY [=n]
> >   Selected by [y]:
> >   - X86 [=y] && EFI [=y]
> >
> > Ard, Michael, Martin, just making sure this type of warning is
> > acceptable before upstreaming this patch.  I would appreciate your
> > tags.
> >
> 
> Ehm, no, warnings like these are not really acceptable. It means there
> is an inconsistency in the way the Kconfig dependencies are defined.
> 
> Does this help:
> 
>   select IMA_SECURE_AND_OR_TRUSTED_BOOT   if EFI && IMA_ARCH_POLICY
> 
> ?

Yes, that's fine for x86.  Michael, Martin, do you want something
similar or would you prefer actually selecting IMA_ARCH_POLICY?

Mimi