Releases: sudo-project/sudo
Sudo 1.9.7p1
-
Fixed an SELinux
sudoedit
bug when the edited temporary file could not be opened. Thesesh
helper would still be run even when there are no temporary files available to install. -
Fixed a compilation problem on FreeBSD.
-
The
sudo_noexec.so
file is now built as a module on all systems other than macOS. This makes it possible to use otherlibtool
implementations such asslibtool
. On macOS shared libraries and modules are not interchangeable and the version oflibtool
shipped with sudo must be used. -
Fixed a few bugs in the
getgrouplist()
emulation on Solaris when reading from the local group file. -
Fixed a bug in
sudo_logsrvd
that prevented periodic relay server connection retries from occurring in store_first mode. -
Disabled the
nss_search()
-basedgetgrouplist()
emulation on HP-UX due to a crash when the group source is set to compat in /etc/nsswitch.conf. This is probably due to a mismatch betweeninclude/compat/nss_dbdefs.h
and what HP-UX uses internally. On HP-UX we now just cycle through groups the slow way usinggetgrent()
. Bug #978.
Sudo 1.9.7
-
The fuzz Makefile target now runs all the fuzzers for 8192 passes (can be overridden via the
FUZZ_RUNS
variable). This makes it easier to run the fuzzers in-tree. To run a fuzzer indefinitely, setFUZZ_RUNS=-1
, e.g.make FUZZ_RUNS=-1 fuzz
. -
Fixed fuzzing on FreeBSD where the ld.lld linker returns an error by default when a symbol is multiply-defined.
-
Added support for determining local IPv6 addresses on systems that lack the
getifaddrs()
function. This now works on AIX, HP-UX and Solaris (at least). Bug #969. -
Fixed a bug introduced in sudo 1.9.6 that caused
sudo -V
to report a usage error. Also, when invoked as sudoedit, sudo now allows a more restricted set of options that matches the usage statement and documentation. GitHub issue #95. -
Fixed a crash in
sudo_sendlog
when the specified certificate or key does not exist or is invalid. Bug #970. -
Fixed a compilation error when sudo is configured with the
--disable-log-client
option. -
Sudo's limited support for
SUCCESS=return
entries in nsswitch.conf is now documented. Bug #971. -
Sudo now requires autoconf 2.70 or higher to regenerate the configure script. Bug #972.
-
sudo_logsrvd
now has a relay mode which can be used to create a hierarchy of log servers. By default, when a relay server is defined, messages from the client are forwarded immediately to the relay. However, if the store_first setting is enabled, the log will be stored locally until the command completes and then relayed. Bug #965. -
Sudo now links with OpenSSL by default if it is available unless the
--disable-openssl
configure option is used or both the--disable-log-client
and--disable-log-server
configure options are specified. -
Fixed configure's Python version detection when the version minor number is more than a single digit, for example Python 3.10.
-
The sudo Python module tests now pass for Python 3.10.
-
Sudo will now avoid changing the datasize resource limit as long as the existing value is at least 1GB. This works around a problem on 64-bit HP-UX where it is not possible to exactly restore the original datasize limit. Bug #973.
-
Fixed a race condition that could result in a hang when sudo is executed by a process where the
SIGCHLD
handler is set toSIG_IGN
. This fixes the bug described by GitHub PR #98. -
Fixed an out-of-bounds read in sudoedit and visudo when the
EDITOR
,VISUAL
orSUDO_EDITOR
environment variables end in an unescaped backslash. Also fixed the handling of quote characters that are escaped by a backslash. GitHub issue #99. -
Fixed a bug that prevented the log_server_verify sudoers option from taking effect.
-
The
sudo_sendlog
utility has a new -s option to cause it to stop sending I/O records after a user-specified elapsed time. This can be used to test the I/O log restart functionality ofsudo_logsrvd
. -
Fixed a crash introduced in sudo 1.9.4 in
sudo_logsrvd
when attempting to restart an interrupted I/O log transfer. -
The TLS connection timeout in the sudoers log client was previously hard-coded to 10 seconds. It now uses the value of log_server_timeout.
-
The configure script now outputs a summary of the user-configurable options at the end, separate from output of configure script tests. Bug #820.
-
Corrected the description of which groups may be specified via the -g option in the Runas_Spec section. Bug #975.
Sudo 1.9.6p1
- Fixed a regression introduced in sudo 1.9.6 that resulted in an error message instead of a usage message when sudo is run with no arguments.
Sudo 1.9.6
-
Fixed a
sudo_sendlog
compilation problem with the AIX xlC compiler. -
Fixed a regression introduced in sudo 1.9.4 where the
--disable-root-mailer
configure option had no effect. -
Added a
--disable-leaks
configure option that avoids some memory leaks on exit that would otherwise occur. This is intended to be used with development tools that measure memory leaks. It is not safe to use in production at this time. -
Plugged some memory leaks identified by oss-fuzz and ASAN.
-
Fixed the handling of
sudoOptions
for an LDAPsudoRole
that contains multiple sudoCommands. Previously, some of the options
would only be applied to the firstsudoCommand
. -
Fixed a potential out of bounds read in the parsing of
NOTBEFORE
andNOTAFTER
sudoers command options (and their LDAP equivalents). -
The parser used for reading I/O log JSON files is now more resilient when processing invalid JSON.
-
Fixed typos that prevented "make uninstall" from working. GitHub issue #87.
-
Fixed a regression introduced in sudo 1.9.4 where the last line in a sudoers file might not have a terminating NUL character added if no newline was present.
-
Integrated oss-fuzz and LLVM's libFuzzer with sudo. The new
--enable-fuzzer
configure option can be combined with the--enable-sanitizer
option to build sudo with fuzzing support. Multiple fuzz targets are available for fuzzing different parts of sudo. Fuzzers are built and tested via make fuzz or as part of make check (even when sudo is not built with fuzzing support). Fuzzing support currently requires the LLVM clang compiler (not gcc). -
Fixed the
--enable-static-sudoers
configure option. GitHub issue #92. -
Fixed a potential out of bounds read sudo when is run by a user with more groups than the value of max_groups in sudo.conf.
-
Added an admin_flag sudoers option to make the use of the
~/.sudo_as_admin_successful
file configurable on systems where sudo is build with the--enable-admin-flag
configure option. This mostly affects Ubuntu and its derivatives. GitHub issue #56. -
The max_groups setting in
sudo.conf
is now limited to 1024. This setting is obsolete and should no longer be needed. -
Fixed a bug in the tilde expansion of
CHROOT=dir
andCWD=dir
sudoers command options. A path~/foo
was expanded to
/home/userfoo
instead of/home/user/foo
. This also affects the runchroot and runcwd Defaults settings. -
Fixed a bug on systems without a native getdelim(3) function where very long lines could cause parsing of the sudoers file to end prematurely. Bug #960.
-
Fixed a potential integer overflow when converting the timestamp_timeout and passwd_timeout sudoers settings to a timespec struct.
-
The default for the group_source setting in sudo.conf is now dynamic on macOS. Recent versions of macOS do not reliably return all of a user's non-local groups via getgroups(2), even when
_DARWIN_UNLIMITED_GETGROUPS
is defined. Bug #946. -
Fixed a potential use-after-free in the PAM conversation function. Bug #967.
-
Fixed potential redefinition of sys/stat.h macros in sudo_compat.h. Bug #968.
Sudo 1.8.32
-
Fixed a regression introduced in sudo 1.8.9 where the closefrom sudoers option could not be set to a value of 3. Bug #950.
-
Fixed a regression introduced in sudo 1.8.24 in the LDAP back-end where sudoNotBefore and sudoNotAfter were applied even when the
SUDOERS_TIMED
setting was not present inldap.conf
. Bug #945. -
Fixed a buffer size mismatch when serializing the list of IP addresses for configured network interfaces. This bug is not actually exploitable since the allocated buffer is large enough to hold the list of addresses.
-
If sudo is executed with a name other than sudo or sudoedit, it will now fall back to sudo as the program name. This affects warning, help and usage messages as well as the matching of Debug lines in the
/etc/sudo.conf
file. Previously, it was possible for the invoking user to manipulate the program name by settingargv[0]
to an arbitrary value when executing sudo. -
Sudo now checks for failure when setting the close-on-exec flag on open file descriptors. This should never fail but, if it were to, there is the possibility of a file descriptor leak to a child process (such as the command sudo runs).
-
Fixed CVE-2021-23239, a potential information leak in
sudoedit
that could be used to test for the existence of directories not normally accessible to the user in certain circumstances. When creating a new file, sudoedit checks to make sure the parent directory of the new file exists before running the editor. However, a race condition exists if the invoking user can replace (or create) the parent directory. If a symbolic link is created in place of the parent directory, sudoedit will run the editor as long as the target of the link exists. If the target of the link does not exist, an error message will be displayed. The race condition can be used to test for the existence of an arbitrary directory. However, it cannot be used to write to an arbitrary location. -
Fixed CVE-2021-23240, a flaw in the temporary file handling of sudoedit's SELinux RBAC support. On systems where SELinux is enabled, a user with sudoedit permissions may be able to set the owner of an arbitrary file to the user-ID of the target user. On Linux kernels that support protected symlinks, setting
/proc/sys/fs/protected_symlinks
to 1 will prevent the bug from being exploited. For more information see Symbolic link attack in SELinux-enabled sudoedit. -
Added writability checks for
sudoedit
when SELinux RBAC is in use. This makessudoedit
behavior consistent regardless of whether or not SELinux RBAC is in use. Previously, the sudoedit_checkdir setting had no effect for RBAC entries. -
When invoked as
sudoedit
, the same set of command line options are now accepted as forsudo -e
. The -H and -P options are now rejected forsudoedit
andsudo -e
, which matches the sudo 1.7 behavior. This is part of the fix for CVE-2021-3156. -
Fixed a potential buffer overflow when unescaping backslashes in the command's arguments. Normally, sudo escapes special characters when running a command via a shell (
sudo -s
orsudo -i
). However, it was also possible to run sudoedit with the -s or -i flags in which case no escaping had actually been done, making a buffer overflow possible. This fixes CVE-2021-3156.
Sudo 1.9.5p2
-
Fixed sudo's
setprogname(3)
emulation on systems that don't provide it. -
Fixed a problem with the sudoers log server client where a partial write to the server could result the sudo process consuming large amounts of CPU time due to a cycle in the buffer queue. Bug #954.
-
Added a missing dependency on
libsudo_util
inlibsudo_eventlog
. Fixes a link error when building sudo statically. -
The user's
KRB5CCNAME
environment variable is now preserved when performing PAM authentication. This fixes GSSAPI authentication when the user has a non-default ccache. -
When invoked as
sudoedit
, the same set of command line options are now accepted as forsudo -e
. The -H and -P options are now rejected forsudoedit
andsudo -e
, which matches the sudo 1.7 behavior. This is part of the fix for CVE-2021-3156. -
Fixed a potential buffer overflow when unescaping backslashes in the command's arguments. Normally, sudo escapes special characters when running a command via a shell (
sudo -s
orsudo -i
). However, it was also possible to run sudoedit with the -s or -i flags in which case no escaping had actually been done, making a buffer overflow possible. This fixes CVE-2021-3156.
Sudo 1.9.5p1
- Fixed a regression introduced in sudo 1.9.5 where the editor run by sudoedit was set-user-ID root unless SELinux RBAC was in use. The editor is now run with the user's real and effective user-IDs.
Sudo 1.9.5
-
Fixed a crash introduced in 1.9.4 when running
sudo -i
as an unknown user. This is related to but distinct from Bug #948. -
If the lecture_file setting is enabled in sudoers, it must now refer to a regular file or a symbolic link to a regular file.
-
Fixed a potential use-after-free bug in
sudo_logsrvd
when the server shuts down if there are existing connections from clients that are only logging events and not session I/O data. -
Fixed a buffer size mismatch when serializing the list of IP addresses for configured network interfaces. This bug is not actually exploitable since the allocated buffer is large enough to hold the list of addresses.
-
If sudo is executed with a name other than sudo or sudoedit, it will now fall back to sudo as the program name. This affects warning, help and usage messages as well as the matching of Debug lines in the
/etc/sudo.conf
file. Previously, it was possible for the invoking user to manipulate the program name by settingargv[0]
to an arbitrary value when executing sudo. -
Sudo now checks for failure when setting the close-on-exec flag on open file descriptors. This should never fail but, if it were to, there is the possibility of a file descriptor leak to a child process (such as the command sudo runs).
-
Fixed CVE-2021-23239, a potential information leak in
sudoedit
that could be used to test for the existence of directories not normally accessible to the user in certain circumstances. When creating a new file, sudoedit checks to make sure the parent directory of the new file exists before running the editor. However, a race condition exists if the invoking user can replace (or create) the parent directory. If a symbolic link is created in place of the parent directory, sudoedit will run the editor as long as the target of the link exists. If the target of the link does not exist, an error message will be displayed. The race condition can be used to test for the existence of an arbitrary directory. However, it cannot be used to write to an arbitrary location. -
Fixed CVE-2021-23240, a flaw in the temporary file handling of sudoedit's SELinux RBAC support. On systems where SELinux is enabled, a user with sudoedit permissions may be able to set the owner of an arbitrary file to the user-ID of the target user. On Linux kernels that support protected symlinks, setting
/proc/sys/fs/protected_symlinks
to 1 will prevent the bug from being exploited. For more information see Symbolic link attack in SELinux-enabled sudoedit. -
Added writability checks for
sudoedit
when SELinux RBAC is in use. This makessudoedit
behavior consistent regardless of whether or not SELinux RBAC is in use. Previously, the sudoedit_checkdir setting had no effect for RBAC entries. -
A new sudoers option selinux can be used to disable sudo's SELinux RBAC support.
-
Quieted warnings from PVS Studio, clang analyzer, and cppcheck. Added suppression annotations for PVS Studio false positives.
Sudo 1.9.4p2
- Fixed a bug introduced in sudo 1.9.4p1 which could lead to a crash if the sudoers file contains a runas user-specific Defaults entry. Bug #951.
Sudo 1.9.4p1
-
Sudo on macOS now supports users with more than 16 groups without needing to set group_source to dynamic in
sudo.conf
.
Previously, only the first 15 were used when matching group-based rules in sudoers. Bug #946. -
Fixed a regression introduced in version 1.9.4 where sudo would not build when configured using the
--without-sendmail
option. Bug #947. -
Fixed a problem where if I/O logging was disabled and sudo was unable to connect to
sudo_logsrvd
, the command would still be allowed to run even when the ignore_logfile_errors sudoers option was enabled. -
Fixed a crash introduced in version 1.9.4 when attempting to run a command as a non-existent user. Bug #948.
-
The installed
sudo.conf
file now has the default sudoers Plugin lines commented out. This fixes a potential conflict when there
is both a system-installed version of sudo and a user-installed version. GitHub issue #75. -
Fixed a regression introduced in sudo 1.9.4 where sudo would run the command as a child process even when a pseudo-terminal was
not in use and the pam_session and pam_setcred options were disabled. GitHub issue #76. -
Fixed a regression introduced in sudo 1.8.9 where the closefrom sudoers option could not be set to a value of 3. Bug #950.