Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-101552

cyrus-sasl-lib 2.1.28-27.el10 - sasldb authentication mechanism is not working anymore

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done-Errata
    • Icon: Major Major
    • rhel-10.1
    • CentOS Stream 10, rhel-10.0
    • cyrus-sasl
    • None
    • cyrus-sasl-2.1.28-29.el10
    • Yes
    • Important
    • 1
    • rhel-idm-ipa
    • 2
    • None
    • Iteration 2
    • x86_64
    • None

      After upgrading to cyrus-sasl-lib version 2.1.28-27.el10, the sasldb authentication mechanism fails to work correctly. The sasldb tries to create the database file named %{gdbm_db_file} instead of using the actual expected database file path.

      This appears to be a build-time macro substitution error — the macro %{gdbm_db_file} was not replaced with the correct file path during the build, causing sasldb to attempt to create a file literally named %{gdbm_db_file} rather than the intended DB file.

      Steps to reproduce:

      1. Install or upgrade to cyrus-sasl-lib-2.1.28-27.el10.
      1. Attempt to authenticate using the sasldb mechanism.
      1. Observe the creation of a database file named %{gdbm_db_file} (or sasldb failing due to invalid DB path).

      Expected behavior:
      sasldb should create and use the correct database file for storing authentication credentials.

      Actual behavior:
      sasldb tries to create a database file literally named %{gdbm_db_file}{}, indicating a build macro substitution failure.

      Impact:
      Authentication relying on the sasldb mechanism is broken, potentially causing service outages or failed logins where sasldb is used.

      Environment:

      • OS: AlmaLinux 10)
      • Package version: cyrus-sasl-lib-2.1.28-27.el10
      • Logs

      [root@smtp ~]# strace -e trace=open,openat /usr/sbin/saslauthd -a sasldb -V -r -d -m /run/saslauthd
      openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libpam.so.0", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libldap.so.2", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/liblber.so.2", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libcrypto.so.3", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libgdbm.so.6", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libcrypt.so.2", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libk5crypto.so.3", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libkrb5support.so.0", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libkeyutils.so.1", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libaudit.so.1", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libeconf.so.0", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libevent-2.1.so.7", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libsasl2.so.3", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libssl.so.3", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libcap-ng.so.0", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib64/libpcre2-8.so.0", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/proc/sys/kernel/cap_last_cap", O_RDONLY) = 3
      saslauthd[26465] :num_procs  : 5
      openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 4
      saslauthd[26465] :mech_option: NULL
      saslauthd[26465] :run_path   : /run/saslauthd
      saslauthd[26465] :auth_mech  : sasldb
      openat(AT_FDCWD, "/run/saslauthd/saslauthd.pid.lock", O_RDWR|O_CREAT|O_TRUNC, 0644) = 4
      openat(AT_FDCWD, "/run/saslauthd/mux.accept", O_RDWR|O_CREAT|O_TRUNC, 0600) = 7
      saslauthd[26465] :using accept lock file: /run/saslauthd/mux.accept
      saslauthd[26465] :master pid is: 0
      saslauthd[26465] :listening on socket: /run/saslauthd/mux
      saslauthd[26465] :using process model
      saslauthd[26466] :acquired accept lock
      saslauthd[26465] :forked child: 26466
      saslauthd[26465] :forked child: 26467
      saslauthd[26465] :forked child: 26468
      saslauthd[26465] :forked child: 26469
      saslauthd[26466] :released accept lock
      saslauthd[26467] :acquired accept lock
      openat(AT_FDCWD, "%{gdbm_db_file}", O_RDONLY) = -1 ENOENT (No such file or directory)
      saslauthd[26465] :auth failure: [user=evil] [service=smtp] [realm=] [mech=sasldb] [reason=Unknown]
      saslauthd[26465] :response: NO

      •  

              rhn-engineering-rcrit Rob Crittenden
              evil-1 catalin magdo (Inactive)
              Rob Crittenden Rob Crittenden
              Michal Polovka Michal Polovka
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: