Re: [PATCH net-next] modules: allow modprobe load regular elf binaries

From: David Miller
Date: Thu Mar 08 2018 - 21:32:04 EST


From: Andy Lutomirski <luto@xxxxxxxxxx>
Date: Fri, 9 Mar 2018 02:12:24 +0000

> First, compile your user code and emit a staitc binary. Use objdump
> fiddling or a trivial .S file to make that static binary into a
> variable. Then write a tiny shim module like this:
>
> extern unsigned char __begin_user_code[], __end_user_code[];
>
> int __init init_shim_module(void)
> {
> return call_umh_blob(__begin_user_code, __end_user_code - __begin_user_code);
> }
>
> By itself, this is clearly a worse solution than yours, but it has two
> benefits, one small and two big. The small benefit is that it is
> completely invisible to userspace: the .ko file is a bona fide module.

Anything you try to do which makes these binaries "special" is a huge
negative.

> The big benefits are:

I don't see those things as benefits at all, and Alexei's scheme can
easily be made to work in your benefit #1 case too.

It's a user binary. It's shipped with the kernel and it's signed.

If we can't trust that, we can't trust much else.

And this whole container argument.. It's a mirage.

Kernel modules are 1000 times worse, since they can access any
container and any namespace they want.