@Ryan, I've added an SRU justification.
Would you mind having a look at it, and in case it's ok uploading this SRU to 
plucky again?

** 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 unprivileged_userns profile does not
+    have access to /.
+    
+   * In case of running lsblk in a container the lsblk command
+    will even segfault, instead of returning just nothing.
+    
+ [ Fix ]
+ 
+  * unprivileged_userns profile: Allow full file system access
+    
https://gitlab.com/apparmor/apparmor/-/commit/8138bc60d18a7939af766c322586c4268e2940e3
+ 
+ [ 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 ork without the profile changes.)
+ 
+  * As a regression test execute lsblk also on a FCP/SCSP
+    system, to verify that nothing has changes
+    (since this was not affected).
+ 
+ [ Where problems could occur ]
+ 
+  * The changes in profiles/apparmor.d/unprivileged_userns
+    are relatively small, just:
+    - allow file rwlkm /**,
+    + allow file rwlkm /{,**},
+    but expand the prvilidges a bit.
+    
+  * Check if apparmor is enabled and the profile active:
+    sudo aa-status --enabled
+    sudo aa-status --show=all | grep unprivileged_userns
+    
+  * This should not have an impact on other (disk type) devices
+    like SCSI/FCP, but better check (see test plan, last bullet).
+ 
+ [ Other Info ]
+ 
+  * The modification is already included in questing.
+  
+  * The patch was tested also successfully tested in plucky on s390x.
+  
+  * Since the issue and the tests are very similar in LP#2107455
+    and LP#2107402. Hence this SRU justification was added
+    to both of these two LP bugs.
+ __________
+ 
  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 
+ 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
Touch seeded packages, which is subscribed to apparmor in Ubuntu.
https://bugs.launchpad.net/bugs/2107455

Title:
  segfault of lsblk s390x in containers due to apparmor

Status in Ubuntu on IBM z Systems:
  Confirmed
Status in apparmor package in Ubuntu:
  Fix Released

Bug description:
  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 unprivileged_userns profile does not
     have access to /.
     
    * In case of running lsblk in a container the lsblk command
     will even segfault, instead of returning just nothing.
     
  [ Fix ]

   * unprivileged_userns profile: Allow full file system access
     
https://gitlab.com/apparmor/apparmor/-/commit/8138bc60d18a7939af766c322586c4268e2940e3

  [ 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 ork without the profile changes.)

   * As a regression test execute lsblk also on a FCP/SCSP
     system, to verify that nothing has changes
     (since this was not affected).

  [ Where problems could occur ]

   * The changes in profiles/apparmor.d/unprivileged_userns
     are relatively small, just:
     - allow file rwlkm /**,
     + allow file rwlkm /{,**},
     but expand the prvilidges a bit.
     
   * Check if apparmor is enabled and the profile active:
     sudo aa-status --enabled
     sudo aa-status --show=all | grep unprivileged_userns
     
   * This should not have an impact on other (disk type) devices
     like SCSI/FCP, but better check (see test plan, last bullet).

  [ Other Info ]

   * The modification is already included in questing.
   
   * The patch was tested also successfully tested in plucky on s390x.
   
   * Since the issue and the tests are very similar in LP#2107455
     and LP#2107402. Hence this SRU justification was added
     to both of these two LP bugs.
  __________

  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
  ...

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2107455/+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