A vulnerability in the seccomp filters of Canonical snapd before version
2.37.4 allows a strict mode snap to insert characters into a terminal on a
64-bit host. The seccomp rules were generated to match 64-bit ioctl(2)
commands on a 64-bit platform; however, the Linux kernel only uses the
lower 32 bits to determine which ioctl(2) commands to run. This issue
affects: Canonical snapd versions prior to 2.37.4.
jdstrandthis is a kernel limitation that is documented in the seccomp man
page, but arguably the kernel should perform the seccomp filter check on the
value that it is ultimately going to process (which likely means an
improvement to libseccomp to generate the appropriate BPF to do this)
this was further complicated by the fact that the kernel and glibc
disagree on the function prototype of ioctl, where the glibc man page
documents it as unsigned long and the kernel treats it as int (note, the
tty_ioctl man page (which is the one that documents TIOCSTI) lists the ioctl
second argument as an int)
due to miscoordination, 2.37.4 is going to -updates first as part of
the regular SRU cycle. Once that passes, we'll rebuild and publish to the
security pocket and issue a USN.
once this issue is public, the global profile initialization code
that is used to address this issue will also be made public
Source: snapd (LP Ubuntu Debian)
Upstream:released (2.37.4)
Ubuntu 12.04 ESM (Precise Pangolin):DNE
Ubuntu 14.04 ESM (Trusty Tahr):DNE (trusty was released [2.37.4~14.04])
Ubuntu 16.04 LTS (Xenial Xerus):released (2.37.4)
Ubuntu 18.04 LTS (Bionic Beaver):released (2.37.4+18.04)
Upstream: (part 1)
Upstream: (part 2)
More Information

Updated: 2020-03-18 22:54:51 UTC (commit 2ea7df7bd1e69e1e489978d2724a936eb3faa1b8)