sudo

Utility to execute a command as another user

OTHER License

Stars
1.1K
Committers
54

Bot releases are hidden (Show)

sudo - Sudo 1.9.11

Published by millert over 2 years ago

  • Fixed a crash in the Python module with Python 3.9.10 on some systems. Additionally, make check now passes for Python 3.9.10.

  • Error messages sent via email now include more details, including the file name and the line number and column of the error. Multiple errors are sent in a single message. Previously, only the first error was included.

  • Fixed logging of parse errors in JSON format. Previously, the JSON logger would not write entries unless the command and runuser were set. These may not be known at the time a parse error is encountered.

  • Fixed a potential crash parsing sudoers lines larger than twice the value of LINE_MAX on systems that lack the getdelim() function.

  • The tests run by make check now unset the LANGUAGE environment variable. Otherwise, localization strings will not match if LANGUAGE is set to a non-English locale. Bug #1025.

  • The "starttime" test now passed when run under Debian faketime. Bug #1026.

  • The Kerberos authentication module now honors the custom password prompt if one has been specified.

  • The embedded copy of zlib has been updated to version 1.2.12.

  • Updated the version of libtool used by sudo to version 2.4.7.

  • Sudo now defines _TIME_BITS to 64 on systems that define __TIMESIZE in the header files (currently only GNU libc). This is required to allow the use of 64-bit time values on some 32-bit systems.

  • Sudo's intercept and log_subcmds options no longer force the command to run in its own pseudo-terminal. It is now also possible to intercept the system(3) function.

  • Fixed a bug in sudo_logsrvd when run in store-first relay mode where the commit point messages sent by the server were incorrect if the command was suspended or received a window size change event.

  • Fixed a potential crash in sudo_logsrvd when the tls_dhparams configuration setting was used.

  • The intercept and log_subcmds functionality can now use ptrace(2) on Linux systems that support seccomp(2) filtering. This has the advantage of working for both static and dynamic binaries and can work with sudo's SELinux RBAC mode. The following architectures are currently supported: i386, x86_64, aarch64, arm, mips (log_subcmds only), powerpc, riscv, and s390x. The default is to use ptrace(2) where possible; the new intercept_type sudoers setting can be used to explicitly set the type.

  • New Georgian translation from translationproject.org.

  • Fixed creating packages on CentOS Stream.

  • Fixed a bug in the intercept and log_subcmds support where the execve(2) wrapper was using the current environment instead of the passed environment pointer. Bug #1030.

  • Added AppArmor integration for Linux. A sudoers rule can now specify an APPARMOR_PROFILE option to run a command confined by the named AppArmor profile.

  • Fixed parsing of the server_log setting in sudo_logsrvd.conf. Non-paths were being treated as paths and an actual path was treated as an error.

sudo - Sudo 1.9.10

Published by millert over 2 years ago

  • Added new log_passwords and passprompt_regex sudoers options. If log_passwords is disabled, sudo will attempt to prevent passwords from being logged. If sudo detects any of the regular expressions in the passprompt_regex list in the terminal output, sudo will log '*' characters instead of the terminal input until a newline or carriage return is found in the input or an output character is received.

  • Added new log_passwords and passprompt_regex settings to sudo_logsrvd that operate like the sudoers options when logging terminal input.

  • Fixed several few bugs in the cvtsudoers utility when merging multiple sudoers sources.

  • Fixed a bug in sudo_logsrvd parsing the sudo_logsrvd.conf file, where the retry_interval in the [relay] section was not being
    recognized.

  • Restored the pre-1.9.9 behavior of not performing authentication when sudo's -n option is specified. A new noninteractive_auth sudoers option has been added to enable PAM authentication in non-interactive mode. GitHub issue #131.

  • On systems with /proc, if the /proc/self/stat (Linux) or /proc/pid/psinfo (other systems) file is missing or invalid, sudo will now check file descriptors 0-2 to determine the user's terminal. Bug #1020.

  • Fixed a compilation problem on Debian kFreeBSD. Bug #1021.

  • Fixed a crash in sudo_logsrvd when running in relay mode if an alert message is received.

  • Fixed an issue that resulting in "problem with defaults entries" email to be sent if a user ran sudo when the sudoers entry in the nsswitch.conf file includes "sss" but no sudo provider is configured in /etc/sssd/sssd.conf. Bug #1022.

  • Updated the warning displayed when the invoking user is not allowed to run sudo. If sudo has been configured to send mail on failed attempts (see the mail_* flags in sudoers), it will now print "This incident has been reported to the administrator." If the mailto or mailerpath sudoers settings are disabled, the message will not be printed and no mail will be sent.

  • Fixed a bug where the user-specified command timeout was not being honored if the sudoers rule did not also specify a timeout.

  • Added support for using POSIX extended regular expressions in sudoers rules. A command and/or arguments in sudoers are treated as a regular expression if they start with a '^' character and end with a '$'. The command and arguments are matched separately, either one (or both) may be a regular expression. Bug #578, GitHub issue #15.

  • A user may now only run sudo -U otheruser -l if they have a "sudo ALL" privilege where the RunAs user contains either root or otheruser. Previously, having "sudo ALL" was sufficient, regardless of the RunAs user. GitHub issue #134.

  • The sudo lecture is now displayed immediately before the password prompt. As a result, sudo will no longer display the lecture unless the user needs to enter a password. Authentication methods that don't interact with the user via a terminal do not trigger the lecture.

  • Sudo now uses its own closefrom() emulation on Linux systems. The glibc version may not work in a chroot jail where /proc is not available. If close_range(2) is present, it will be used in preference to /proc/self/fd.

