I have updated the bug description now.
The `sysctl crypto` command can be used to find out if a system is running in 
FIPS mode.
I believe you should be able to test and trigger the error by following the 
commands I have just added to the [Test] section.
The failure you'll see is now under the [Impact] section.

** Description changed:

  SRU Justification
  
  [Impact]
- Focal systems with fips-updates enabled cannot be upgraded to Jammy.  During
+ Some Focal systems with fips-updates enabled cannot be upgraded to Jammy. 
During
  the upgrade, there is a point where the userspace packages are upgraded to
- their Jammy version, but are run on a Focal FIPS kernel.  Specifically, the
+ their Jammy version, but are run on a Focal FIPS kernel. Specifically, the
  Jammy version of libgcrypt relies on the getrandom syscall with the 
GRND_RESEED
  flag set. This flag, however, is only implemented on the Jammy FIPS kernel. 
So,
  when the Jammy version of libgcrypt is run alongside a Focal FIPS kernel,
- a fatal error occurs.
+ a fatal error occurs as below (trimmed for readability):
+ 
+ ```
+ Fatal: unexpected error from getentropy: Invalid argument
+ fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)
+ Aborted (core dumped)
+ Processing triggers for mime-support (3.64ubuntu1) ...
+ Processing triggers for initramfs-tools (0.136ubuntu6.7) ...
+ update-initramfs: Generating /boot/initrd.img-5.4.0-1112-fips
+ Processing triggers for libc-bin (2.35-0ubuntu3.8) ...
+ Processing triggers for man-db (2.9.1-1) ...
+ Errors were encountered while processing:
+  systemd
+  systemd-timesyncd
+ Fatal: unexpected error from getentropy: Invalid argument
+ fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)
+ Fatal: unexpected error from getentropy: Invalid argument
+ fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)
+ 
+ Upgrade complete
+ 
+ The upgrade has completed but there were errors during the upgrade
+ process.
+ ```
+ 
+ After that, the system becomes unusable and running some commands
+ (like shutdown) leads to errors:
+ 
+ ```
+ Fatal: unexpected error from getentropy: Invalid argument
+ fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)
+ Aborted (core dumped)
+ ```
  
  [Fix]
- Have getrandom not reject the GRND_RESEED flag. For Focal systems, this flag
- should only be used during the upgrade process from Focal to Jammy, as the
- Jammy userspace packages running on the Focal kernel will rely on it.
+ Focal FIPS kernel: have getrandom not reject the GRND_RESEED flag. For Focal
+ systems, this flag should only be used during the upgrade process from Focal
+ to Jammy, as the Jammy userspace packages running on the Focal kernel will 
rely
+ on it.
+ 
+ ubuntu-release-upgrader: block upgrades when a FIPS kernel without the
+ aforementioned fix is running in FIPS mode.
  
  [Test]
  Summary: In a FIPS enabled machine using the fips-updates channel, test the
  upgrade from Focal to Jammy.
  
+ To trigger the error, run the following commands:
+ 
+ pro attach <your-token>
+ pro enable fips --assume-yes
+ pro enable fips-updates --assume-yes
+ grub-reboot '1>2' # or any other command to boot into the -1024 kernel from 
the "fips" channel, obtained by enabling "fips" previously
+ reboot
+ sysctl crypto # Confirm the system is in FIPS mode
+ uname -a      # Confirm you're running an unfixed version of a FIPS kernel
+ apt upgrade -y
+ do-release-upgrade
+ 
  [Where things could go wrong]
- This touches the getrandom syscall, so we have many places where things could
- go wrong. However, we are just adding another possible flag for it, and not
- really adding/removing/altering any other functionality, so the regression
- potential is low.
+ Focal FIPS kernel: this touches the getrandom syscall, so we have many places
+ where things could go wrong. However, we are just adding another possible flag
+ for it, and not really adding/removing/altering any other functionality, so 
the
+ regression potential is low.
+ 
+ [Other info]
+ - The system upgrades successfully if fips=0 is set in the kernel command 
line,
+ which can be done by editing this parameter in 
/etc/default/grub.d/99-fips.cfg,
+ running `upgrade-grub` afterwards and rebooting.
+ - Running the latest available kernels from fips-updates should also lead to a
+ successful upgrade.
+ 
  
  -------------------------------- Original Report 
-------------------------------
  Upgrade from 20.04 to 22.04 failed with "Fatal: unexpected error from 
getentropy: Invalid argument". We have fips-updates enabled thru Ubuntu pro 
subscription. Tried to upgrade from 18.04 to 22.04. Upgrade from 18.04 to 204 
is successful but upgrade from 20.04 to 22.04 failed. Apt or do-release-upgrade 
commands no longer working after the upgrade failed so we have to restore the 
host to the Ubuntu 20.04 snapshots.
  
  # lsb_release -a
  No LSB modules are available.
  Distributor ID: Ubuntu
  Description:    Ubuntu 20.04.6 LTS
  Release:        20.04
  Codename:       focal
  
  Upgrade log:
  Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
  Errors were encountered while processing:
   systemd
   ntfs-3g
   dbus
   libpam-systemd:amd64
   systemd-sysv
   libnss-systemd:amd64
   friendly-recovery
   samba-common-bin
   samba
   update-notifier-common
  Fatal: unexpected error from getentropy: Invalid argument
  fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/2055825

