CVE Vulnerabilities

CVE-2016-7912

Use After Free

Published: Nov 16, 2016 | Modified: Apr 12, 2025
CVSS 3.x
7.8
HIGH
Source:
NVD
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
CVSS 2.x
9.3 HIGH
AV:N/AC:M/Au:N/C:C/I:C/A:C
RedHat/V2
9.3 MODERATE
AV:N/AC:M/Au:N/C:C/I:C/A:C
RedHat/V3
7.8 MODERATE
CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Ubuntu
MEDIUM
root.io logo minimus.io logo echo.ai logo

Use-after-free vulnerability in the ffs_user_copy_worker function in drivers/usb/gadget/function/f_fs.c in the Linux kernel before 4.5.3 allows local users to gain privileges by accessing an I/O data structure after a certain callback call.

Weakness

The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory “belongs” to the code that operates on the new pointer.

Affected Software

NameVendorStart VersionEnd Version
Linux_kernelLinux3.15 (including)3.16.40 (excluding)
Linux_kernelLinux3.17 (including)4.1.24 (excluding)
Linux_kernelLinux4.2 (including)4.4.9 (excluding)
Linux_kernelLinux4.5 (including)4.5.3 (excluding)
LinuxUbuntuesm-infra/xenial*
LinuxUbuntuupstream*
LinuxUbuntuvivid/ubuntu-core*
LinuxUbuntuxenial*
Linux-armadaxpUbuntuupstream*
Linux-awsUbuntuupstream*
Linux-azureUbuntuupstream*
Linux-euclidUbuntuupstream*
Linux-floUbuntutrusty*
Linux-floUbuntuupstream*
Linux-gcpUbuntuupstream*
Linux-gkeUbuntuupstream*
Linux-goldfishUbuntutrusty*
Linux-goldfishUbuntuupstream*
Linux-grouperUbuntutrusty*
Linux-grouperUbuntuupstream*
Linux-hweUbuntuupstream*
Linux-hwe-edgeUbuntuupstream*
Linux-kvmUbuntuupstream*
Linux-linaro-omapUbuntuprecise*
Linux-linaro-omapUbuntuupstream*
Linux-linaro-sharedUbuntuprecise*
Linux-linaro-sharedUbuntuupstream*
Linux-linaro-vexpressUbuntuprecise*
Linux-linaro-vexpressUbuntuupstream*
Linux-lts-quantalUbuntuprecise*
Linux-lts-quantalUbuntuprecise/esm*
Linux-lts-quantalUbuntuupstream*
Linux-lts-raringUbuntuprecise*
Linux-lts-raringUbuntuprecise/esm*
Linux-lts-raringUbuntuupstream*
Linux-lts-saucyUbuntuprecise*
Linux-lts-saucyUbuntuprecise/esm*
Linux-lts-saucyUbuntuupstream*
Linux-lts-trustyUbuntuupstream*
Linux-lts-utopicUbuntutrusty*
Linux-lts-utopicUbuntuupstream*
Linux-lts-vividUbuntutrusty*
Linux-lts-vividUbuntutrusty/esm*
Linux-lts-vividUbuntuupstream*
Linux-lts-wilyUbuntutrusty*
Linux-lts-wilyUbuntuupstream*
Linux-lts-xenialUbuntuesm-infra-legacy/trusty*
Linux-lts-xenialUbuntutrusty*
Linux-lts-xenialUbuntutrusty/esm*
Linux-lts-xenialUbuntuupstream*
Linux-maguroUbuntutrusty*
Linux-maguroUbuntuupstream*
Linux-makoUbuntutrusty*
Linux-makoUbuntuupstream*
Linux-mantaUbuntutrusty*
Linux-mantaUbuntuupstream*
Linux-oemUbuntuupstream*
Linux-qcm-msmUbuntuprecise*
Linux-qcm-msmUbuntuupstream*
Linux-raspi2Ubuntuupstream*
Linux-raspi2Ubuntuvivid/ubuntu-core*
Linux-raspi2Ubuntuxenial*
Linux-snapdragonUbuntuupstream*
Linux-snapdragonUbuntuxenial*
Linux-ti-omap4Ubuntuupstream*

Potential Mitigations

References