{"id":"SUSE-RU-2026:1228-1","summary":"Recommended update for shadow","details":"This update for shadow fixes the following issues:\n\nshadow is updated to 4.17.2 to bring lots of features and bug fixes.\n\n- util-linux-2.41 introduced new variable: LOGIN_ENV_SAFELIST. Recognize\n  it and update dependencies.\n \n- Set SYS_{UID,GID}_MIN to 201:\n  After repeated similar requests to change the ID ranges we set the\n  above mentioned value to 201. The max value will stay at 499.\n  This range should be sufficient and will give us leeway for the\n  future.\n  It's not straightforward to find out which static UIDs/GIDs are\n  used in all packages.\n \n \nUpdate to 4.17.2:\n\n* src/login_nopam.c: Fix compiler warnings #1170\n* lib/chkname.c: Put limits for LOGIN_NAME_MAX and sysconf(_SC_LOGIN_NAME_MAX) #1169\n* Use HTTPS in link to Wikipedia article on password strength #1164\n* lib/attr.h: use C23 attributes only with gcc \u003e= 10 #1172\n* login: Fix no-pam authorization regression #1174\n* man: Add Portuguese translation #1178\n* Update French translation #1177\n* Add cheap defense mechanisms #1171\n* Add Romanian translation #1176\n\nUpdate to 4.17.1:\n\n* Fix `su -` regression #1163\n \nUpdate to 4.17.0:\n\n* Fix the lower part of the domain of csrand_uniform()\n* Fix use of volatile pointer\n* Use str2[u]l() instead of atoi(3)\n* Use a2i() in various places\n* Fix const correctness\n* Use uid_t for holding UIDs (and GIDs)\n* Move all sprintf(3)-like APIs to a subdirectory\n* Move all copying APIs to a subdirectory\n* Fix forever loop on ENOMEM\n* Fix REALLOC() nmemb calculation\n* Remove id(1)\n* Remove groups(1)\n* Use local time for human-readable dates\n* Use %F instead of %Y-%m-%d with strftime(3)\n* is_valid{user,group}_name(): Set errno to distinguish the reasons\n* Recommend --badname only if it is useful\n* Add fmkomstemp() to fix mode of /etc/default/useradd\n* Fix use-after-free bug in sgetgrent()\n* Update Catalan translation\n* Remove references to cppw, cpgr\n* groupadd, groupmod: Update gshadow file with -U\n* Added option -a for listing active users only, optimized using if aflg,return\n* Added information in lastlog man page for new option '-a'\n* Plenty of code cleanup and clarifications\n\n- Disable flushing sssd caches. The sssd's files provider is no\n  longer available.\n\nUpdate to 4.16.0:\n\n* The shadow implementations of id(1) and groups(1) are deprecated\n  in favor of the GNU coreutils and binutils versions.\n  They will be removed in 4.17.0.\n* The rlogind implementation has been removed.\n* The libsubid major version has been bumped, since it now requires\n  specification of the module's free() implementation.\n\nUpdate to 4.15.1:\n\n* Fix a bug that caused spurious error messages about unknown\n  login.defs configuration options #967\n* Adding checks for fd omission #964\n* Use temporary stat buffer #974\n* Fix wrong french translation #975\n\nUpdate to 4.15.0\n\n* libshadow:\n  + Use utmpx instead of utmp. This fixes a regression introduced\n    in 4.14.0.\n  + Fix build error (parameter name omitted).\n* Build system:\n  + Link correctly with libdl.\n  + Install pam configs for chpasswd(8) and newusers(8) when using\n    ./configure --with-libpam --disable-account-tools-setuid.\n  + Merge libshadow and libmisc into a single libshadow. This fixes\n    problems in the linker, which were reported at least in Gentoo.\n  + Fix build with musl libc.\n  + Support out of tree builds\n* useradd(8):\n  + Set proper SELinux labels for def_usrtemplate\n\nUpdate to 4.14.6:\n\n* login(1):\n  + Fix off-by-one bugs.\n* passwd(1):\n  + Don't silently truncate passwords of length \u003e= 200 characters.\n    Instead, accept a length of PASS_MAX, and reject longer ones.\n* libshadow:\n  + Fix calculation in strtoday(), which caused a wrong half-day\n    offset in some cases (bsc#1176006)\n  + Fix parsing of dates in get_date() (bsc#1176006)\n  + Use utmpx instead of utmp. This fixes a regression introduced in\n    4.14.0.\n\nUpdate to 4.14.5:\n\n* Build system:\n   + Fix regression introduced in 4.14.4, due to a typo. chgpasswd had\n     been deleted from a Makefile variable, but it should have been\n     chpasswd.\n\nUpdate to 4.14.4:\n\n* Build system:\n  + Link correctly with libdl.\n  + Install pam configs for chpasswd(8) and newusers(8) when using\n    ./configure --with-libpam --disable-account-tools-setuid.\n* libshadow:\n  + Fix build error (parameter name omitted).\n  + Fix off-by-one bug.\n  + Remove warning.\n\nUpdate to 4.14.3:\n\n* libshadow: Avoid null pointer dereference (#904)\n\n* Remove pam_keyinit from PAM configuration. (bsc#1199026 bsc#1203823)\n  This was introduced for bsc#1144060.\n\nUpdate to 4.14.2:\n\n\n* libshadow:\n\n  + Fix build with musl libc.\n  + Avoid NULL dereference.\n  + Update utmp at an initial login\n\n* useradd(8):\n\n  + Set proper SELinux labels for def_usrtemplate\n\n* Manual:\n\n  + Document --prefix in chage(1), chpasswd(8), and passwd(1)\n\nUpdate to 4.14.1:\n\n  Build system: Merge libshadow and libmisc into a single libshadow.\n  This fixes problems in the linker, which were reported at least\n  in Gentoo. #791\n\n- Set proper SELinux labels for new homedirs.\n\nUpdate to 4.14.0:\n\n* configure: add with-libbsd option\n* Code cleanup\n* Replace utmp interface #757 \n* new option enable-logind #674\n* shadow userdel: add the adaptation to the busybox ps in 01-kill_user_procs.sh\n* chsh: warn if root sets a shell not listed in /etc/shells #535\n* newgrp: fix potential string injection\n* lastlog: fix alignment of Latest header\n* Fix yescrypt support #748\n* chgpasswd: Fix segfault in command-line options\n* gpasswd: Fix password leak (bsc#1214806, CVE-2023-4641)\n* Add --prefix to passwd, chpasswd and chage #714 (bsc#1206627)\n* usermod: fix off-by-one issues #701\n* ch(g)passwd: Check selinux permissions upon startup #675\n* sub_[ug]id_{add,remove}: fix return values\n* chsh: Verify that login shell path is absolute #730\n* process_prefix_flag: Drop privileges\n* run_parts for groupadd and groupdel #706\n* newgrp/useradd: always set SIGCHLD to default\n* useradd/usermod: add --selinux-range argument #698\n* sssd: skip flushing if executable does not exist #699\n* semanage: Do not set default SELinux range #676\n* Add control character check #687\n* usermod: respect --prefix for --gid option\n* Fix null dereference in basename\n* newuidmap and newgidmap: support passing pid as fd\n* Prevent out of boundary access #633\n* Explicitly override only newlines #633\n* Correctly handle illegal system file in tz #633\n* Supporting vendor given -shells- configuration file #599\n* Warn if failed to read existing /etc/nsswitch.conf\n* chfn: new_fields: fix wrong fields printed\n* Allow supplementary groups to be added via config file #586\n* useradd: check if subid range exists for user #592 (rh#2012929)\n\n- Rename lastlog to lastlog.legacy to be able to switch to\n  Y2038 safe lastlog2 as default [jsc#PED-3144]\n\n- bsc#1205502: Fix useradd audit event logging of ID field\n\nUpdate to 4.13:\n\n* useradd.8: fix default group ID\n* Revert drop of subid_init()\n* Georgian translation\n* useradd: Avoid taking unneeded space: do not reset non-existent data in lastlog\n* relax username restrictions\n* selinux: check MLS enabled before setting serange\n* copy_tree: use fchmodat instead of chmod\n* copy_tree: don't block on FIFOs\n* add shell linter\n* copy_tree: carefully treat permissions\n* lib/commonio: make lock failures more detailed\n* lib: use strzero and memzero where applicable\n* Update Dutch translation\n* Don't test for NULL before calling free\n* Use libc MAX() and MIN()\n* chage: Fix regression in print_date\n* usermod: report error if homedir does not exist\n* libmisc: minimum id check for system accounts\n* fix usermod -rG x y wrongly adding a group\n* man: add missing space in useradd.8.xml\n* lastlog: check for localtime() return value\n* Raise limit for passwd and shadow entry length\n* Remove adduser-old.c\n* useradd: Fix buffer overflow when using a prefix\n* Don't warn when failed to open /etc/nsswitch.conf\n\nUpdate to 4.12.3:\n\nRevert removal of subid_init, which should have bumped soname.\nSo note that 4.12 through 4.12.2 were broken for subid users.\n\nUpdate to 4.12.2:\n\n* Address CVE-2013-4235 (TOCTTOU when copying directories) [bsc#916845]\n\nUpdate to 4.12.1:\n\n* Fix uk manpages\n\nUpdate to 4.12:\n\n* Add absolute path hint to --root\n* Various cleanups\n* Fix Ubuntu release used in CI tests\n* add -F options to userad\n* useradd manpage updates\n* Check for ownerid (not just username) in subid ranges\n* Declare file local functions static\n* Use strict prototypes\n* Do not drop const qualifier for Basename\n* Constify various pointers\n* Don't return uninitialized memory\n* Don't let compiler optimize away memory cleaning\n* Remove many obsolete compatibility checks  and defines\n* Modify ID range check in useradd\n* Use 'extern 'C'' to make libsubid easier to use from C++\n* French translation updates\n* Fix s/with-pam/with-libpam/\n* Spanish translation updates\n* French translation fixes\n* Default max group name length to 32\n* Fix PAM service files without-selinux\n* Improve manpages\n  - groupadd, useradd, usermod\n  - groups and id\n  - pwck\n* Fix condition under which pw_dir check happens\n* logoutd: switch to strncat\n* AUTHORS: improve markdown output\n* Handle ERANGE errors correctly\n* Check for fopen NULL return\n* Split get_salt() into its own fn juyin)\n* Get salt before chroot to ensure /dev/urandom.\n* Chpasswd code cleanup\n* Work around git safe.directory enforcement\n* Alphabetize order in usermod help\n* Erase password copy on error branches\n* Suggest using --badname if needed\n* Update translation files\n* Correct badnames option to badname\n* configure: replace obsolete autoconf macros\n* tests: replace egrep with grep -E\n* Update Ukrainian translations\n* Cleanups\n  - Remove redeclared variable\n  - Remove commented out code and FIXMEs\n  - Add header guards\n  - Initialize local variables\n* CI updates\n  - Create github workflow to install dependencies\n  - Enable CodeQL\n  - Update actions version\n* libmisc: use /dev/urandom as fallback if other methods fail\n\nProvide /etc/login.defs.d on SLE15 since we support and use it\n\nUpdate to 4.11.1:\n\n* build: include lib/shadowlog_internal.h in dist tarballs\n\nUpdate to 4.11:\n* Handle possible TOCTTOU issues in usermod/userdel\n\t- (CVE-2013-4235)\n\t- Use O_NOFOLLOW when copying file\n\t- Kill all user tasks in userdel\n* Fix useradd -D segfault\n* Clean up obsolete libc feature-check ifdefs\n* Fix -fno-common build breaks due to duplicate Prog declarations\n* Have single date_to_str definition\n* Fix libsubid SONAME version\n* Clarify licensing info, use SPDX.\n\nUpdate to 4.10:\n\n* From this release forward, su from this package should be\n  considered deprecated. Please replace any users of it with su\nrom util-linux\n* libsubid fixes\n* Rename the test program list_subid_ranges to getsubids, write\n  a manpage, so distros can ship it.\n* Add libeconf dep for new*idmap\n* Allow all group types with usermod -G\n* Avoid useradd generating empty subid range\n* Handle NULL pw_passwd\n* Fix default value SHA_get_salt_rounds\n* Use https where possible in README\n* Update content and format of README\n* Translation updates\n* Switch from xml2po to itstool in 'make dist'\n* Fix double frees\n* Add LOG_INIT configurable to useradd\n* Add CREATE_MAIL_SPOOL documentation\n* Create a security.md\n* Fix su never being SIGKILLd when trapping TERM\n* Fix wrong SELinux labels in several possible cases\n* Fix missing chmod in chadowtb_move\n* Handle malformed hushlogins entries\n* Fix groupdel segv when passwd does not exist\n* Fix covscan-found newgrp segfault\n* Remove trailing slash on hoedir\n* Fix passwd -l message - it does not change expirey\n* Fix SIGCHLD handling bugs in su and vipw\n* Remove special case for '' in usermod\n* Implement usermod -rG to remove a specific group\n* call pam_end() after fork in child path for su and login\n* useradd: In absence of /etc/passwd, assume 0 == root\n* lib: check NULL before freeing data\n* Fix pwck segfault\n\n- Really enable USERGROUPS_ENAB [bsc#1189139].\n\nAdded hardening to systemd service(s) (bsc#1181400).\n* Add LOGIN_KEEP_USERNAME to login.defs.\n\n* Remove PREVENT_NO_AUTH from login.defs. Only used by the\n  unpackaged login and su.\n\n* Remove variables BCRYPT_MIN_ROUNDS, BCRYPT_MAX_ROUNDS,\n  YESCRYPT_COST_FACTOR, not supported by the current\n  configuratiton.\n\n* login.defs: Enable USERGROUPS_ENAB and CREATE_HOME to\n  be compatible with other Linux distros and the other tools\n  creating user accounts in use on openSUSE. Set HOME_MODE to 700\n for security reasons and compatibility. [bsc#1189139] [bsc#1182850]\n\nUpdate to 4.9:\n\n* Updated translations\n* Major salt updates\n* Various coverity and cleanup fixes\n* Consistently use 0 to disable PASS_MIN_DAYS in man\n* Implement NSS support for subids and a libsubid\n* setfcap: retain setfcap when mapping uid 0\n* login.defs: include HMAC_CRYPTO_ALGO key\n* selinux fixes\n* Fix path prefix path handling\n* Manpage updates\n* Treat an empty passwd field as invalid(Haelwenn Monnier)\n* newxidmap: allow running under alternative gid\n* usermod: check that shell is executable\n* Add yescript support\n* useradd memleak fixes\n* useradd: use built-in settings by default\n* getdefs: add foreign\n* buffer overflow fixes\n* Adding run-parts style for pre and post useradd/del\n\n- login.defs/MOTD_FILE: Use '' instead of blank entry [bsc#1187536]\n- Add /etc/login.defs.d directory\n\n- Enable shadowgrp so that we can set more secure group passwords\n  using shadow.\n\n- Disable MOTD_FILE to allow the use of pam_motd to unify motd\n  message output [bsc#1185897]. Else motd entries of e.g. cockpit\n  will not be shown.\n  ","modified":"2026-04-10T09:45:15.767224Z","published":"2026-04-09T08:27:26Z","related":["CVE-2013-4235","CVE-2023-4641"],"upstream":["CVE-2013-4235","CVE-2023-4641"],"references":[{"type":"ADVISORY","url":"https://www.suse.com/support/update/announcement/-2026-1228/suse-ru-20261228-1/"},{"type":"REPORT","url":"https://bugzilla.suse.com/1144060"},{"type":"REPORT","url":"https://bugzilla.suse.com/1176006"},{"type":"REPORT","url":"https://bugzilla.suse.com/1181400"},{"type":"REPORT","url":"https://bugzilla.suse.com/1182850"},{"type":"REPORT","url":"https://bugzilla.suse.com/1185897"},{"type":"REPORT","url":"https://bugzilla.suse.com/1187536"},{"type":"REPORT","url":"https://bugzilla.suse.com/1189139"},{"type":"REPORT","url":"https://bugzilla.suse.com/1199026"},{"type":"REPORT","url":"https://bugzilla.suse.com/1203823"},{"type":"REPORT","url":"https://bugzilla.suse.com/1205502"},{"type":"REPORT","url":"https://bugzilla.suse.com/1206627"},{"type":"REPORT","url":"https://bugzilla.suse.com/1214806"},{"type":"REPORT","url":"https://bugzilla.suse.com/1246052"},{"type":"REPORT","url":"https://bugzilla.suse.com/916845"},{"type":"WEB","url":"https://www.suse.com/security/cve/CVE-2013-4235"},{"type":"WEB","url":"https://www.suse.com/security/cve/CVE-2023-4641"}],"affected":[{"package":{"name":"shadow","ecosystem":"SUSE:Linux Enterprise Module for Basesystem 15 SP7","purl":"pkg:rpm/suse/shadow&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Basesystem%2015%20SP7"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.17.2-150600.17.18.1"}]}],"ecosystem_specific":{"binaries":[{"libsubid-devel":"4.17.2-150600.17.18.1","shadow":"4.17.2-150600.17.18.1","login_defs":"4.17.2-150600.17.18.1","libsubid5":"4.17.2-150600.17.18.1"}]},"database_specific":{"source":"https://ftp.suse.com/pub/projects/security/osv/SUSE-RU-2026:1228-1.json"}},{"package":{"name":"shadow","ecosystem":"openSUSE:Leap 15.6","purl":"pkg:rpm/opensuse/shadow&distro=openSUSE%20Leap%2015.6"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.17.2-150600.17.18.1"}]}],"ecosystem_specific":{"binaries":[{"libsubid-devel":"4.17.2-150600.17.18.1","shadow":"4.17.2-150600.17.18.1","login_defs":"4.17.2-150600.17.18.1","libsubid5":"4.17.2-150600.17.18.1"}]},"database_specific":{"source":"https://ftp.suse.com/pub/projects/security/osv/SUSE-RU-2026:1228-1.json"}}],"schema_version":"1.7.5"}