sudo - Sudo 1.9.9

Published by millert over 2 years ago

  • Sudo can now be built with OpenSSL 3.0 without generating warnings about deprecated OpenSSL APIs.

  • A digest can now be specified along with the ALL command in the LDAP and SSSD back-ends. Sudo 1.9.0 introduced support for
    this in the sudoers file but did not include corresponding changes for the other back-ends.

  • visudo now only warns about an undefined alias or a cycle in an alias once for each alias.

  • The sudoRole cn was truncated by a single character in warning messages. GitHub issue #115.

  • The cvtsudoers utility has new --group-file and --passwd-file options to use a custom passwd or group file when the --match-local option is also used.

  • The cvtsudoers utility can now filter or match based on a command.

  • The cvtsudoers utility can now produce output in csv (comma-separated value) format. This can be used to help generate entitlement reports.

  • Fixed a bug in sudo_logsrvd that could result in the connection being dropped for very long command lines.

  • Fixed a bug where sudo_logsrvd would not accept a restore point of zero.

  • Fixed a bug in visudo where the value of the editor setting was not used if it did not match the user's EDITOR environment variable. This was only a problem if the env_editor setting was not enabled. Bug #1000.

  • Sudo now builds with the -fcf-protection compiler option and the -z now linker option if supported.

  • The output of sudoreplay -l now more closely matches the traditional sudo log format.

  • The sudo_sendlog utility will now use the full contents of the log.json file, if present. This makes it possible to send sudo-format I/O logs that use the newer log.json format to sudo_logsrvd without losing any information.

  • Fixed compilation of the arc4random_buf() replacement on systems with arc4random() but no arc4random_buf(). Bug #1008.

  • Sudo now uses its own getentropy() by default on Linux. The GNU libc version of getentropy() will fail on older kernels that don't support the getrandom() system call.

  • It is now possible to build sudo with WolfSSL's OpenSSL compatibility layer by using the --enable-wolfssl configure option.

  • Fixed a bug related to Daylight Saving Time when parsing timestamps in Generalized Time format. This affected the NOTBEFORE and
    NOTAFTER options in sudoers. Bug #1006.

  • Added the -O and -P options to visudo, which can be used to check or set the owner and permissions. This can be used in conjunction with the -c option to check that the sudoers file ownership and permissions are correct. Bug #1007.

  • It is now possible to set resource limits in the sudoers file itself. The special values default and "user" refer to the default system limit and invoking user limit respectively. The core dump size limit is now set to 0 by default unless overridden by the sudoers file.

  • The cvtsudoers utility can now merge multiple sudoers sources into a single, combined sudoers file. If there are conflicting entries, cvtsudoers will attempt to resolve them but manual intervention may be required. The merging of sudoers rules is currently fairly simplistic but will be improved in a future release.

  • Sudo was parsing but not applying the "deref" and "tls_reqcert" ldap.conf settings. This meant the options were effectively ignored which broke dereferencing of aliases in LDAP. Bug #1013.

  • Clarified in the sudo man page that the security policy may override the user's PATH environment variable. Bug #1014.

  • When sudo is run in non-interactive mode (with the -n option), it will now attempt PAM authentication and only exit with an error if user interaction is required. This allows PAM modules that don't interact with the user to succeed. Previously, sudo would not attempt authentication if the -n option was specified. Bug #956 and GitHub issue #83.

  • Fixed a regression introduced in version 1.9.1 when sudo is built with the --with-fqdn configure option. The local host name was being resolved before the sudoers file was processed, making it impossible to disable DNS lookups by negating the fqdn sudoers option. Bug #1016.

  • Added support for negated sudoUser attributes in the LDAP and SSSD sudoers back ends. A matching sudoUser that is negated will cause the sudoRole containing it to be ignored.

  • Fixed a bug where the stack resource limit could be set to a value smaller than that of the invoking user and not be reset before the command was run. Bug #1016.

