From: Alexey Dobriyan <adobriyan@gmail.com>
To: Luis Chamberlain <mcgrof@kernel.org>
Cc: akpm@linux-foundation.org, linux-modules@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz
Subject: Re: [PATCH] module: ban '.', '..' as module names, ban '/' in module names
Date: Mon, 15 Apr 2024 20:23:43 +0300 [thread overview]
Message-ID: <e770923a-6719-403c-a9f2-1f7ac4313474@p183> (raw)
In-Reply-To: <ZhxDj3vQFLy62Yow@bombadil.infradead.org>
On Sun, Apr 14, 2024 at 01:58:55PM -0700, Luis Chamberlain wrote:
> On Sun, Apr 14, 2024 at 10:05:05PM +0300, Alexey Dobriyan wrote:
> > --- a/include/linux/fs.h
> > +++ b/include/linux/fs.h
> > @@ -3616,4 +3616,12 @@ extern int vfs_fadvise(struct file *file, loff_t offset, loff_t len,
> > extern int generic_fadvise(struct file *file, loff_t offset, loff_t len,
> > int advice);
> >
> > +/*
> > + * Use this if data from userspace end up as directory/filename on
> > + * some virtual filesystem.
> > + */
> > +static inline bool string_is_vfs_ready(const char *s)
> > +{
> > + return strcmp(s, ".") != 0 && strcmp(s, "..") != 0 && !strchr(s, '/');
> > +}
> > #endif /* _LINUX_FS_H */
> > --- a/kernel/module/main.c
> > +++ b/kernel/module/main.c
> > @@ -2893,6 +2893,11 @@ static int load_module(struct load_info *info, const char __user *uargs,
> >
> > audit_log_kern_module(mod->name);
> >
> > + if (!string_is_vfs_ready(mod->name)) {
> > + err = -EINVAL;
> > + goto free_module;
> > + }
> > +
>
> Sensible change however to put string_is_vfs_ready() in include/linux/fs.h
> is a stretch if there really are no other users.
This is forward thinking patch :-)
Other subsystems may create files/directories in proc/sysfs, and should
check for bad names as well:
/proc/2821/net/dev_snmp6/eth0
This looks exactly like something coming from userspace and making it
into /proc, so the filter function doesn't belong to kernel/module/internal.h
next prev parent reply other threads:[~2024-04-15 17:23 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-14 19:05 [PATCH] module: ban '.', '..' as module names, ban '/' in module names Alexey Dobriyan
2024-04-14 20:58 ` Luis Chamberlain
2024-04-15 17:23 ` Alexey Dobriyan [this message]
2024-04-15 17:40 ` Dr. David Alan Gilbert
2024-04-15 0:35 ` Matthew Wilcox
2024-04-15 8:08 ` Christoph Hellwig
2025-02-19 20:35 ` Lucas De Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e770923a-6719-403c-a9f2-1f7ac4313474@p183 \
--to=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.