On Mon, Apr 01, 2019 at 11:01:13AM +0200, Johannes Thumshirn wrote: > Over the last 20 years, the Linux kernel has accumulated hundreds if not > thousands of security vulnerabilities. > > One common pattern in most of these security related reports is processes > called "syzkaller", "trinity" or "syz-executor" opening files and then > abuse kernel interfaces causing kernel crashes or even worse threats using > memory overwrites or by exploiting race conditions. > > Hunting down these bugs has become time consuming and very expensive, so > I've decided to put an end to it. > > If one of the above mentioned processes tries opening a file, return -EPERM > indicating this process does not have the permission to open files on Linux > anymore. > > Signed-off-by: Johannes Thumshirn <jthumshirn@xxxxxxx> > --- > fs/open.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/fs/open.c b/fs/open.c > index f1c2f855fd43..3a3b460beccd 100644 > --- a/fs/open.c > +++ b/fs/open.c > @@ -1056,6 +1056,20 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode) > struct open_flags op; > int fd = build_open_flags(flags, mode, &op); > struct filename *tmp; > + char comm[TASK_COMM_LEN]; > + int i; > + static const char * const list[] = { > + "syzkaller", > + "syz-executor," > + "trinity", > + NULL > + }; > + > + get_task_comm(comm, current); > + > + for (i = 0; i < ARRAY_SIZE(list); i++) > + if (!strncmp(comm, list[i], strlen(list[i]))) > + return -EPERM; > > if (fd) > return fd; > -- > 2.16.4 > I like that this can't be circumvented by changing the process name, because it dereferences a NULL pointer when it gets to the end of the list. However, I'm a bit uneasy with updating just this syscall. I suggest we go farther and just do: diff --git a/init/main.c b/init/main.c index 598e278b46f7..24f4422cb3c9 100644 --- a/init/main.c +++ b/init/main.c @@ -547,6 +547,8 @@ asmlinkage __visible void __init start_kernel(void) char *command_line; char *after_dashes; + return; + set_task_stack_end_magic(&init_task); smp_setup_processor_id(); debug_objects_early_init(); Please also make sure to add a Reported-by line for each one of the 475 open syzbot bug reports, so they get properly closed. Thanks! - Eric