------- Comment From s...@de.ibm.com 2020-07-24 10:47 EDT------- I've found the relevant code. It's the flatpak package. For a test on my s390x machine, I've just changed the check from arg 0 to arg 1: diff -uNr ./flatpak-1.6.3/common/flatpak-run.orig.c ./flatpak-1.6.3/common/flatpak-run.c --- ./flatpak-1.6.3/common/flatpak-run.orig.c 2020-07-24 15:57:17.583312438 +0200 +++ ./flatpak-1.6.3/common/flatpak-run.c 2020-07-24 16:23:35.880965987 +0200 @@ -2632,7 +2632,7 @@ {SCMP_SYS (unshare)}, {SCMP_SYS (mount)}, {SCMP_SYS (pivot_root)}, - {SCMP_SYS (clone), &SCMP_A0 (SCMP_CMP_MASKED_EQ, CLONE_NEWUSER, CLONE_NEWUSER)}, + {SCMP_SYS (clone), &SCMP_A1 (SCMP_CMP_MASKED_EQ, CLONE_NEWUSER, CLONE_NEWUSER)},
/* Don't allow faking input to the controlling tty (CVE-2017-5226) */ {SCMP_SYS (ioctl), &SCMP_A1 (SCMP_CMP_MASKED_EQ, 0xFFFFFFFFu, (int) TIOCSTI)}, Note: I've also looked into the "groovy" flatpak (1.8.1-1) source-code. There the code looks the same. Afterwards, the seccomp filter looks like: line CODE JT JF K ================================= 0000: 0x20 0x00 0x00 0x00000004 A = arch 0001: 0x15 0x00 0x1f 0x80000016 if (A != ARCH_S390X) goto 0033 0002: 0x20 0x00 0x00 0x00000000 A = sys_number 0003: 0x15 0x1c 0x00 0x00000015 if (A == mount) goto 0032 0004: 0x15 0x1b 0x00 0x00000033 if (A == acct) goto 0032 0005: 0x15 0x1a 0x00 0x00000056 if (A == uselib) goto 0032 0006: 0x15 0x19 0x00 0x00000067 if (A == syslog) goto 0032 0007: 0x15 0x18 0x00 0x00000083 if (A == quotactl) goto 0032 0008: 0x15 0x17 0x00 0x000000d9 if (A == pivot_root) goto 0032 0009: 0x15 0x16 0x00 0x0000010c if (A == mbind) goto 0032 0010: 0x15 0x15 0x00 0x0000010d if (A == get_mempolicy) goto 0032 0011: 0x15 0x14 0x00 0x0000010e if (A == set_mempolicy) goto 0032 0012: 0x15 0x13 0x00 0x00000116 if (A == add_key) goto 0032 0013: 0x15 0x12 0x00 0x00000117 if (A == request_key) goto 0032 0014: 0x15 0x11 0x00 0x00000118 if (A == keyctl) goto 0032 0015: 0x15 0x10 0x00 0x0000011f if (A == migrate_pages) goto 0032 0016: 0x15 0x0f 0x00 0x0000012f if (A == unshare) goto 0032 0017: 0x15 0x0e 0x00 0x00000136 if (A == move_pages) goto 0032 0018: 0x15 0x00 0x05 0x00000036 if (A != ioctl) goto 0024 0019: 0x20 0x00 0x00 0x00000018 A = cmd # ioctl(fd, cmd, arg) 0020: 0x54 0x00 0x00 0x00000000 A &= 0x0 0021: 0x15 0x00 0x09 0x00000000 if (A != 0) goto 0031 0022: 0x20 0x00 0x00 0x0000001c A = cmd >> 32 # ioctl(fd, cmd, arg) 0023: 0x15 0x08 0x07 0x00005412 if (A == 0x5412) goto 0032 else goto 0031 0024: 0x15 0x00 0x06 0x00000078 if (A != clone) goto 0031 0025: 0x20 0x00 0x00 0x00000018 A = newsp # clone(clone_flags, newsp, parent_tidptr, child_tidptr, tls) 0026: 0x54 0x00 0x00 0x00000000 A &= 0x0 0027: 0x15 0x00 0x03 0x00000000 if (A != 0) goto 0031 0028: 0x20 0x00 0x00 0x0000001c A = newsp >> 32 # clone(clone_flags, newsp, parent_tidptr, child_tidptr, tls) => Now argument 1 (on s390x: flags; on x86_64: stack-pointer) is checked and clone works as expected. 0029: 0x54 0x00 0x00 0x10000000 A &= 0x10000000 0030: 0x15 0x01 0x00 0x10000000 if (A == 268435456) goto 0032 0031: 0x06 0x00 0x00 0x7fff0000 return ALLOW 0032: 0x06 0x00 0x00 0x00050001 return ERRNO(1) 0033: 0x06 0x00 0x00 0x00000000 return KILL Then I've rebuild flatpak-builder 1.0.11 and the testsuite runs fine: ============================================================================ Testsuite summary for flatpak-builder 1.0.11 ============================================================================ # TOTAL: 19 # PASS: 19 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ Please report these insights to the flatpak project. The real fix needs to use SCMP_A1 at least for SCMP_ARCH_S390X and SCMP_ARCH_S390. Perhaps there is a further architecture with a different order? ** CVE added: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5226 -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to make-dfsg in Ubuntu. https://bugs.launchpad.net/bugs/1886814 Title: posix_spawn usage in gnu make causes failures on s390x Status in Ubuntu on IBM z Systems: Triaged Status in glibc package in Ubuntu: New Status in linux package in Ubuntu: Incomplete Status in make-dfsg package in Ubuntu: New Bug description: posix_spawn usage in gnu make causes failures on s390x Recently in gnu-make v4.3 https://paste.ubuntu.com/p/tYhbJFKN76/ it started to use posix_spawn, instead of fork()/exec(). This has caused failure of an unrelated package flatpak-builder autopkgtests on s390x only, like so echo Building make: echo: Operation not permitted make: *** [Makefile:2: all] Error 127 Julian Klaude investigated this in-depth. His earlier research also indicated that this is a heisenbug, if one tries to print to stderr before printing to stdout, no issue occurs. We are configuring GNU make to be build with --disable-posix-spawn on s390x only. We passed these details to Debian https://bugs.debian.org /cgi-bin/bugreport.cgi?bug=964541 too. But I do wonder, if there is something different or incorrect about posix_spawn() implementation in either glibc, or linux kernel, on s390x. Or gnu-make's usage of posix_spawn(). As otherise, using posix_spawn() in gnu-make works on other architectures, and flatpak-builder autopkgtests pass too. It seems very weird that stdout does not appear to be functional, unless stderr was opened/written to, from gnu-make execution compiled with posix-spawn feature. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/1886814/+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