From: Kenneth Sumrall <ksumrall@pacbell.net>
To: Neil Brown <neilb@cse.unsw.edu.au>
Cc: nfs@lists.sourceforge.net
Subject: Re: NFSD SGID permission problem
Date: Thu, 31 Mar 2005 19:54:59 -0800 [thread overview]
Message-ID: <424CC613.2080606@pacbell.net> (raw)
In-Reply-To: <16972.44185.735806.933401@cse.unsw.edu.au>
Hi Neil,
Thanks for the reply. I'll test your patch tomorrow.
I took a closer look at the 2.6 code, and I see that it
uses common code in notify_change() in fs/attr.c to actually
clear the bit. So that seems OK. However, shouldn't the code
in nfsd/vfs.c also make sure it's not a directory before it sets
the ATTR_KILL_SGID flag? That's what the code in open.c
does, and there doesn't appear to be a check for it
not being a directory in fs/attr.c. Or am I missing
something?
Also, is it possible to write up a quick little blurb about
why my fix isn't really safe? It seemed to get handled by
the underlying file system just fine when I tested it.
I'm just trying to learn for the future. If it's extremely
complicated, you can just say "It's technical." :-)
Thanks.
Ken Sumrall
ksumrall@pacbell.net
Neil Brown wrote:
> On Thursday March 31, ksumrall@pacbell.net wrote:
>
>>So, I sent the message below on 12/10/04, and got no response. So, I'm
>>resending it again. I'd like some feedback on this as I'm not sure my
>>fix doesn't create a security hole.
>
>
> Thanks for being persistent.
> You have identified a real issue, but you are right that your fix
> isn't really safe.
>
> The following mimics the logic in chown_common() in open.c. Note that
> it also ignores the setXid bits on directories.
>
> I would appreciate it if you could double check that this fixes your
> problem.
>
> This is against 2.4.30-rc1 (and later). The same problem does not
> exist in 2.6.
>
> NeilBrown
>
>
> ### Diffstat output
> ./fs/nfsd/vfs.c | 12 ++++++++----
> 1 files changed, 8 insertions(+), 4 deletions(-)
>
> diff ./fs/nfsd/vfs.c~current~ ./fs/nfsd/vfs.c
> --- ./fs/nfsd/vfs.c~current~ 2005-04-01 12:00:29.000000000 +1000
> +++ ./fs/nfsd/vfs.c 2005-04-01 12:04:44.000000000 +1000
> @@ -280,13 +280,17 @@ nfsd_setattr(struct svc_rqst *rqstp, str
> }
>
> /* Revoke setuid/setgid bit on chown/chgrp */
> - if ((iap->ia_valid & ATTR_UID) && (imode & S_ISUID)
> - && iap->ia_uid != inode->i_uid) {
> + if ((iap->ia_valid & ATTR_UID)
> + && (imode & S_ISUID)
> + && !S_ISDIR(imode)
> + && iap->ia_uid != inode->i_uid) {
> iap->ia_valid |= ATTR_MODE;
> iap->ia_mode = imode &= ~S_ISUID;
> }
> - if ((iap->ia_valid & ATTR_GID) && (imode & S_ISGID)
> - && iap->ia_gid != inode->i_gid) {
> + if ((iap->ia_valid & ATTR_GID)
> + && (imode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)
> + && !S_ISDIR(imode)
> + && iap->ia_gid != inode->i_gid) {
> iap->ia_valid |= ATTR_MODE;
> iap->ia_mode = imode &= ~S_ISGID;
> }
>
-------------------------------------------------------
This SF.net email is sponsored by Demarc:
A global provider of Threat Management Solutions.
Download our HomeAdmin security software for free today!
http://www.demarc.com/Info/Sentarus/hamr30
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
next prev parent reply other threads:[~2005-04-01 3:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-01 1:25 NFSD SGID permission problem Kenneth Sumrall
2005-04-01 2:06 ` Neil Brown
2005-04-01 3:54 ` Kenneth Sumrall [this message]
-- strict thread matches above, loose matches on Subject: below --
2004-12-11 2:25 Kenneth Sumrall
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=424CC613.2080606@pacbell.net \
--to=ksumrall@pacbell.net \
--cc=neilb@cse.unsw.edu.au \
--cc=nfs@lists.sourceforge.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox