-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 ============================================================================= FreeBSD-SA-16:18.atkbd Security Advisory The FreeBSD Project Topic: Buffer overflow in keyboard driver Category: core Module: atkbd Announced: 2016-05-17 Credits: CTurt and the HardenedBSD team Affects: All supported versions of FreeBSD. Corrected: 2016-05-17 22:29:59 UTC (stable/10, 10.3-STABLE) 2016-05-17 22:28:27 UTC (releng/10.3, 10.3-RELEASE-p3) 2016-05-17 22:28:20 UTC (releng/10.2, 10.2-RELEASE-p17) 2016-05-17 22:28:11 UTC (releng/10.1, 10.1-RELEASE-p34) 2016-05-17 22:31:12 UTC (stable/9, 9.3-STABLE) 2016-05-17 22:28:36 UTC (releng/9.3, 9.3-RELEASE-p42) CVE Name: CVE-2016-1886 For general information regarding FreeBSD Security Advisories, including descriptions of the fields above, security branches, and the following sections, please visit . I. Background The atkbd(4) driver, together with the atkbdc(4) driver, provides access to the AT 84 keyboard or the AT enhanced keyboard which is connected to the AT keyboard controller. The driver is required for the console driver syscons(4) or vt(4). The driver exposes its own ioctl(2) interface to allow it to be configured from userland through the kbdcontrol(1) utility. II. Problem Description Incorrect signedness comparison in the ioctl(2) handler allows a malicious local user to overwrite a portion of the kernel memory. III. Impact A local user may crash the kernel, read a portion of kernel memory and execute arbitrary code in kernel context. The result of executing an arbitrary kernel code is privilege escalation. IV. Workaround Disallow keymap changes for non-privileged users: sysctl hw.kbd.keymap_restrict_change=4 V. Solution Perform one of the following: 1) Upgrade your vulnerable system to a supported FreeBSD stable or release / security branch (releng) dated after the correction date. Reboot is required. 2) To update your vulnerable system via a binary patch: Systems running a RELEASE version of FreeBSD on the i386 or amd64 platforms can be updated via the freebsd-update(8) utility: # freebsd-update fetch # freebsd-update install Reboot is required. 3) To update your vulnerable system via a source code patch: The following patches have been verified to apply to the applicable FreeBSD release branches. a) Download the relevant patch from the location below, and verify the detached PGP signature using your PGP utility. # fetch https://security.FreeBSD.org/patches/SA-16:18/atkbd.patch # fetch https://security.FreeBSD.org/patches/SA-16:18/atkbd.patch.asc # gpg --verify atkbd.patch.asc b) Apply the patch. Execute the following commands as root: # cd /usr/src # patch < /path/to/patch c) Recompile your kernel as described in and reboot the system. VI. Correction details The following list contains the correction revision numbers for each affected branch. Branch/path Revision - ------------------------------------------------------------------------- stable/9/ r300093 releng/9.3/ r300088 stable/10/ r300091 releng/10.1/ r300085 releng/10.2/ r300086 releng/10.3/ r300087 - ------------------------------------------------------------------------- To see which files were modified by a particular revision, run the following command, replacing NNNNNN with the revision number, on a machine with Subversion installed: # svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base Or visit the following URL, replacing NNNNNN with the revision number: VII. References The latest revision of this advisory is available at -----BEGIN PGP SIGNATURE----- iQIcBAEBCgAGBQJXO5z8AAoJEO1n7NZdz2rns0MQAKaUrGjGn0nkFpx/PpiM6SHv s/Fj/z/qTXTUmimZloiQd9bkMh5wFMymozihVqoQVX2jwzPFm4Cql+Ez8ihTl9YX s+vMgQA8mUrinebwqXHRY+bZrwbJzsvLhAepL6vrSncPBaXM37smOmVlfjyUySWZ 61L1QPhDZIYSamAMDZFx4qkdv32nWTTaE6OImQOFWY19l2tAxUMrUsTM5zSUfSas Tq2oP4BUvI58psapMgs38UY1Bjo33E/Gd7n6FS8gUQAX1OspN1wh981oX9GHU+U1 bHY/Ihl+rqlh3Dmxp1JBP8ma2DSLXcuhrywNpE8i/dNQA4sxXXGQyuzVk24QNXbt cnV7F3nTqBpB9evhNFuHk0Z/z2Lg4cCaId+xSJjX8eWfvfjP8q+c9SblC2LdJg6V D0Gt0rbUNvSikCLDI/RYY1K5pWdjvtRN6ES+YO+sk2er9Uq/ZPrNj2SfNYguRkTV Kfwut8aQW5AQ9JTr9YGFxfqEWOzgBWutE3ysWtx6bLoROY4/vUPRBrcVDOmsiiJt QLPdf/m8VM/NH2lQoSQ44mUXvp+BdclrhM74C7GCc0RGmdEtuoC49esNKtZ+0349 Sm7Tj/3ZWfwN0x+DQnbnDUeRmI5zaU3o4VycmhFcm3eWQ+je8O8aCLKI/iPTKYO7 /OVeNnLKzp5Z7naKeHct =6GJy -----END PGP SIGNATURE-----