lkml.org 
[lkml]   [2012]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 28/42] sysctl: fix write access to dmesg_restrict/kptr_restrict
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Kees Cook <keescook@chromium.org>

    commit 620f6e8e855d6d447688a5f67a4e176944a084e8 upstream.

    Commit bfdc0b4 adds code to restrict access to dmesg_restrict,
    however, it incorrectly alters kptr_restrict rather than
    dmesg_restrict.

    The original patch from Richard Weinberger
    (https://lkml.org/lkml/2011/3/14/362) alters dmesg_restrict as
    expected, and so the patch seems to have been misapplied.

    This adds the CAP_SYS_ADMIN check to both dmesg_restrict and
    kptr_restrict, since both are sensitive.

    Reported-by: Phillip Lougher <plougher@redhat.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
    Acked-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    kernel/sysctl.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    --- a/kernel/sysctl.c
    +++ b/kernel/sysctl.c
    @@ -172,7 +172,7 @@ static int proc_taint(struct ctl_table *
    #endif

    #ifdef CONFIG_PRINTK
    -static int proc_dmesg_restrict(struct ctl_table *table, int write,
    +static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
    void __user *buffer, size_t *lenp, loff_t *ppos);
    #endif

    @@ -709,7 +709,7 @@ static struct ctl_table kern_table[] = {
    .data = &dmesg_restrict,
    .maxlen = sizeof(int),
    .mode = 0644,
    - .proc_handler = proc_dointvec_minmax,
    + .proc_handler = proc_dointvec_minmax_sysadmin,
    .extra1 = &zero,
    .extra2 = &one,
    },
    @@ -718,7 +718,7 @@ static struct ctl_table kern_table[] = {
    .data = &kptr_restrict,
    .maxlen = sizeof(int),
    .mode = 0644,
    - .proc_handler = proc_dmesg_restrict,
    + .proc_handler = proc_dointvec_minmax_sysadmin,
    .extra1 = &zero,
    .extra2 = &two,
    },
    @@ -2416,7 +2416,7 @@ static int proc_taint(struct ctl_table *
    }

    #ifdef CONFIG_PRINTK
    -static int proc_dmesg_restrict(struct ctl_table *table, int write,
    +static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
    void __user *buffer, size_t *lenp, loff_t *ppos)
    {
    if (write && !capable(CAP_SYS_ADMIN))



    \
     
     \ /
      Last update: 2012-04-12 01:31    [W:0.026 / U:31.568 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site