** Description changed:

  [ Impact ]
  * When one enables FIPS mode on a Jammy system and then attempts to use 
Dovecot to create an encrypted mailbox, the module returns a invalid salt 
length error.
  
  * FIPS mode requires a 16 byte salt for PBEKDF2 and Dovecot is only
  requesting 8 bytes of salt. The solution is to modify Dovecot to request
  16 bytes of salt.
  
  [ Test Plan ]
  
  Test Setup
  
- * Add a vmail user
- - useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail
- - chown vmail:vmail /var/mail/
- - chmod 700 /var/mail/
- 
  * Install Dovecot on the system
    - sudo apt install dovecot-auth-lua dovecot-core  dovecot-gssapi 
dovecot-imapd dovecot-ldap dovecot-lmtpd  dovecot-managesieved dovecot-mysql 
dovecot-pgsql dovecot-pop3d dovecot-sieve dovecot-solr dovecot-sqlite 
dovecot-submissiond
  * Enable mailbox encryption.
    - Add /etc/dovecot/conf.d//mail-crypt.conf to enable mailbox encryption:
- mail_location = sdbox:/var/mail/%n
+ mail_location = mbox:~/mail:INBOX=/var/mail/%u
  listen = *
  mbox_write_locks = fcntl
- first_valid_uid = 1000
  namespace inbox {
    inbox = yes
    location =
    mailbox Drafts {
      special_use = \Drafts
    }
  
    mailbox Junk {
      special_use = \Junk
    }
    mailbox Sent {
      special_use = \Sent
    }
    mailbox "Sent Messages" {
      special_use = \Sent
    }
    mailbox Trash {
      special_use = \Trash
    }
    prefix =
  }
  passdb {
    driver = pam
  }
  userdb {
    driver = passwd
-   override_fields = uid=vmail gid=vmail home=/var/mail/%n/
  }
  
  mail_plugins = $mail_plugins mail_crypt
  
  plugin {
    mail_crypt_curve = secp521r1
    mail_crypt_save_version=2
  }
  
  mail_attribute_dict = file:%h/Maildir/dovecot-attributes
  imap_metadata = yes
  
  * Issue the following command to create an encrypted mailbox:
    - sudo doveadm -o 
plugin/mail_crypt_private_password=e32f1f174d7576716d5df899e7d5cb6b64cdb33584c71882e9f7e1f79f2e695e
 mailbox cryptokey generate -u <username>
  
  * Verify that no error occurs.
  
  * Enable FIPS on a Jammy system.
    - sudo pro attach <token>
    - sudo pro enable fips-updates
    - sudo reboot
  (To test FIPS on a Noble system)
    - sudo add-apt-repository ppa:fips-cc-stig/fips-under-certification
    - sudo apt install -y ubuntu-fips 
openssh-server=1:9.6p1-3ubuntu13+Fips1~rc0 \
          openssh-client=1:9.6p1-3ubuntu13+Fips1~rc0 \
          openssh-sftp-server=1:9.6p1-3ubuntu13+Fips1~rc0 \
          --allow-downgrades --yes
  
  * Reboot
  
  * Delete the mailbox
    - rm -rf ~/mail
  
  * Issue the following command to create an encrypted mailbox:
    - sudo doveadm -o 
plugin/mail_crypt_private_password=e32f1f174d7576716d5df899e7d5cb6b64cdb33584c71882e9f7e1f79f2e695e
 mailbox cryptokey generate -u <username>
  
  * Verify that an error occurs.
  
  * Update Dovecot to the fixed version.
  
  * Repeat the commands to delete the mailbox and to create an encrypted
  mailbox.
  
  * After installing the fix, verify that no error occurs.
  
  [ Where problems could occur ]
  
  * The increased salt size of 16 bytes could potentially cause issues in 
