Re: [Fedora 09/19] binfmt_elf: Elf executable signature verification

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 04, 2013 at 09:37:47PM -0400, Josh Boyer wrote:

[..]
> > +config BINFMT_ELF_SIG
> > +       bool "ELF binary signature verification"
> > +       depends on BINFMT_ELF
> > +       select INTEGRITY
> > +       select INTEGRITY_SIGNATURE
> > +       select INTEGRITY_ASYMMETRIC_KEYS
> > +       select IMA
> > +       select IMA_APPRAISE
> > +       select SYSTEM_TRUSTED_KEYRING
> > +       default n
> > +       ---help---
> > +         Check ELF binary signature verfication.
> 
> Please don't do this.  Yes, it's technically viable to select all the
> things you need, but this turns on entire subsystems we don't have
> enabled.  In months when the maintainers have long forgotten about
> this, we have to go figure out what turned on INTEGRITY and IMA
> because they aren't explicitly set in the config-* fragments.  It's
> really frustrating.
> 
> Instead, please make BINFMT_ELF_SIG depend on
> INTEGRITY_ASYMMETRIC_KEYS and IMA_APPRAISE, then explicitly enable the
> options you need in config-x86-generic.  Lump them together and
> include a comment at the top about what piece of functionality needs
> them.

Josh,

I don't think that will make lot of sense. When a user wants to enable
a feature, I think it is better that anything that feature depends on
is selected automatically.

I have had very frustating expriences when I do "make menuconfig" and
the options I want to enable are not there in menu because they are
depenedent on something else which is not enabled.

How on the earth a user is supposed to know that BINFMT_ELF_SIG is
dependent on IMA, IMA_APPRAISE, SYSTEM_TRUSTED_KEYRING
INTEGRITY_SIGNATURE, INTEGRITY_ASYMMETRIC_KEYS etc.

And we have precedence. CONFIG_MODULE_SIG selects all the component
it depends on.

[..]
> > +#ifdef CONFIG_BINFMT_ELF_SIG
> > +       if (mlock_mappings) {
> > +               retval = ima_appraise_file_digsig(system_trusted_keyring,
> > +                                       bprm->file, signature, siglen);
> > +               if (retval) {
> > +                       send_sig(SIGKILL, current, 0);
> > +                       goto out_free_dentry;
> > +               }
> > +               /* Signature verification successful */
> > +               bprm->cred->proc_signed = true;
> > +       }
> > +#endif
> 
> If I'm understanding this correctly, it reads the file signature and
> marks the _process_ as signed, right?  Is there anything that prevents
> a process marked in this way from exec'ing a new, unsigned, unverified
> executable?

Yep, an signed process can exec() and unsigned process without any issues.

Thanks
Vivek
_______________________________________________
kernel mailing list
kernel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/kernel





[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [USB]     [Asterisk PBX]

  Powered by Linux