Releases: sudo-project/sudo
Sudo 1.9.14
-
Fixed a bug where if the intercept or log_subcmds sudoers option was enabled and a sub-command was run where the first entry of the argument vector didn't match the command being run. This resulted in commands like
sudo su -
being killed due to the mismatch. Bug #1050. -
The sudoers plugin now canonicalizes command path names before matching (where possible). This fixes a bug where sudo could execute the wrong path if there are multiple symbolic links with the same target and the same base name in sudoers that a user is allowed to run. GitHub issue #228.
-
Improved command matching when a chroot is specified in sudoers. The sudoers plugin will now change the root directory id needed before performing command matching. Previously, the root directory was simply prepended to the path that was being processed.
-
When NETGROUP_BASE is set in the
ldap.conf
file, sudo will now perform its own netgroup lookups of the host name instead of using the systeminnetgr(3)
function. This guarantees that user and host netgroup lookups are performed using the same LDAP server (or servers). -
Fixed a bug introduced in sudo 1.9.13 that resulted in a missing " ; " separator between environment variables and the command in log entries.
-
The
visudo
utility now displays a warning when it ignores a file in an include dir such as/etc/sudoers.d
. -
When running a command in a pseudo-terminal, sudo will initialize the terminal settings even if it is the background process. Previously, sudo only initialized the pseudo-terminal when running in the foreground. This fixes an issue where a program that checks the window size would read the wrong value when sudo was running in the background.
-
Fixed a bug where only the first two digits of the TSID field being was logged. Bug #1046.
-
The use_pty sudoers option is now enabled by default. To restore the historic behavior where a command is run in the user's terminal, add
Defaults !use_pty
to the sudoers file. GitHub issue #258. -
Sudo's
-b
option now works when the command is run in a pseudo-terminal. -
When disabling core dumps, sudo now only modifies the soft limit and leaves the hard limit as-is. This avoids problems on Linux when sudo does not have
CAP_SYS_RESOURCE
, which may be the case when run inside a container. GitHub issue #42. -
Sudo configuration file paths have been converted to colon-separated lists of paths. This makes it possible to have configuration files on a read-only file system while still allowing for local modifications in a different (writable) directory. The new
--enable-adminconf
configure option can be used to specify a directory that is searched for configuration files in preference to the sysconfdir (which is usually/etc
). -
The intercept_verify sudoers option is now only applied when the intercept option is set in sudoers. Previously, it was also applied when log_subcmds was enabled.
-
The NETGROUP_QUERY
ldap.conf
parameter can now be disabled for LDAP servers that do not support querying the nisNetgroup object by its nisNetgroupTriple attribute, while still allowing sudo to query the LDAP server directly to determine netgroup membership. -
Fixed a long-standing bug where a sudoers rule without an explicit runas list allowed the user to run a command as root and any group instead of just one of the groups that root is a member of. For example, a rule such as
myuser ALL = ALL
would permitsudo -u root -g othergroup
even if root did not belong to othergroup. -
Fixed a bug where a sudoers rule with an explicit runas list allowed a user to run sudo commands as themselves. For example, a rule such as
myuser ALL = (root) ALL
, myuser should only allow commands to be run as root (optionally using one of root's groups). However, the rule also allowed the user to runsudo -u myuser -g myuser command
. -
Fixed a bug that prevented the user from specifying a group on the command line via
sudo -g
if the rule's Runas_Spec contained a Runas_Alias. -
Sudo now requires a C99 compiler due to the use of flexible array members.
Sudo 1.9.13p3
-
Fixed a bug introduced in sudo 1.9.13 that caused a syntax error when list was used as a user or host name. GitHub issue #246.
-
Fixed a bug that could cause sudo to hang when running a command in a pseudo-terminal when there is still input buffered after a command has exited.
-
Fixed
sudo -U otheruser -l command
. This is a regression in sudo 1.9.13. GitHub issue #248. -
Fixed
sudo -l command args
when matching a command in sudoers with command line arguments. This is a regression in sudo 1.9.13. GitHub issue #249.
Sudo 1.9.13p2
-
Fixed the
--enable-static-sudoers
option, broken in sudo 1.9.13. GitHub issue #245. -
Fixed a potential double-free bug when matching a sudoers rule that contains a per-command chroot directive (
CHROOT=dir
). This bug was introduced in sudo 1.9.8.
Sudo 1.9.13p1
-
Fixed a typo in the configure script that resulted in a line like "]: command not found" in the output. GitHub issue #238.
-
Corrected the order of the C23
[[noreturn]]
attribute in function prototypes. This fixes a build error with GCC 13. GitHub issue #239. -
The check make target misbehaved when there was more than one version of the UTF-8 C locale in the output of
locale -a
. GitHub issue #241. -
Removed a dependency on the
AC_SYS_YEAR2038
macro in configure.ac. This was added in autoconf 2.72 but sudo's configure.ac only required autoconf 2.70. GitHub issue #242. -
Relaxed the autoconf version requirement to version 2.69.
Sudo 1.9.13
-
Fixed a bug running relative commands via sudo when log_subcmds is enabled. GitHub issue #194.
-
Fixed a signal handling bug when running sudo commands in a shell script. Signals were not being forwarded to the command when the sudo process was not run in its own process group.
-
Fixed a bug in the
cvtsudoers
LDIF parsing when the file ends without a newline and a backslash is the last character of the file. -
Fixed a potential use-after-free bug with cvtsudoers filtering. GitHub issue #198.
-
Added a reminder to the default lecture that the password will not echo. This line is only displayed when the pwfeedback option is disabled. GitHub issue #195.
-
Fixed potential memory leaks in error paths. GitHub issue #199. GitHub issue #202.
-
Fixed potential NULL dereferences on memory allocation failure. GitHub issue #204. GitHub issue #211.
-
Sudo now uses C23-style attributes in function prototypes instead of gcc-style attributes if supported.
-
Added a new list pseudo-command in sudoers to allow a user to list another user's privileges. Previously, only root or a user with the ability to run any command as either root or the target user on the current host could use the -U option. This also includes a fix to the log entry when a user lacks permission to run
sudo -U otheruser -l command
. Previously, the logs would indicate that the user tried to run the actual command, now the log entry includes the list operation. -
JSON logging now escapes control characters if they happen to appear in the command or environment.
-
New Albanian translation from translationproject.org.
-
Regular expressions in sudoers or logsrvd.conf may no longer contain consecutive repetition operators. This is implementation- specific behavior according to POSIX, but some implementations will allocate excessive amounts of memory. This mainly affects the fuzzers.
-
Sudo now builds AIX-style shared libraries and dynamic shared objects by default instead of svr4-style. This means that the default sudo plugins are now .a (archive) files that contain a .so shared object file instead of bare .so files. This was done to improve compatibility with the AIX Freeware ecosystem, specifically, the AIX Freeware build of OpenSSL. Sudo will still load svr4-style .so plugins and if a .so file is requested, either via sudo.conf or the sudoers file, and only the .a file is present, sudo will convert the path from plugin.so to plugin.a(plugin.so) when loading it. This ensures compatibility with existing configurations. To restore the old, pre-1.9.13 behavior, run configure using the --with-aix-soname=svr4 option.
-
Sudo no longer checks the ownership and mode of the plugins that it loads. Plugins are configured via either the sudo.conf or sudoers file which are trusted configuration files. These checks suffered from time-of-check vs. time-of-use race conditions and complicate loading plugins that are not simple paths. Ownership and mode checks are still performed when loading the sudo.conf and sudoers files, which do not suffer from race conditions. The sudo.conf developer_mode setting is no longer used.
-
Control characters in sudo log messages and
sudoreplay -l
output are now escaped in octal format. Space characters in the command path are also escaped. Command line arguments that contain spaces are surrounded by single quotes and any literal single quote or backslash characters are escaped with a backslash. This makes it possible to distinguish multiple command line arguments from a single argument that contains spaces. -
Improved support for DragonFly BSD which uses a different struct procinfo than either FreeBSD or 4.4BSD.
-
Fixed a compilation error on Linux arm systems running older kernels that may not define EM_ARM in linux/elf-em.h. GitHub issue #232.
-
Fixed a compilation error when LDFLAGS contains -Wl,--no-undefined. Sudo will now link using -Wl,--no-undefined by default if possible. GitHub issue #234.
-
Fixed a bug executing a command with a very long argument vector when log_subcmds or intercept is enabled on a system where intercept_type is set to trace. GitHub issue #194.
-
When sudo is configured to run a command in a pseudo-terminal but the standard input is not connected to a terminal, the command will now be run as a background process. This works around a problem running sudo commands in the background from a shell script where changing the terminal to raw mode could interfere with the interactive shell that ran the script. GitHub issue #237.
-
A missing include file in sudoers is no longer a fatal error unless the error_recovery plugin argument has been set to false.
Sudo 1.9.12p2
-
Fixed a compilation error on Linux/aarch64. GitHub issue #197.
-
Fixed a potential crash introduced in the fix GitHub issue #134. If a user's sudoers entry did not have any RunAs user's set, running
sudo -U otheruser -l
would dereference a NULL pointer. -
Fixed a bug introduced in sudo 1.9.12 that could prevent sudo from creating a I/O files when the iolog_file sudoers setting contains six or more Xs.
-
Fixed a compilation issue on AIX with the native compiler. GitHub issue #231.
-
Fixed CVE-2023-22809, a flaw in sudo's
-e
option (akasudoedit
) that could allow a malicious user with sudoedit privileges to edit arbitrary files. For more information, see Sudoedit can edit arbitrary files.
Sudo 1.9.12p1
-
Sudo's configure script now does a better job of detecting when the -fstack-clash-protection compiler option does not work. GitHub issue #191.
-
Fixed CVE-2022-43995, a potential out-of-bounds write for passwords smaller than 8 characters when passwd authentication is enabled. This does not affect configurations that use other authentication methods such as PAM, AIX authentication or BSD authentication.
-
Fixed a build error with some configurations compiling host_port.c.
Sudo 1.9.12
-
Fixed a bug in the ptrace-based intercept mode where the current working directory could include garbage at the end.
-
Fixed a compilation error on systems that lack the stdint.h header. Bug #1035.
-
Fixed a bug when logging the command's exit status in intercept mode. The wrong command could be logged with the exit status.
-
For ptrace-based intercept mode, sudo will now attempt to verify that the command path name, arguments and environment have not changed from the time when they were authorized by the security policy. The new intercept_verify sudoers setting can be used to control this behavior.
-
Fixed running commands with a relative path (e.g. ./foo) in intercept mode. Previously, this would fail if sudo's current working directory was different from that of the command.
-
Sudo now supports passing the execve(2) system call the NULL pointer for the
argv
and/orenvp
arguments when in intercept mode. Linux treats a NULL pointer like an empty array. -
The sudoers LDAP schema now allows sudoUser, sudoRunasUser and sudoRunasGroup to include UTF-8 characters, not just 7-bit ASCII.
-
Fixed a problem with
sudo -i
on SELinux when the target user's home directory is not searchable by sudo. GitHub issue #160. -
Neovim has been added to the list of visudo editors that support passing the line number on the command line.
-
Fixed a bug in sudo's SHA384 and SHA512 message digest padding.
-
Added a new
-N
(no-update) command line option to sudo which can be used to prevent sudo from updating the user's cached credentials. It is now possible to determine whether or not a user's cached credentials are currently valid by running:$ sudo -Nnv
and checking the exit value. One use case for this is to indicate in a shell prompt that sudo is "active" for the user.
-
PAM approval modules are no longer invoked when running sub-commands in intercept mode unless the intercept_authenticate option is set. There is a substantial performance penalty for calling into PAM for each command run. PAM approval modules are still called for the initial command.
-
Intercept mode on Linux now uses process_vm_readv(2) and process_vm_writev(2) if available.
-
The
XDG_CURRENT_DESKTOP
environment variable is now preserved by default. This makes it possible for graphical applications to choose the correct theme when run via sudo. -
On 64-bit systems, if sudo fails to load a sudoers group plugin, it will use system-specific heuristics to try to locate a 64-bit version of the plugin.
-
The cvtsudoers manual now documents the JSON and CSV output formats. GitHub issue #172.
-
Fixed a bug where sub-commands were not being logged to a remote log server when log_subcmds was enabled. GitHub issue #174.
-
The new log_stdin, log_stdout, log_stderr, log_ttyin, and log_ttyout sudoers settings can be used to support more fine-grained I/O logging. The sudo front-end no longer allocates a pseudo-terminal when running a command if the I/O logging plugin requests logging of stdin, stdout, or stderr but not terminal input/output.
-
Quieted a libgcrypt run-time initialization warning. This fixes Debian bug #1019428 and Ubuntu bug #1397663.
-
Fixed a bug in visudo that caused literal backslashes to be removed from the
EDITOR
environment variable. GitHub issue #179. -
The sudo Python plugin now implements the
find_spec
method instead of the the deprecatedfind_module
. This fixes a test failure when a newer version of setuptools that doesn't includefind_module
is found on the system. -
Fixed a bug introduced in sudo 1.9.9 where sudo_logsrvd created the process ID file, usually
/var/run/sudo/sudo_logsrvd.pid
, as a directory instead of a plain file. The same bug could result in I/O log directories that end in six or more X's being created literally in addition to the name being used as a template for the mkdtemp(3) function. -
Fixed a long-standing bug where a sudoers rule with a command line argument of "", which indicates the command may be run with no arguments, would also match a literal "" on the command line. GitHub issue #182.
-
Added the
-I
option to visudo which only edits the main sudoers file. Include files are not edited unless a syntax error is found. -
Fixed
sudo -l -U otheruser
output when the runas list is empty. Previously, sudo would list the invoking user instead of the
list user. GitHub issue #183. -
Fixed the display of command tags and options in
sudo -l
output when the RunAs user or group changes. A new line is started for RunAs changes which means we need to display the command tags and options again. GitHub issue #184. -
The sesh helper program now uses getopt_long(3) to parse the command line options.
-
The embedded copy of zlib has been updated to version 1.2.13.
-
Fixed a bug that prevented event log data from being sent to the log server when I/O logging was not enabled. This only affected systems without PAM or configurations where the pam_session and pam_setcred options were disabled in the sudoers file.
-
Fixed a bug where
sudo -l
output included a carriage return after the newline. This is only needed when displaying to a terminal in raw mode. Bug #1042.
Sudo 1.9.11p3
-
Fixed "connection reset" errors on AIX when running shell scripts with the intercept or log_subcmds sudoers options enabled. Bug #1034.
-
Fixed very slow execution of shell scripts when the intercept or log_subcmds sudoers options are set on systems that enable Nagle's algorithm on the loopback device, such as AIX. Bug #1034.
Sudo 1.9.11p2
-
Fixed a compilation error on Linux/x86_64 with the x32 ABI.
-
Fixed a regression introduced in 1.9.11p1 that caused a warning when logging to
sudo_logsrvd
if the command returned no output.