]> git.ipfire.org Git - thirdparty/shadow.git/commit
newgrp: fix potential string injection
authorVegard Nossum <vegard.nossum@oracle.com>
Fri, 21 Jul 2023 12:55:19 +0000 (14:55 +0200)
committerSerge Hallyn <serge@hallyn.com>
Sat, 22 Jul 2023 04:32:19 +0000 (23:32 -0500)
commit9df4801e0b65073cc8a9031b22a73532ef7fdc2c
tree6c35c6051441fd88a7c81b0d2be15f893c868306
parent2643f27b360d44dcb5514072316eb112a867904e
newgrp: fix potential string injection

Since newgrp is setuid-root, any write() system calls it does in order
to print error messages will be done as the root user.

Unprivileged users can get newgrp to print essentially arbitrary strings
to any open file in this way by passing those strings as argv[0] when
calling execve(). For example:

    $ setpid() { (exec -a $1$'\n:' newgrp '' 2>/proc/sys/kernel/ns_last_pid & wait) >/dev/null; }
    $ setpid 31000
    $ readlink /proc/self
    31001

This is not a vulnerability in newgrp; it is a bug in the Linux kernel.

However, this type of bug is not new [1] and it makes sense to try to
mitigate these types of bugs in userspace where possible.

[1]: https://lwn.net/Articles/476947/

Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
src/newgrp.c