** Description changed:

  SRU Justification:
  
  [ Impact ]
  
-  * lsblk on an s390x system that uses DASD disks shows no output.
- 
-  * journactl shows lsblk is blocked by apparmor:
-    2025-04-15T15:02:26.048075+00:00 s5lp1-gen03 kernel: audit: type=1400
-    audit(1744729346.034:270): apparmor="DENIED" operation="open"
-    class="file" profile="lsblk" name="/sys/devices/css0/
-    0.0.0000/0.0.0101/block/dasda/hidden" pid=2070 comm="lsblk"
-    requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
- 
-  * The reason is that the lsblk profile does not allow access
-    to /sys/devices/css0.
+ lsblk would segfault when run from a confined context due to missing
+ permissions on the binary execution path, and the lsblk profile need
+ rules to give m+r permissions for the binaries themselves.
  
  [ Test Plan ]
  
-  * Install Ubuntu Server 25.04 on IBM Z in LPAR, z/VM or KVM
-    using DASD ECKD disks.
- 
-  * Please notice that testing this at install time using the installer
-    shell is not sufficient, since the profile is not active at that time.
- 
-  * Ensure util-linux and the s390-tools are installed
-    (which is by default).
- 
-  * Do an lsdasd, it should list DASD ECKD disks, similar to:
-    $ lsdasd
-    Bus-ID Status Name Device Type BlkSz Size Blocks
-    
================================================================================
-    0.0.0200 active dasda 94:0 ECKD 4096 7042MB 1802880
-    0.0.0300 active dasdb 94:4 ECKD 4096 7042MB 1802880
-    0.0.0400 active dasdc 94:8 ECKD 4096 21128MB 5409000
- 
-  * Now execute lsblk (and watch the journal)
- 
-    - on a system that is not patched,
-      one will see no output in the Terminal
-      (or in case of running in a container a segfault),
-      and messages like this in the journal:
-      2025-04-15T15:02:26.048075+00:00 hwe0006 kernel: audit: type=1400
-      audit(1744729346.034:270): apparmor="DENIED" operation="open"
-      class="file" profile="lsblk" name="/sys/devices/css0/
-      0.0.0000/0.0.0200/block/dasda/hidden" pid=2070 comm="lsblk"
-      requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
-      ...
- 
-    - on a patched system, lsblk should provide a proper output
-      similar to this:
-      $ lsblk
-      NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
-      loop0 7:0 0 65.4M 1 loop
-      loop1 7:1 0 65.4M 1 loop /snap/core22/1909
-      loop2 7:2 0 39.9M 1 loop
-      loop3 7:3 0 98.7M 1 loop /snap/lxd/32454
-      loop4 7:4 0 39.9M 1 loop /snap/snapd/23776
-      loop5 7:5 0 65.4M 1 loop
-      loop6 7:6 0 100M 1 loop /snap/lxd/33109
-      loop7 7:7 0 46.2M 1 loop /snap/snapd/24506
-      loop8 7:8 0 65.4M 1 loop /snap/core22/1965
-      dasda 94:0 0 20.6G 0 disk
-      └─dasda1 94:1 0 20.6G 0 part
-        └─hwe0006--vg-hwe0006--lv 253:0 0 47.1G 0 lvm /
-      dasdb 94:4 0 6.9G 0 disk
-      ├─dasdb1 94:5 0 1G 0 part /boot
-      └─dasdb2 94:6 0 5.9G 0 part
-        └─hwe0006--vg-hwe0006--lv 253:0 0 47.1G 0 lvm /
-      dasdc 94:8 0 20.6G 0 disk
-      └─dasdc1 94:9 0 20.6G 0 part
-        └─hwe0006--vg-hwe0006--lv 253:0 0 47.1G 0 lvm /
- 
-  * (After having done 'aa-disable lsblk' lsblk would also work
-    would also work without the profile changes.)
- 
-  * As a regression test, execute lsblk also on a FCP/SCSP
-    system, to verify that nothing has changed
-    (since this was not affected).
+  * Add the following to a new file and use `apparmor_parser path/to/file` to 
load it as a profile:
+  abi <abi/4.0>,
+  include <tunables/global>
+  profile allow_all {
+    allow all,
+    priority=1 /** px,
+  }
+  * Choose a subset of the applications confined by profiles under 
profiles/apparmor.d modified by 
debian/patches/ubuntu/profiles_ensure_access_to_attach_path.patch, and for each 
selected application:
+    - Run `aa-exec -p allow_all -- lsblk`
+    - Verify that the application does not segfault on launch
+    - If application segfaults on launch only when run under confinement, 
check for apparmor="DENIED" log entry denying read or mmap operations on the 
binary path, and report verification test failure
  
  [ Where problems could occur ]
  
-  * This SRU loosens confinement on the lsblk profile. However, if a user
-    manually modified the installed profiles, then the package upgrade would
-    cause conflicts, and rejection of the incoming changes (either by hand
-    during an interactive upgrade or automatically during an batch unattended
-    upgrade) would result in end users not getting the packaged fix.
- 
-  * Check if apparmor is enabled and the profile active:
-    sudo aa-status --enabled
-    sudo aa-status --show=all | grep lsblk
- 
-  * This should not have an impact on other (disk type) devices
-    like SCSI/FCP, but better check (see test plan, last bullet).
+ The lsblk profile update loosens confinement on a profile. However, if a
+ user manually modified the installed profile, then the package upgrade
+ would cause conflicts, and rejection of the incoming changes (either by
+ hand during an interactive upgrade or automatically during an batch
+ unattended upgrade) would result in end users not getting the packaged
+ fix.
  
  [ Other Info ]
  
-  * The modification is already included in questing.
- 
-  * The patch was tested also successfully tested in plucky on s390x.
  __________
  
  Hey,
  while debugging bug 2107402 we found that there is more to fix.
  
  Running lsblk in a container on s390x hits this:
  
  [12064869.934674] audit: type=1400 audit(1744791155.353:111962):
  apparmor="DENIED" operation="file_mmap" class="file"
  namespace="root//lxd-p_<var-snap-lxd-common-lxd>" profile="lsblk"
  name="/usr/bin/lsblk" pid=3286747 comm="lsblk" requested_mask="rm"
  denied_mask="rm" fsuid=1000000 ouid=1000000
  
  To the user it just segfaults.
  
  root@p:~# lsblk
  Segmentation fault
  
  root@p:~# aa-disable lsblk
  Disabling /usr/bin/lsblk.
  
  root@p:~# lsblk
  NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
  loop0      7:0    0  93.8M  1 loop
  loop1      7:1    0    94M  1 l
  ...

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

Title:
  segfault of lsblk s390x in containers due to apparmor

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2107455/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to