This bug was fixed in the package openldap -
2.5.14+dfsg-0ubuntu0.22.04.2

---------------
openldap (2.5.14+dfsg-0ubuntu0.22.04.2) jammy; urgency=medium

  * Build the passwd/sha2 contrib module with -fno-strict-aliasing to
    avoid computing an incorrect SHA256 hash with some versions of the
    compiler (LP: #2000817):
    - d/t/{control,sha2-contrib}: test to verify the SHA256 hash
      produced by passwd/sha2
    - d/rules: set -fno-strict-aliasing only when building the
      passwd/sha2 contrib module

 -- Andreas Hasenack <andr...@canonical.com>  Sun, 12 Mar 2023 14:11:53
-0300

** Changed in: openldap (Ubuntu Jammy)
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to openldap in Ubuntu.
https://bugs.launchpad.net/bugs/2000817

Title:
  Wrong SHA256-value computed on kinetic

Status in openldap package in Ubuntu:
  Fix Released
Status in openldap source package in Jammy:
  Fix Released
Status in openldap source package in Kinetic:
  Fix Released
Status in openldap source package in Lunar:
  Fix Released
Status in openldap package in Debian:
  Fix Released

Bug description:
  [ Impact ]

  OpenLDAP deployments using the contrib pw-sha2 module are not able to
  authenticate their users because the SHA2 calculation is done
  incorrectly.

  Even though this is a contrib module, from an upstream PoV, it is
  shipped in the Ubuntu (and Debian) OpenLDAP packages, and available
  for use.

  Some fix possibilities were discussed in comment #5, and we selected
  the one with the least impact to OpenLDAP users at large, which is to
  recompile that module only without the strict-aliasing optimization.

  This update makes that change, and also includes a DEP8 change to
  verify it.

  We didn't use a patch for the pw-sha2 Makefile because d/rules
  overrides the OPT variable in the make command line
  
(https://git.launchpad.net/~ahasenack/ubuntu/+source/openldap/tree/debian/rules?h=lunar-
  slapd-sha2-2000817#n44)

  [ Test Plan ]

  # Install slapd and openssl
  $ sudo apt install slapd openssl

  # Run the following script

  #!/bin/bash

  reference_hash="{SHA256}$(echo -n secret | openssl dgst -sha256 -binary | 
openssl enc -base64)"
  test_hash=$(slappasswd -s secret -h '{SHA256}' -o module-load=pw-sha2)

  echo "Reference hash of \"secret\" (openssl): ${reference_hash}"
  echo "slapd's pw-sha2 hash:                 ${test_hash}"

  if [ "${reference_hash}" != "${test_hash}" ]; then
      echo "ERROR: hashes differ"
      exit 1
  else
      echo "PASS: hashes are identical"
  fi

  With the affected openldap package installed, the script should print
  an error. With the packages from proposed, the hashes should be
  identical.

  [ Where problems could occur ]

  The fix is a change of a compiler option strictly when building only
  the pw-sha2 module, so it's very localized. It could affect the
  performance of this module (for the worse), but it's already not
  working correctly.

  [ Other Info ]
  Not at this time.

  [Original Description]

  The OpenLDAP-contrib module sha2 (located in contrib/slapd-
  modules/passwd/sha2/) computes a wrong SHA256/SSHA256-hash on Ubuntu
  kinetic. This breaks our current password-authentication in ldap.

  The problematic computation:

      $ slappasswd -s secret -h '{SHA256}' -o module-load=pw-sha2
      {SHA256}WIrrpN3OjEVOUf6yrH1j+o+ODuUuNBo979Od4UXnu54=

  The (correct) reference-value on the same system (or older ubuntu
  Versions):

      $ echo -n "secret" | openssl dgst -sha256 -binary | openssl enc -base64
      K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=

  We nailed the problem down to a bug in the gcc-optimizer for strict-
  aliasing. so most probably the gcc-version on kinetic (v12.2.0) is the
  reason. The workaround is to compile the sha2-Module with the flag
  "-fno-strict-aliasing". Then the correct value is computed. An example
  taken from a git-compiled version of OpenLDAP 2.5.13:

      $ ./servers/slapd/slappasswd -T passwd -s secret -h '{SHA256}' -o 
module-load=pw-sha2 -o module-path=contrib/slapd-modules/passwd/sha2/.libs
      {SHA256}K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=

  Ubuntu:

      Description:    Ubuntu 22.10
      Release:        22.10

      OpenLDAP-Package: 2.5.13+dfsg-1ubuntu1

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


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to