On Sun, Feb 26, 2017 at 11:42:51PM +0100, Greg Kurz wrote: > The local_lremovexattr() callback is vulnerable to symlink attacks because > it calls lremovexattr() which follows symbolic links in all path elements > but the rightmost one. > > This patch introduces a helper to emulate the non-existing fremovexattrat() > function: it is implemented with /proc/self/fd which provides a trusted > path that can be safely passed to lremovexattr(). > > local_lremovexattr() is converted to use this helper and opendir_nofollow(). > > This partly fixes CVE-2016-9602. > > Signed-off-by: Greg Kurz <[email protected]> > --- > v2: - introduce /proc based fremovexattrat_nofollow() > - fix arguments passed to local_removexattr_nofollow() > --- > hw/9pfs/9p-posix-acl.c | 10 ++-------- > hw/9pfs/9p-xattr-user.c | 8 +------- > hw/9pfs/9p-xattr.c | 36 +++++++++++++++++++++++++++++++----- > hw/9pfs/9p-xattr.h | 2 ++ > 4 files changed, 36 insertions(+), 20 deletions(-)
Reviewed-by: Stefan Hajnoczi <[email protected]>
signature.asc
Description: PGP signature
