posix_acl: Clear SGID bit when setting file permissions
When file permissions are modified via chmod(2) and the user is not in the owning group or capable of CAP_FSETID, the setgid bit is cleared in inode_change_ok(). Setting a POSIX ACL via setxattr(2) sets the file permissions as well as the new ACL, but doesn't clear the setgid bit in a similar way; this allows to bypass the check in chmod(2). Fix that. References: CVE-2016-7097 Reviewed-by:Christoph Hellwig <hch@lst.de> Reviewed-by:
Jeff Layton <jlayton@redhat.com> Signed-off-by:
Jan Kara <jack@suse.cz> Signed-off-by:
Andreas Gruenbacher <agruenba@redhat.com>
Showing
- fs/9p/acl.c 17 additions, 23 deletionsfs/9p/acl.c
- fs/btrfs/acl.c 2 additions, 4 deletionsfs/btrfs/acl.c
- fs/ceph/acl.c 2 additions, 4 deletionsfs/ceph/acl.c
- fs/ext2/acl.c 4 additions, 8 deletionsfs/ext2/acl.c
- fs/ext4/acl.c 4 additions, 8 deletionsfs/ext4/acl.c
- fs/f2fs/acl.c 2 additions, 4 deletionsfs/f2fs/acl.c
- fs/gfs2/acl.c 3 additions, 9 deletionsfs/gfs2/acl.c
- fs/hfsplus/posix_acl.c 2 additions, 2 deletionsfs/hfsplus/posix_acl.c
- fs/jffs2/acl.c 4 additions, 5 deletionsfs/jffs2/acl.c
- fs/jfs/acl.c 2 additions, 4 deletionsfs/jfs/acl.c
- fs/ocfs2/acl.c 4 additions, 6 deletionsfs/ocfs2/acl.c
- fs/orangefs/acl.c 5 additions, 10 deletionsfs/orangefs/acl.c
- fs/posix_acl.c 31 additions, 0 deletionsfs/posix_acl.c
- fs/reiserfs/xattr_acl.c 2 additions, 6 deletionsfs/reiserfs/xattr_acl.c
- fs/xfs/xfs_acl.c 4 additions, 9 deletionsfs/xfs/xfs_acl.c
- include/linux/posix_acl.h 1 addition, 0 deletionsinclude/linux/posix_acl.h
Please register or sign in to comment