Message ID | 20160908223558.GA11742@www.outflux.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 09/09/2016, 12:35 AM, Kees Cook wrote: > The ptmx_fops structure is only changed during init, so mark it as such. Right, but I am missing what is the benefit? You would have to elaborate here... > Signed-off-by: Kees Cook <keescook@chromium.org> > --- > drivers/tty/pty.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c > index 51e0d32883ba..a23fa5ed1d67 100644 > --- a/drivers/tty/pty.c > +++ b/drivers/tty/pty.c > @@ -800,7 +800,7 @@ out_free_file: > return retval; > } > > -static struct file_operations ptmx_fops; > +static struct file_operations ptmx_fops __ro_after_init; > > static void __init unix98_pty_init(void) > { > thanks,
On Wed, 14 Sep 2016 09:59:42 +0200 Jiri Slaby <jslaby@suse.cz> wrote: > On 09/09/2016, 12:35 AM, Kees Cook wrote: > > The ptmx_fops structure is only changed during init, so mark it as such. > > Right, but I am missing what is the benefit? You would have to elaborate > here... The pages end up marked read only even to the kernel (and in future could even be marked read only forever when in kvm if we get suitable virtual machine extensions). That makes it much harder to patch those vectors when making security attacks.
On Wed, Sep 14, 2016 at 7:04 AM, One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk> wrote: > On Wed, 14 Sep 2016 09:59:42 +0200 > Jiri Slaby <jslaby@suse.cz> wrote: > >> On 09/09/2016, 12:35 AM, Kees Cook wrote: >> > The ptmx_fops structure is only changed during init, so mark it as such. >> >> Right, but I am missing what is the benefit? You would have to elaborate >> here... > > The pages end up marked read only even to the kernel (and in future could > even be marked read only forever when in kvm if we get suitable virtual > machine extensions). That makes it much harder to patch those vectors > when making security attacks. Correct, this is a continuing effort to reduce the internal attack surface of the kernel, where one of the most common exploitation methods is overwriting function pointers. Some examples of attacks and mitigations are here: http://kernsec.org/wiki/index.php/Exploit_Methods/Function_pointer_overwrite While this patch isn't a huge change, it's still a viable candidate. I send these as I notice them, and hope that other folks will start to see these opportunities and send more patches too. :) -Kees
On 09/14/2016, 06:17 PM, Kees Cook wrote: > Correct, this is a continuing effort to reduce the internal attack > surface of the kernel, where one of the most common exploitation > methods is overwriting function pointers. > > Some examples of attacks and mitigations are here: > http://kernsec.org/wiki/index.php/Exploit_Methods/Function_pointer_overwrite > > While this patch isn't a huge change, it's still a viable candidate. I > send these as I notice them, and hope that other folks will start to > see these opportunities and send more patches too. :) I didn't object to the patch. I could imagine the use case. But putting the idea to the commit message would have made it clear. thanks,
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c index 51e0d32883ba..a23fa5ed1d67 100644 --- a/drivers/tty/pty.c +++ b/drivers/tty/pty.c @@ -800,7 +800,7 @@ out_free_file: return retval; } -static struct file_operations ptmx_fops; +static struct file_operations ptmx_fops __ro_after_init; static void __init unix98_pty_init(void) {
The ptmx_fops structure is only changed during init, so mark it as such. Signed-off-by: Kees Cook <keescook@chromium.org> --- drivers/tty/pty.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)