sudo - Sudo 1.9.8p2

Published by millert about 3 years ago

  • Fixed a potential out-of-bounds read with sudo -i when the target user's shell is bash. This is a regression introduced in sudo 1.9.8. Bug #998.

  • sudo_logsrvd now only sends a log ID for first command of a session. There is no need to send the log ID for each sub-command.

  • Fixed a few minor memory leaks in intercept mode.

  • Fixed a problem with sudo_logsrvd in relay mode if store_first was enabled when handling sub-commands. A new zero-length journal file was created for each sub-command instead of simply using the existing journal file.

sudo - Sudo 1.9.8p1

Published by millert about 3 years ago

  • Fixed support for passing a prompt (sudo -p) or a login class (sudo -c) on the command line. This is a regression introduced in sudo 1.9.8. Bug #993.

  • Fixed a crash with sudo ALL rules in the LDAP and SSSD back-ends. This is a regression introduced in sudo 1.9.8. Bug #994.

  • Fixed a compilation error when the --enable-static-sudoers configure option was specified. This is a regression introduced in sudo 1.9.8 caused by a symbol clash with the intercept and log server protobuf functions.

sudo - Sudo 1.9.8

Published by millert about 3 years ago

  • It is now possible to transparently intercepting sub-commands executed by the original command run via sudo. Intercept support is implemented using LD_PRELOAD (or the equivalent supported by the system) and so has some limitations. The two main limitations are that only dynamic executables are supported and only the execl, execle, execlp, execv, execve, execvp, and execvpe library functions are currently intercepted. Its main use case is to support restricting privileged shells run via sudo.

    To support this, there is a new intercept Defaults setting and an INTERCEPT command tag that can be used in sudoers. For example:

     Cmnd_Alias SHELLS=/bin/bash, /bin/sh, /bin/csh, /bin/ksh, /bin/zsh
     Defaults!SHELLS intercept
    

    would cause sudo to run the listed shells in intercept mode. This can also be set on a per-rule basis. For example:

     Cmnd_Alias SHELLS=/bin/bash, /bin/sh, /bin/csh, /bin/ksh, /bin/zsh
     chuck ALL = INTERCEPT: SHELLS
    

    would only apply intercept mode to user chuck when running one of the listed shells.

    In intercept mode, sudo will not prompt for a password before running a sub-command and will not allow a set-user-ID or set-group-ID program to be run by default. The new intercept_authenticate and intercept_allow_setid sudoers settings can be used to change this behavior.

  • The new log_subcmds sudoers setting can be used to log additional commands run in a privileged shell. It uses the same mechanism as the intercept support described above and has the same limitations.

  • Support for logging sudo_logsrvd errors via syslog or to a file. Previously, most sudo_logsrvd errors were only visible in the debug log.

  • Better diagnostics when there is a TLS certificate validation error.

  • Using the += or -= operators in a Defaults setting that takes a string, not a list, now produces a warning from sudo and a syntax error from inside visudo.

  • Fixed a bug where the iolog_mode setting in sudoers and sudo_logsrvd had no effect when creating I/O log parent directories if the I/O log file name ended with the string XXXXXX.

  • Fixed a bug in the sudoers custom prompt code where the size parameter that was passed to the strlcpy() function was incorrect. No overflow was possible since the correct amount of memory was already pre-allocated.

  • The mksigname and mksiglist helper programs are now built with the host compiler, not the target compiler, when cross-compiling. Bug #989.

  • Fixed compilation error when the --enable-static-sudoers configure option was specified. This was due to a typo introduced in sudo 1.9.7. GitHub PR #113.

