diff options
author | Rutherther <rutherther@ditigal.xyz> | 2024-10-11 21:49:10 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2024-11-03 22:54:00 +0100 |
commit | e5d64e87d4759d62c035dad203e9975de3b621a6 (patch) | |
tree | 23ff18879a0ad7293f59c4bec2e5d6864adc0cf1 | |
parent | e7a445571d0e45be96894bc6b298b67ceb2f3989 (diff) | |
download | guix-e5d64e87d4759d62c035dad203e9975de3b621a6.tar guix-e5d64e87d4759d62c035dad203e9975de3b621a6.tar.gz |
system: %default-privileged-programs: Set ping capabilities
Ping and ping6 don't need setuid, they can work with
cap_net_raw capability only. This means that even if
ping or ping6 had a vulnerability that could be
used for execution as root, it can't anymore if
the program is not setuid.
* gnu/system.scm (%default-privileged-programs): Remove ping, ping6 setuid
programs, add ping, ping6 programs with cap_net_raw=ep capabilities
Change-Id: Ie409b477f548dbff3318eec33d0d2ca16a1b3209
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r-- | gnu/system.scm | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/gnu/system.scm b/gnu/system.scm index c19730b331..9b15a3590a 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -1253,25 +1253,30 @@ use 'plain-file' instead~%") (define %default-privileged-programs (let ((shadow (@ (gnu packages admin) shadow))) - (map file-like->setuid-program - (list (file-append shadow "/bin/passwd") - (file-append shadow "/bin/chfn") - (file-append shadow "/bin/sg") - (file-append shadow "/bin/su") - (file-append shadow "/bin/newgrp") - (file-append shadow "/bin/newuidmap") - (file-append shadow "/bin/newgidmap") - (file-append inetutils "/bin/ping") - (file-append inetutils "/bin/ping6") - (file-append sudo "/bin/sudo") - (file-append sudo "/bin/sudoedit") - (file-append fuse-2 "/bin/fusermount") - (file-append fuse "/bin/fusermount3") - - ;; To allow mounts with the "user" option, "mount" and "umount" must - ;; be setuid-root. - (file-append util-linux "/bin/mount") - (file-append util-linux "/bin/umount"))))) + (cons* + (privileged-program + (program (file-append inetutils "/bin/ping")) + (capabilities "cap_net_raw=ep")) + (privileged-program + (program (file-append inetutils "/bin/ping6")) + (capabilities "cap_net_raw=ep")) + (map file-like->setuid-program + (list (file-append shadow "/bin/passwd") + (file-append shadow "/bin/chfn") + (file-append shadow "/bin/sg") + (file-append shadow "/bin/su") + (file-append shadow "/bin/newgrp") + (file-append shadow "/bin/newuidmap") + (file-append shadow "/bin/newgidmap") + (file-append sudo "/bin/sudo") + (file-append sudo "/bin/sudoedit") + (file-append fuse-2 "/bin/fusermount") + (file-append fuse "/bin/fusermount3") + + ;; To allow mounts with the "user" option, "mount" and "umount" must + ;; be setuid-root. + (file-append util-linux "/bin/mount") + (file-append util-linux "/bin/umount")))))) (define %setuid-programs ;; Do not add to this list or use it in new code! It's defined only to ease |