allocated data structures, but unit tests don't seem to have a probleem.
  * The patch is recent and has not been distributed in an upstream release.
  
  [ Other Info ]
  
  This is really only needed on systems where FIPS is supported, i.e.
  Jammy and Noble and 26.04, but patches have been provided for oracular,
  plucky, and questing.
  
  --------------
  We deployed Ubuntu Server 22.04 FIPS on Azure as it is now a FIPS Certified 
release.  See https://ubuntu.com/blog/fips-140-3-for-ubuntu-22-04lts
  
  ~# lsb_release -rd
  Description:    Ubuntu 22.04.5 LTS
  Release:        22.04
  
  After installing Ubuntu Server 22.04 FIPS, we then deployed Dovecot modules 
as shown here:
  --------------
  # apt search dovecot | grep "install"
  
  WARNING: apt does not have a stable CLI interface. Use with caution in
  scripts.
  
  dovecot-core/jammy-updates,jammy-security,now 1:2.3.16+dfsg1-3ubuntu2.4 amd64 
[installed]
  dovecot-imapd/jammy-updates,jammy-security,now 1:2.3.16+dfsg1-3ubuntu2.4 
amd64 [installed]
  dovecot-lmtpd/jammy-updates,jammy-security,now 1:2.3.16+dfsg1-3ubuntu2.4 
amd64 [installed]
  dovecot-managesieved/jammy-updates,jammy-security,now 
1:2.3.16+dfsg1-3ubuntu2.4 amd64 [installed]
  dovecot-mysql/jammy-updates,jammy-security,now 1:2.3.16+dfsg1-3ubuntu2.4 
amd64 [installed]
  dovecot-pop3d/jammy-updates,jammy-security,now 1:2.3.16+dfsg1-3ubuntu2.4 
amd64 [installed]
  dovecot-sieve/jammy-updates,jammy-security,now 1:2.3.16+dfsg1-3ubuntu2.4 
amd64 [installed]
  
  ~# apt-cache policy dovecot-core
  dovecot-core:
    Installed: 1:2.3.16+dfsg1-3ubuntu2.4
    Candidate: 1:2.3.16+dfsg1-3ubuntu2.4
    Version table:
   *** 1:2.3.16+dfsg1-3ubuntu2.4 500
          500 http://azure.archive.ubuntu.com/ubuntu jammy-updates/main amd64 
Packages
          500 http://azure.archive.ubuntu.com/ubuntu jammy-security/main amd64 
Packages
          100 /var/lib/dpkg/status
       1:2.3.16+dfsg1-3ubuntu2 500
          500 http://azure.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
  
  -------------
  
  We attempted to add a mailbox with encryption:
  -------------
  sudo -u vmail doveadm -o 
plugin/mail_crypt_private_password=e32f1f174d7576716d5df899e7d5cb6b64cdb33584c71882e9f7e1f79f2e695e
 mailbox cryptokey generate -u u...@domain.com
  doveadm(u...@domain.com): Error: 
mail_crypt_user_generate_keypair(u...@domain.com) failed: 
error:1C800070:Provider routines::invalid salt length
  doveadm(u...@domain.com): Warning: mailbox cryptokey generate: Nothing was 
matched. Use -U or specify mask?
     Folder Public ID
  x         ERROR: error:1C800070:Provider routines::invalid salt length
  Segmentation fault
  
  -------------
  
  After researching the error, I found a single note in the OpenSSL bug tracker 
referencing the error.
  https://github.com/openssl/openssl/issues/24962
  
  The suggested options are not available as they defeat the purpose of
  being FIPS compliant and certified.
  
  As a result, Dovecot is completely broken on 22.04 FIPS if using
  encrypted mailboxes.  (At least in our testing)
  
  Expected behavior:
  
  The SALT length should match what the required check is, which is 16
  bytes.  Dovecot should utilize an appropriate version to produce
  encryption keys using the required SALT length.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2107773

Title:
  [SRU] Enabling FIPS causes SALT to be 8 bytes, but OpenSSL 3.0.2
  checks if SALT is < 16 bytes, breaking Dovecot and possibly other
  packages.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/2107773/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to