sudo - Sudo 1.9.7p2

Published by millert about 3 years ago

  • When formatting JSON output, octal numbers are now stored as strings, not numbers. The JSON spec does not actually support octal numbers with a 0 prefix.

  • Fixed a compilation issue on Solaris 9.

  • Sudo now can handle the getgroups() function returning a different number of groups for subsequent invocations. GitHub PR #106.

  • When loading a Python plugin, python_plugin.so now verifies that the module loaded matches the one we tried to load. This
    allows sudo to display a more useful error message when trying to load a plugin with a name that conflicts with a Python module installed in the system location.

  • Sudo no longer sets the the open files resource limit to unlimited while it runs. This avoids a problem where sudo's closefrom() emulation would need to close a very large number of descriptors on systems without a way to determine which ones are actually open.

  • Sudo now includes a configure check for va_copy or __va_copy and only defines its own version if the configure test fails.

  • Fixed a bug in sudo's utmp file handling which prevented old entries from being reused. As a result, the utmp (or utmpx) file was appended to unnecessarily. GitHub PR #108.

  • Fixed a bug introduced in sudo 1.9.7 that prevented sudo_logsrvd from accepting TLS connections when OpenSSL is used. Bug #988.

sudo - Sudo 1.9.7p1

Published by millert over 3 years ago

  • Fixed an SELinux sudoedit bug when the edited temporary file could not be opened. The sesh 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 as slibtool. On macOS shared libraries and modules are not interchangeable and the version of libtool 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()-based getgrouplist() 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 between include/compat/nss_dbdefs.h and what HP-UX uses internally. On HP-UX we now just cycle through groups the slow way using getgrent(). Bug #978.

sudo - Sudo 1.9.7

Published by millert over 3 years ago

  • 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, set FUZZ_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 to SIG_IGN. This fixes the bug described by GitHub PR #98.

  • Fixed an out-of-bounds read in sudoedit and visudo when the EDITOR, VISUAL or SUDO_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 of sudo_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 - Sudo 1.9.6p1

Published by millert over 3 years ago

  • 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 - Sudo 1.9.6

Published by millert over 3 years ago

  • 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 LDAP sudoRole that contains multiple sudoCommands. Previously, some of the options
    would only be applied to the first sudoCommand.

  • Fixed a potential out of bounds read in the parsing of NOTBEFORE and NOTAFTER 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 and CWD=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 - Sudo 1.8.32

