** Description changed:

  [Impact]
  
  This bug impacts users on AWS or Azure, trying to enable FIPS/FIPS
  updates on Focal images. Trying to install a non-cloud-optimized FIPS
  kernel may lead to unwanted behavior on those clouds, including
  inability to boot to the systems.
  
  Although Focal has a FIPS certified kernel, the AWS adapted kernel is
  not ready yet. There will be in the future a cloud-optimized version of
  the FIPS kernel, and then users will be able to install it.
  
  With the applied fix, UA will show a message saying that the kernel is
  not available instead of showing any error. If the user really wants to
  install FIPS, there is a feature override
  ("allow_default_fips_metapackage_on_focal_cloud") which will install the
  default kernel, but this is the user's choice, and not recommended.
  
  [Test Case]
- The original description has steps to reproduce. To verify the fix, install 
ubuntu-advantage-tools 27.3 and check for the expected behavior described.
+ 
+ To verify that this issue is fixed by version 27.3, please run the
+ following script:
+ 
+ ------------------------------
+ import os
+ 
+ from pycloudlib.ec2.cloud import EC2
+ 
+ 
+ api = EC2(
+     tag="test-ec2",
+     access_key_id=os.getenv("UACLIENT_BEHAVE_AWS_ACCESS_KEY_ID"),
+     secret_access_key=os.getenv("UACLIENT_BEHAVE_AWS_SECRET_ACCESS_KEY")
+ )
+ 
+ image_id = "ami-0193aa0a9df84a08b"  # Focal pro image
+ private_key_path = "ec2-{}.pem".format("test-key")
+ key_name = "test-key"
+ 
+ if key_name in api.list_keys():
+     api.delete_key(key_name)
+ 
+ keypair = api.client.create_key_pair(KeyName=key_name)
+ 
+ with open(private_key_path, "w") as stream:
+     stream.write(keypair["KeyMaterial"])
+ 
+ os.chmod(private_key_path, 0o600)
+ 
+ api.use_key(private_key_path, private_key_path, key_name)
+ vpc = api.get_or_create_vpc(name="test-ec2-pro")
+ instance = api.launch(image_id, vpc=vpc)
+ 
+ print("--- Creating base instance")
+ print(instance.execute("lsb_release -a"))
+ print(instance.execute("ua version"))
+ print(instance.execute("sudo ua enable fips --assume-yes"))
+ print("------------------")
+ 
+ print("--- Updating ua package")
+ instance.execute("sudo add-apt-repository ppa:ua-client/staging -y")
+ instance.execute("sh -c 'sudo apt-get update > /dev/null'")
+ instance.execute("sh -c 'sudo apt-get install ubuntu-advantage-tools > 
/dev/null'")
+ print(instance.execute("ua version"))
+ print(instance.execute("sudo ua enable fips --assume-yes"))
+ print("------------------")
+ instance.delete()
+ -------------------------------------------
+ 
+ This script depends on pycloudlib, which can be found here:
+ https://github.com/canonical/pycloudlib/tree/main/pycloudlib
+ 
  
  [Regression Potential]
  This change needs to make sure that we indeed prevent the installation of 
non-cloud-optimized kernels. If a corner case shows up, the user might end up 
with a wrong kernel. This is unlikely because we are using cloud-init tools, 
present in AWS and Azure, to detect the cloud instance and effective blocking 
the install. If this detection fails, it means cloud-init has some problem and 
then, on AWS or Azure, the instance will have more problems than this one.
  
  We need to make sure to keep track of the certification progress for the
  cloud adapted FIPS package, so we can enable it in the future, when it
  becomes available.
  
  [Original Description]
  For Ubuntu PRO on 20.04 (Focal) `ua enable fips` should only install a 
cloud-optimized ubuntu-aws-fips or ubuntu-azure-fips metapackage. Installing a 
non-cloud-optimized FIPS kernel on AWS and Azure could lead to inability to 
boot on certain instance types. Expectation is that Focal AWS and Azure images 
should disallow enabling either fips or fips-updates.
  
  Expected behavior on Ubuntu PRO AWS and Azure Focal:
  $ ua status | grep fips
  fips no — NIST-certified FIPS modules
  fips-updates no — Uncertified security updates to FIPS modules
  
  $ sudo ua enable fips-updates
  One moment, checking your subscription first
  This system will NOT be considered FIPS certified, but will include security
  and bug fixes to the FIPS packages.
  Are you sure? (y/N) y
  This subscription is not entitled to FIPS Updates.
  For more information see: https://ubuntu.com/advantage
  
  Actual behavior:
  $ ua status | grep fips
  fips yes disabled NIST-certified FIPS modules
  fips-updates yes disabled Uncertified security updates to FIPS modules
  
  $ sudo ua enable fips-updates
  One moment, checking your subscription first
  This system will NOT be considered FIPS certified, but will include security
  and bug fixes to the FIPS packages.
  Are you sure? (y/N) y
  Updating package lists
  Installing FIPS Updates packages
  FIPS Updates enabled
  A reboot is required to complete install
  
  # see ubuntu-fips generic get installed which potentially degrades AWS and 
Azure environments
  $ sudo grep install /var/log/ubuntu-advantage.log
  2021-08-13 22:19:07,344 - util.py:(506) [DEBUG]: Ran cmd: apt-get install 
--assume-yes -o Dpkg::Options::="--force-confdef" -o 
Dpkg::Options::="--force-confold" ubuntu-fips openssh-client 
openssh-client-hmac openssh-server openssh-server-hmac openssh-client 
openssh-client-hmac openssh-server openssh-server-hmac, rc: 0 stderr: b''

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

Title:
  Ubuntu PRO Focal on AWS and Azure should not install the generic FIPS
  kernel via ubuntu-fips metapackage

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-advantage-tools/+bug/1939932/+subscriptions


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

Reply via email to