On Tue, 2016-04-26 at 20:07 +0930, Rusty Russell wrote: > Ben Hutchings <b...@decadent.org.uk> writes: > > > > Signing a module should only make it trusted by the specific kernel it > > was built for, not anything else. Loading a signed module meant for a > > kernel with a different ABI could have interesting effects. > > Therefore, treat all signatures as invalid when a module is > > force-loaded. > > > > Signed-off-by: Ben Hutchings <b...@decadent.org.uk> > > Cc: sta...@vger.kernel.org > > --- > > kernel/module.c | 13 +++++++++---- > > 1 file changed, 9 insertions(+), 4 deletions(-) > > > > diff --git a/kernel/module.c b/kernel/module.c > > index 66426f743c29..649b1827ed15 100644 > > --- a/kernel/module.c > > +++ b/kernel/module.c > > @@ -2599,13 +2599,18 @@ static inline void kmemleak_load_module(const > > struct module *mod, > > #endif > > > > #ifdef CONFIG_MODULE_SIG > > -static int module_sig_check(struct load_info *info) > > +static int module_sig_check(struct load_info *info, int flags) > > { > > int err = -ENOKEY; > > const unsigned long markerlen = sizeof(MODULE_SIG_STRING) - 1; > > const void *mod = info->hdr; > > > > - if (info->len > markerlen && > > + /* > > + * Require flags == 0, as a module with version information > > + * removed is no longer the module that was signed > > + */ > > + if (flags == 0 && > This check is a bit lazy. We could have other flags in future, > so this should really be !(flags & > (MODULE_INIT_IGNORE_MODVERSIONS|MODULE_INIT_IGNORE_VERMAGIC) right?
Yes we could, but I'd prefer this to fail-safe in case no-one thinks about whether it should be updated then. Ben. -- Ben Hutchings The generation of random numbers is too important to be left to chance. - Robert Coveyou
signature.asc
Description: This is a digitally signed message part