Published: 21 March 2019

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.



CVSS 3 base score: 7.5


Package Release Status
Launchpad, Ubuntu, Debian
Released (2.37.4)
Ubuntu 18.04 LTS (Bionic Beaver)
Released (2.37.4+18.04)
Ubuntu 16.04 ESM (Xenial Xerus)
Released (2.37.4)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist
(trusty was released [2.37.4~14.04])
Upstream: (part 1)
Upstream: (part 2)


this 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