Re: Patch "audit: Fix extended comparison of GID/EGID" has been added to the 4.18-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 1, 2018 at 4:29 AM Ondrej Mosnacek <omosnace@xxxxxxxxxx> wrote:
>
> Hi,
>
> On Sat, Sep 29, 2018 at 2:10 PM <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > This is a note to let you know that I've just added the patch titled
> >
> >     audit: Fix extended comparison of GID/EGID
> >
> > to the 4.18-stable tree which can be found at:
> >     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> >
> > The filename of the patch is:
> >      audit-fix-extended-comparison-of-gid-egid.patch
> > and it can be found in the queue-4.18 subdirectory.
> >
> > If you, or anyone else, feels it should not be added to the stable tree,
> > please let <stable@xxxxxxxxxxxxxxx> know about it.
>
> IIRC Paul didn't want this patch to go to stable (he asked me to
> remove the Cc: stable@... line), since the bug has been there for a
> long time and any user affected by it either doesn't care or might
> actually (maybe unknowingly) rely on it. I still kept the Fixes: line
> so it is clear which commit introduced the bug.
>
> Paul, any comments?

Greg does what Greg wants to do.  I still agree with my earlier
comments that Ondrej is referencing, but if Greg wants to backport it
into his stable tree that's his decision to make.

> In any case, if you decide to push this patch into stable (note that
> it is queued also for 4.14, 4.9, 4.4, and 3.18), then make sure to
> include also commit 4b09791ba059 ("cred: conditionally declare
> groups-related functions") to avoid build errors with
> CONFIG_MULTIUSER=n and CONFIG_AUDIT_SYSCALL=y. It is a non-functional
> commit for the rest of the kernel.
>
> >
> >
> > From foo@baz Sat Sep 29 04:24:28 PDT 2018
> > From: "Ondrej Mosnáček" <omosnace@xxxxxxxxxx>
> > Date: Tue, 5 Jun 2018 11:00:10 +0200
> > Subject: audit: Fix extended comparison of GID/EGID
> >
> > From: "Ondrej Mosnáček" <omosnace@xxxxxxxxxx>
> >
> > [ Upstream commit af85d1772e31fed34165a1b3decef340cf4080c0 ]
> >
> > The audit_filter_rules() function in auditsc.c used the in_[e]group_p()
> > functions to check GID/EGID match, but these functions use the current
> > task's credentials, while the comparison should use the credentials of
> > the task given to audit_filter_rules() as a parameter (tsk).
> >
> > Note that we can use group_search(cred->group_info, ...) as a
> > replacement for both in_group_p and in_egroup_p as these functions only
> > compare the parameter to cred->fsgid/egid and then call group_search.
> >
> > In fact, the usage of in_group_p was even more incorrect: it compares to
> > cred->fsgid (which is usually equal to cred->egid) and not cred->gid.
> >
> > GitHub issue:
> > https://github.com/linux-audit/audit-kernel/issues/82
> >
> > Fixes: 37eebe39c973 ("audit: improve GID/EGID comparation logic")
> > Signed-off-by: Ondrej Mosnacek <omosnace@xxxxxxxxxx>
> > Signed-off-by: Paul Moore <paul@xxxxxxxxxxxxxx>
> > Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxxxx>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> > ---
> >  kernel/auditsc.c |    8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > --- a/kernel/auditsc.c
> > +++ b/kernel/auditsc.c
> > @@ -494,20 +494,20 @@ static int audit_filter_rules(struct tas
> >                         result = audit_gid_comparator(cred->gid, f->op, f->gid);
> >                         if (f->op == Audit_equal) {
> >                                 if (!result)
> > -                                       result = in_group_p(f->gid);
> > +                                       result = groups_search(cred->group_info, f->gid);
> >                         } else if (f->op == Audit_not_equal) {
> >                                 if (result)
> > -                                       result = !in_group_p(f->gid);
> > +                                       result = !groups_search(cred->group_info, f->gid);
> >                         }
> >                         break;
> >                 case AUDIT_EGID:
> >                         result = audit_gid_comparator(cred->egid, f->op, f->gid);
> >                         if (f->op == Audit_equal) {
> >                                 if (!result)
> > -                                       result = in_egroup_p(f->gid);
> > +                                       result = groups_search(cred->group_info, f->gid);
> >                         } else if (f->op == Audit_not_equal) {
> >                                 if (result)
> > -                                       result = !in_egroup_p(f->gid);
> > +                                       result = !groups_search(cred->group_info, f->gid);
> >                         }
> >                         break;
> >                 case AUDIT_SGID:
> >
> >
> > Patches currently in stable-queue which might be from omosnace@xxxxxxxxxx are
> >
> > queue-4.18/audit-fix-extended-comparison-of-gid-egid.patch
>
> Thanks,
>
> --
> Ondrej Mosnacek <omosnace at redhat dot com>
> Associate Software Engineer, Security Technologies
> Red Hat, Inc.



-- 
paul moore
www.paul-moore.com




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux