Patch "module: Invalidate signatures on force-loaded modules" has been added to the 3.14-stable tree
This is a note to let you know that I've just added the patch titled
module: Invalidate signatures on force-loaded modules
to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
module-invalidate-signatures-on-force-loaded-modules.patch
and it can be found in the queue-3.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
bca014caaa6130e57f69b5bf527967aa8ee70fddMon Sep 17 00:00:00 2001
From: Ben Hutchings <[email protected]>
Date: Thu, 28 Apr 2016 09:24:01 +0930
Subject: module: Invalidate signatures on force-loaded modules
From: Ben Hutchings <[email protected]>
commit bca014caaa6130e57f69b5bf527967aa8ee70fdd upstream.
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.
--- kernel/module.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
kernel/module.c +9 -4
@@ -2449,13 +2449,18 @@ static inline void kmemleak_load_module(#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 && + info->len > markerlen &&memcmp (mod + info->len - markerlen,MODULE_SIG_STRING , markerlen) ==0 ) {/* We truncate the module to discard the signature */ info->len -= markerlen;
@@ -2477,7 +2482,7 @@ static int module_sig_check(struct load_ return err; }#else /* !CONFIG_MODULE_SIG */ -static int module_sig_check (struct load_info *info) +static int module_sig_check (struct load_info *info,int flags) {return 0 ; }
@@ -3210,7 +3215,7 @@ static int load_module(struct load_infostruct module *mod;long err; - err =module_sig_check (info); + err =module_sig_check (info, flags);if (err) goto free_copy;
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/module-invalidate-signatures-on-force-loaded-modules.patch queue-3.14/documentation-module-signing.txt-note-need-for-version-info-if-reusing-a-key.patch