nfsd: auth: Fix gid sorting when rootsquash enabled (CVE-2018-1000028)

This commit is contained in:
Salvatore Bonaccorso 2018-01-28 19:37:24 +01:00
parent e53a4aa3b8
commit 4fae92a1d5
3 changed files with 48 additions and 0 deletions

1
debian/changelog vendored
View File

@ -201,6 +201,7 @@ linux (4.14.15-1) UNRELEASED; urgency=medium
* loop: fix concurrent lo_open/lo_release (CVE-2018-5344)
* Revert "module: Add retpoline tag to VERMAGIC"
* [rt] Update to 4.14.15-rt11
* nfsd: auth: Fix gid sorting when rootsquash enabled (CVE-2018-1000028)
[ Ben Hutchings ]
* bpf: Avoid ABI change in 4.14.14

View File

@ -0,0 +1,46 @@
From: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date: Mon, 22 Jan 2018 20:11:06 +0000
Subject: nfsd: auth: Fix gid sorting when rootsquash enabled
Origin: https://git.kernel.org/linus/1995266727fa8143897e89b55f5d3c79aa828420
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2018-1000028
Commit bdcf0a423ea1 ("kernel: make groups_sort calling a responsibility
group_info allocators") appears to break nfsd rootsquash in a pretty
major way.
It adds a call to groups_sort() inside the loop that copies/squashes
gids, which means the valid gids are sorted along with the following
garbage. The net result is that the highest numbered valid gids are
replaced with any lower-valued garbage gids, possibly including 0.
We should sort only once, after filling in all the gids.
Fixes: bdcf0a423ea1 ("kernel: make groups_sort calling a responsibility ...")
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Acked-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
fs/nfsd/auth.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/fs/nfsd/auth.c b/fs/nfsd/auth.c
index f650e475d8f0..fdf2aad73470 100644
--- a/fs/nfsd/auth.c
+++ b/fs/nfsd/auth.c
@@ -60,10 +60,10 @@ int nfsd_setuser(struct svc_rqst *rqstp, struct svc_export *exp)
gi->gid[i] = exp->ex_anon_gid;
else
gi->gid[i] = rqgi->gid[i];
-
- /* Each thread allocates its own gi, no race */
- groups_sort(gi);
}
+
+ /* Each thread allocates its own gi, no race */
+ groups_sort(gi);
} else {
gi = get_group_info(rqgi);
}
--
2.11.0

View File

@ -124,6 +124,7 @@ bugfix/all/media-dvb-usb-v2-lmedm04-Improve-logic-checking-of-w.patch
bugfix/all/media-dvb-usb-v2-lmedm04-move-ts2020-attach-to-dm04_.patch
bugfix/all/media-hdpvr-fix-an-error-handling-path-in-hdpvr_prob.patch
bugfix/all/loop-fix-concurrent-lo_open-lo_release.patch
bugfix/all/nfsd-auth-Fix-gid-sorting-when-rootsquash-enabled.patch
# Fix exported symbol versions
bugfix/all/module-disable-matching-missing-version-crc.patch