CVE-2014-1737

Publication date 11 May 2014

Last updated 24 July 2024


Ubuntu priority

The raw_cmd_copyin function in drivers/block/floppy.c in the Linux kernel through 3.14.3 does not properly handle error conditions during processing of an FDRAWCMD ioctl call, which allows local users to trigger kfree operations and gain privileges by leveraging write access to a /dev/fd device. First, raw_cmd_ioctl calls raw_cmd_copyin. This function kmallocs space for a floppy_raw_cmd structure and stores the resulting allocation in the "rcmd" pointer argument. It then attempts to copy_from_user the structure from userspace. If this fails, an early EFAULT return is taken. The problem is that even if the early return is taken, the pointer to the non-/partially-initialized floppy_raw_cmd structure has already been returned via the "rcmd" pointer. Back out in raw_cmd_ioctl, it attempts to raw_cmd_free this pointer. raw_cmd_free attempts to free any DMA pages allocated for the raw command, kfrees the raw command structure itself, and follows the linked list, if any, of further raw commands (a user can specify the FD_RAW_MORE flag to signal that there are more raw commands to follow in a single FDRAWCMD ioctl). So, a malicious user can send a FDRAWCMD ioctl with a raw command argument structure that has some bytes inaccessible (ie. off the end of an allocated page). The copy_from_user will fail but raw_cmd_free will attempt to process the floppy_raw_cmd as if it had been fully initialized by the rest of raw_cmd_copyin. The user can control the arguments passed to fd_dma_mem_free and kfree (by making use of the linked-list feature and specifying the target address as a next-in-list structure).

From the Ubuntu Security Team

Matthew Daley reported a flaw in the handling of ioctl commands by the floppy disk driver in the Linux kernel. An unprivileged local user could exploit this flaw to gain administrative privileges if the floppy disk module is loaded.

Read the notes from the security team

Status

