On Mon, Apr 20, 2020 at 03:41:40PM -0700, Kees Cook wrote: > On Mon, Apr 20, 2020 at 03:33:52PM -0700, Andrew Morton wrote: > > On Sun, 19 Apr 2020 12:08:48 +0200 gli...@google.com wrote: > > > > > KMSAN reported uninitialized data being written to disk when dumping > > > core. As a result, several kilobytes of kmalloc memory may be written to > > > the core file and then read by a non-privileged user. > > Ewww. That's been there for 12 years. Did something change in > regset_size() or regset->get()? Do you know what leaves the hole? > > > > > > > ... > > > > > > --- a/fs/binfmt_elf.c > > > +++ b/fs/binfmt_elf.c > > > @@ -1733,7 +1733,7 @@ static int fill_thread_core_info(struct > > > elf_thread_core_info *t, > > > (!regset->active || regset->active(t->task, regset) > 0)) { > > > int ret; > > > size_t size = regset_size(t->task, regset); > > > - void *data = kmalloc(size, GFP_KERNEL); > > > + void *data = kzalloc(size, GFP_KERNEL); > > > if (unlikely(!data)) > > > return 0; > > > ret = regset->get(t->task, regset, > > > > This seems to be a quite easy way of exposing quite a large amount of > > kernel memory contents, so I think I'll add a cc:stable to this patch? > > Yes please. > > Acked-by: Kees Cook <keesc...@chromium.org>
This has been in -next for a while, but we need to get this landed and into -stable. Can you please send this to Linus for the final release? I know Al is working on getting the complementary fixes landed too, but this fix is also sufficient, trivial to backport, and provides some future-proofing/defense in depth. -Kees -- Kees Cook