Title:
  fips-updates: upgrade from 20.04 to 22.04 fails

Status in linux package in Ubuntu:
  Fix Committed
Status in ubuntu-release-upgrader package in Ubuntu:
  Invalid
Status in linux source package in Focal:
  Fix Committed
Status in ubuntu-release-upgrader source package in Focal:
  Incomplete

Bug description:
  SRU Justification

  [Impact]
  Some Focal systems with fips-updates enabled cannot be upgraded to Jammy. 
During
  the upgrade, there is a point where the userspace packages are upgraded to
  their Jammy version, but are run on a Focal FIPS kernel. Specifically, the
  Jammy version of libgcrypt relies on the getrandom syscall with the 
GRND_RESEED
  flag set. This flag, however, is only implemented on the Jammy FIPS kernel. 
So,
  when the Jammy version of libgcrypt is run alongside a Focal FIPS kernel,
  a fatal error occurs as below (trimmed for readability):

  ```
  Fatal: unexpected error from getentropy: Invalid argument
  fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)
  Aborted (core dumped)
  Processing triggers for mime-support (3.64ubuntu1) ...
  Processing triggers for initramfs-tools (0.136ubuntu6.7) ...
  update-initramfs: Generating /boot/initrd.img-5.4.0-1112-fips
  Processing triggers for libc-bin (2.35-0ubuntu3.8) ...
  Processing triggers for man-db (2.9.1-1) ...
  Errors were encountered while processing:
   systemd
   systemd-timesyncd
  Fatal: unexpected error from getentropy: Invalid argument
  fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)
  Fatal: unexpected error from getentropy: Invalid argument
  fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)

  Upgrade complete

  The upgrade has completed but there were errors during the upgrade
  process.
  ```

  After that, the system becomes unusable and running some commands
  (like shutdown) leads to errors:

  ```
  Fatal: unexpected error from getentropy: Invalid argument
  fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)
  Aborted (core dumped)
  ```

  [Fix]
  Focal FIPS kernel: have getrandom not reject the GRND_RESEED flag. For Focal
  systems, this flag should only be used during the upgrade process from Focal
  to Jammy, as the Jammy userspace packages running on the Focal kernel will 
rely
  on it.

  ubuntu-release-upgrader: block upgrades when a FIPS kernel without the
  aforementioned fix is running in FIPS mode.

  [Test]
  Summary: In a FIPS enabled machine using the fips-updates channel, test the
  upgrade from Focal to Jammy.

  To trigger the error, run the following commands:

  pro attach <your-token>
  pro enable fips --assume-yes
  pro enable fips-updates --assume-yes
  grub-reboot '1>2' # or any other command to boot into the -1024 kernel from 
the "fips" channel, obtained by enabling "fips" previously
  reboot
  sysctl crypto # Confirm the system is in FIPS mode
  uname -a      # Confirm you're running an unfixed version of a FIPS kernel
  apt upgrade -y
  do-release-upgrade

  [Where things could go wrong]
  Focal FIPS kernel: this touches the getrandom syscall, so we have many places
  where things could go wrong. However, we are just adding another possible flag
  for it, and not really adding/removing/altering any other functionality, so 
the
  regression potential is low.

  [Other info]
  - The system upgrades successfully if fips=0 is set in the kernel command 
line,
  which can be done by editing this parameter in 
/etc/default/grub.d/99-fips.cfg,
  running `upgrade-grub` afterwards and rebooting.
  - Running the latest available kernels from fips-updates should also lead to a
  successful upgrade.

  
  -------------------------------- Original Report 
-------------------------------
  Upgrade from 20.04 to 22.04 failed with "Fatal: unexpected error from 
getentropy: Invalid argument". We have fips-updates enabled thru Ubuntu pro 
subscription. Tried to upgrade from 18.04 to 22.04. Upgrade from 18.04 to 204 
is successful but upgrade from 20.04 to 22.04 failed. Apt or do-release-upgrade 
commands no longer working after the upgrade failed so we have to restore the 
host to the Ubuntu 20.04 snapshots.

  # lsb_release -a
  No LSB modules are available.
  Distributor ID: Ubuntu
  Description:    Ubuntu 20.04.6 LTS
  Release:        20.04
  Codename:       focal

  Upgrade log:
  Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
  Errors were encountered while processing:
   systemd
   ntfs-3g
   dbus
   libpam-systemd:amd64
   systemd-sysv
   libnss-systemd:amd64
   friendly-recovery
   samba-common-bin
   samba
   update-notifier-common
  Fatal: unexpected error from getentropy: Invalid argument
  fatal error in libgcrypt, file ../../src/misc.c, line 146, function 
_gcry_logv: internal error (fatal or bug)

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


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

Reply via email to