Package Ubuntu Release Status
linux 17.04 zesty
Not affected
16.10 yakkety
Not affected
16.04 LTS xenial
Not affected
15.10 wily
Not affected
15.04 vivid
Not affected
14.10 utopic
Not affected
14.04 LTS trusty
Fixed 3.13.0-27.50
13.10 saucy
Fixed 3.11.0-22.38
12.10 quantal Ignored end of life, was pending
12.04 LTS precise
Fixed 3.2.0-63.95
10.04 LTS lucid
Fixed 2.6.32-60.122
linux-armadaxp 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Ignored end of life, was pending
12.04 LTS precise
Fixed 3.2.0-1633.47
10.04 LTS lucid Not in release
linux-aws 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial
Not affected
14.04 LTS trusty
Not affected
12.04 LTS precise Not in release
linux-ec2 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid
Fixed 2.6.32-364.77
linux-flo 17.04 zesty Not in release
16.10 yakkety
Not affected
16.04 LTS xenial
Not affected
15.10 wily
Not affected
15.04 vivid
Not affected
14.10 utopic
Not affected
14.04 LTS trusty Ignored end of life, was needed
13.10 saucy Not in release
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Not in release
linux-fsl-imx51 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Ignored end of life
linux-gke 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial
Not affected
14.04 LTS trusty Not in release
12.04 LTS precise Not in release
linux-goldfish 17.04 zesty
Not affected
16.10 yakkety
Not affected
16.04 LTS xenial
Not affected
15.10 wily
Not affected
15.04 vivid
Not affected
14.10 utopic
Not affected
14.04 LTS trusty Ignored end of life, was needed
13.10 saucy Ignored
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Not in release
linux-grouper 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Ignored end of life
14.04 LTS trusty Not in release
13.10 saucy Ignored
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Not in release
linux-hwe 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial
Not affected
14.04 LTS trusty Not in release
12.04 LTS precise Not in release
linux-hwe-edge 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial
Not affected
14.04 LTS trusty Not in release
12.04 LTS precise Not in release
linux-linaro-omap 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Ignored end of life
12.04 LTS precise Ignored end of life
10.04 LTS lucid Not in release
linux-linaro-shared 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Ignored end of life
12.04 LTS precise Ignored end of life
10.04 LTS lucid Not in release
linux-linaro-vexpress 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Ignored end of life
12.04 LTS precise Ignored end of life
10.04 LTS lucid Not in release
linux-lts-quantal 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Not in release
12.04 LTS precise
Fixed 3.5.0-51.76~precise1
10.04 LTS lucid Not in release
linux-lts-raring 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Not in release
12.04 LTS precise
Fixed 3.8.0-41.60~precise1
10.04 LTS lucid Not in release
linux-lts-saucy 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Not in release
12.04 LTS precise
Fixed 3.11.0-22.38~precise1
10.04 LTS lucid Not in release
linux-lts-trusty 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Not in release
12.04 LTS precise
Fixed 3.13.0-27.50~precise1
10.04 LTS lucid Not in release
linux-lts-utopic 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Not in release
linux-lts-vivid 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Not in release
linux-lts-wily 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.04 LTS trusty Not in release
12.04 LTS precise Not in release
linux-lts-xenial 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.04 LTS trusty
Not affected
12.04 LTS precise Not in release
linux-maguro 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Ignored
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Not in release
linux-mako 17.04 zesty Not in release
16.10 yakkety
Not affected
16.04 LTS xenial
Not affected
15.10 wily
Not affected
15.04 vivid
Not affected
14.10 utopic
Not affected
14.04 LTS trusty Ignored end of life, was needed
13.10 saucy Ignored
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Not in release
linux-manta 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily
Not affected
15.04 vivid
Not affected
14.10 utopic
Not affected
14.04 LTS trusty Ignored end of life, was needed
13.10 saucy Ignored
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Not in release
linux-mvl-dove 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Not in release
12.04 LTS precise Not in release
10.04 LTS lucid Ignored end of life
linux-qcm-msm 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy Not in release
12.10 quantal Ignored end of life
12.04 LTS precise Ignored end of life
10.04 LTS lucid Ignored end of life
linux-raspi2 17.04 zesty
Not affected
16.10 yakkety
Not affected
16.04 LTS xenial
Not affected
15.10 wily
Not affected
15.04 vivid Not in release
14.04 LTS trusty Not in release
12.04 LTS precise Not in release
linux-snapdragon 17.04 zesty
Not affected
16.10 yakkety
Not affected
16.04 LTS xenial
Not affected
15.10 wily Not in release
14.04 LTS trusty Not in release
12.04 LTS precise Not in release
linux-ti-omap4 17.04 zesty Not in release
16.10 yakkety Not in release
16.04 LTS xenial Not in release
15.10 wily Not in release
15.04 vivid Not in release
14.10 utopic Not in release
14.04 LTS trusty Not in release
13.10 saucy
Fixed 3.5.0-242.58
12.10 quantal Ignored end of life, was pending
12.04 LTS precise
Fixed 3.2.0-1446.65
10.04 LTS lucid Not in release

Notes


jdstrand

android kernels (goldfish, grouper, maguro, mako and manta) are not supported on the Ubuntu Touch 13.10 preview kernels android kernels (flo, goldfish, grouper, maguro, mako and manta) are not supported on the Ubuntu Touch 14.04 preview kernels

Patch details

For informational purposes only. We recommend not to cherry-pick updates. How can I get the fixes?

Package Patch details
linux

References

Related Ubuntu Security Notices (USN)

    • USN-2220-1
    • Linux kernel (EC2) vulnerabilities
    • 26 May 2014
    • USN-2226-1
    • Linux kernel vulnerabilities
    • 27 May 2014
    • USN-2223-1
    • Linux kernel (Quantal HWE) vulnerabilities
    • 27 May 2014
    • USN-2260-1
    • Linux kernel (Trusty HWE) vulnerabilities
    • 27 June 2014
    • USN-2219-1
    • Linux kernel vulnerabilities
    • 26 May 2014
    • USN-2224-1
    • Linux kernel (Raring HWE) vulnerabilities
    • 27 May 2014
    • USN-2225-1
    • Linux kernel (Saucy HWE) vulnerabilities
    • 27 May 2014
    • USN-2221-1
    • Linux kernel vulnerabilities
    • 26 May 2014
    • USN-2228-1
    • Linux kernel vulnerabilities
    • 27 May 2014
    • USN-2227-1
    • Linux kernel (OMAP4) vulnerabilities
    • 27 May 2014

Other references