Published by millert over 3 years ago

  • 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 in ldap.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 setting argv[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 makes sudoedit 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 for sudo -e. The -H and -P options are now rejected for sudoedit and sudo -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 or sudo -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 - Sudo 1.9.5p2

Published by millert over 3 years ago

  • 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 in libsudo_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 for sudo -e. The -H and -P options are now rejected for sudoedit and sudo -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 or sudo -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 - Sudo 1.9.5p1

Published by millert almost 4 years ago

  • 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 - Sudo 1.9.5

Published by millert almost 4 years ago

  • 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 setting argv[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 makes sudoedit 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 - Sudo 1.9.4p2

Published by millert almost 4 years ago

  • 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 - Sudo 1.9.4p1

Published by millert almost 4 years ago

  • 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.

sudo - Sudo 1.9.4

Published by millert almost 4 years ago

  • The sudoers parser will now detect when an upper-case reserved word is used when declaring an alias. Now instead of syntax error, unexpected CHROOT, expecting ALIAS the message will be syntax error, reserved word CHROOT used as an alias name. Bug #941.

  • Better handling of sudoers files without a final newline. The parser now adds a newline at end-of-file automatically which removes the need for special cases in the parser.

  • Fixed a regression introduced in sudo 1.9.1 in the sssd back-end where an uninitialized pointer could be freed on an error path. GitHub issue #67.

  • The core logging code is now shared between sudo_logsrvd and the sudoers plugin.

  • JSON log entries sent to syslog now use minimal JSON which skips all non-essential whitespace.

  • The sudoers plugin can now produce JSON-formatted logs. The log_format sudoers option can be used to select sudo or json format logs. The default is sudo format logs.

  • The sudoers plugin and visudo now display the column number in syntax error messages in addition to the line number. Bug #841.

  • If I/O logging is not enabled but log_servers is set, the sudoers plugin will now log accept events to sudo_logsrvd. Previously, the accept event was only sent when I/O logging was enabled. The sudoers plugin now sends reject and alert events too.

  • The sudo logsrv protocol has been extended to allow an AlertMessage to contain an optional array of InfoMessage, as AcceptMessage and RejectMessage already do.

  • Fixed a bug in sudo_logsrvd where receipt of SIGHUP would result in duplicate entries in the debug log when debugging was enabled.

  • The visudo utility now supports EDITOR environment variables that use single or double quotes in the command arguments. Bug #942.

  • The PAM session modules now run when sudo is set-user-ID root, which allows a module to determine the original user-ID. Bug #944.

  • 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 in ldap.conf. Bug #945.

  • Sudo packages for macOS 11 now contain universal binaries that support both Intel and Apple Silicon CPUs.

  • For sudo_logsrvd, an empty value for the pid_file setting in sudo_logsrvd.conf will now disable the process ID file.

sudo - Sudo 1.9.3p1

Published by millert about 4 years ago

  • Fixed a regression introduced in sudo 1.9.3 where the configure script would not detect the crypt function if it was present in the C library, not an additional library.

  • Fixed a regression introduced in sudo 1.8.23 with shadow passwd file authentication on OpenBSD. BSD authentication was not affected.

  • Sudo now logs when a user-specified command-line option is rejected by a sudoers rule. Previously, these conditions were written to the audit log, but the default sudo log file. Affected command line arguments include -C (--close-from), -D (--chdir), -R (--chroot), -g (--group) and -u (--user).

sudo - Sudo 1.9.3

Published by millert about 4 years ago

  • sudoedit will now prompt the user before overwriting an existing file with one that is zero-length after editing. Bug #922.

  • Fixed building the Python plugin on systems with a compiler that doesn't support symbol hiding.

  • Sudo now uses a linker script to hide symbols even when the compiler has native symbol hiding support. This should make it easier to detect omissions in the symbol exports file, regardless of the platform.

  • Fixed the libssl dependency in Debian packages for older releases that use libssl1.0.0.

  • sudo and visudo now provide more detailed messages when a syntax error is detected in sudoers. The offending line and token are now displayed. If the parser was generated by GNU bison, additional information about what token was expected is also displayed.
    Bug #841.

  • Sudoers rules must now end in either a newline or the end-of-file. Previously, it was possible to have multiple rules on a single line, separated by white space. The use of an end-of-line terminator makes it possible to display accurate error messages.

  • Sudo no longer refuses to run if a syntax error in the sudoers file is encountered. The entry with the syntax error will be discarded and sudo will continue to parse the file. This makes recovery from a syntax error less painful on systems where sudo is the primary method of superuser access. The historic behavior can be restored by add error_recovery=false to the sudoers plugin's optional arguments in sudo.conf. Bug 618.

  • Fixed the sample_approval plugin's symbol exports file for systems where the compiler doesn't support symbol hiding.

  • Fixed a regression introduced in sudo 1.9.1 where arguments to the sudoers_policy plugin in sudo.conf were not being applied. The sudoers file is now parsed by the sudoers_audit plugin, which is loaded implicitly when sudoers_policy is listed in sudo.conf.
    Starting with sudo 1.9.3, if there are plugin arguments for sudoers_policy but sudoers_audit is not listed, those arguments will be applied to sudoers_audit instead.

  • The user's resource limits are now passed to sudo plugins in the user_info[] list. A plugin cannot determine the limits itself because sudo changes the limits while it runs to prevent resource starvation.

  • It is now possible to set the working directory or change the root directory on a per-command basis using the CWD and CHROOT options. There are also new Defaults settings, runchroot and runcwd that can be used to set the working directory or root directory on a more global basis.

  • New -D (--chdir) and -R (--chroot) command line options can be used to set the working directory or root directory if the sudoers file allows it. This functionality is not enabled by default and must be explicitly enabled in the sudoers file.