CVE-2016-9756
Medium · 5.5CVSS
5.5
EPSS
0.5%
Published
Dec 28, 2016
CISA due date
—
Cloudanix analysis
A coding mistake in older Linux kernels could let someone already logged into the computer peek at secret data stored inside the operating system's own memory.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Data Exposure
- Component
- OS kernel
- Class
- Information Disclosure
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The KVM x86 emulator in arch/x86/kvm/emulate.c fails to initialize the Code Segment (CS) register on certain error paths, exposing uninitialized kernel stack contents to local user-space processes.
Why it matters to the business
Local attackers on unpatched Linux systems can obtain sensitive kernel memory that may contain credentials or other secrets, increasing the chance of privilege escalation or data theft on affected hosts.
How an attack unfolds
An attacker with local access compiles and runs a crafted program that forces the KVM emulator into an error path where the CS register was never properly set, then reads the leaked stack bytes from the returned structure.
How to fix it
Upgrade the Linux kernel to a version that includes commit 2117d5398c81554fbf803f5fd1dc55eb78216c0c (or any later equivalent that properly initializes CS).
How to confirm the fix worked
Verify the running kernel source contains the referenced commit or that the CS initialization occurs before any error return in emulate.c; recompile and test with a minimal reproducer if needed.
Typical attack path
- Gain a local shell on a system running a vulnerable kernel
- Execute a user-space program that triggers the specific KVM error condition
- Read and parse the leaked kernel stack memory returned to the process
How to detect it
Review system logs for unexpected KVM emulation faults and audit local process execution that interacts with /dev/kvm; correlate with user activity around the time of any observed information leaks.
What your security team should do
- Apply the kernel update containing the listed commit on all affected systems
- Limit local user accounts and KVM access to trusted users only
- Include the kernel package in regular patching cycles and vulnerability scans
The record
arch/x86/kvm/emulate.c in the Linux kernel before 4.8.12 does not properly initialize Code Segment (CS) in certain error cases, which allows local users to obtain sensitive information from kernel stack memory via a crafted application.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | linux | 0 | 4.8.15-1 |
| Debian:12 | linux | 0 | 4.8.15-1 |
| Debian:13 | linux | 0 | 4.8.15-1 |
| Debian:14 | linux | 0 | 4.8.15-1 |
| Debian:7 | linux | 0 | 3.2.84-1 |
| Mageia:5 | kernel | 0 | 4.4.36-2.mga5 |
| Mageia:5 | kernel-linus | 0 | 4.4.39-1.mga5 |
| Mageia:5 | kernel-tmb | 0 | 4.4.39-1.mga5 |
| Mageia:5 | kernel-userspace-headers | 0 | 4.4.36-2.mga5 |
| Mageia:5 | kmod-vboxadditions | 0 | 5.1.10-2.1.mga5 |
| Mageia:5 | kmod-virtualbox | 0 | 5.1.10-2.1.mga5 |
| Mageia:5 | kmod-xtables-addons | 0 | 2.10-17.mga5 |
| SUSE:Linux Enterprise Desktop 12 SP1 | kernel-default | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | kernel-source | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | kernel-syms | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | kernel-xen | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Live Patching 12 | kgraft-patch-SLE12-SP1_Update_12 | 0 | 1-4.1 |
| SUSE:Linux Enterprise Module for Public Cloud 12 | kernel-ec2 | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Module for Public Cloud 12 | kernel-ec2 | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | kernel-default | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | kernel-ec2 | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | kernel-pae | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | kernel-source | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | kernel-syms | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | kernel-trace | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | kernel-xen | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Real Time 11 SP4 | kernel-rt | 0 | 3.0.101.rt130-68.1 |
| SUSE:Linux Enterprise Real Time 11 SP4 | kernel-rt_trace | 0 | 3.0.101.rt130-68.1 |
| SUSE:Linux Enterprise Real Time 11 SP4 | kernel-source-rt | 0 | 3.0.101.rt130-68.1 |
| SUSE:Linux Enterprise Real Time 11 SP4 | kernel-syms-rt | 0 | 3.0.101.rt130-68.1 |
| SUSE:Linux Enterprise Real Time 12 SP1 | kernel-compute | 0 | 3.12.69-60.30.1 |
| SUSE:Linux Enterprise Real Time 12 SP1 | kernel-compute_debug | 0 | 3.12.69-60.30.1 |
| SUSE:Linux Enterprise Real Time 12 SP1 | kernel-rt | 0 | 3.12.69-60.30.1 |
| SUSE:Linux Enterprise Real Time 12 SP1 | kernel-rt_debug | 0 | 3.12.69-60.30.1 |
| SUSE:Linux Enterprise Real Time 12 SP1 | kernel-source-rt | 0 | 3.12.69-60.30.1 |
| SUSE:Linux Enterprise Real Time 12 SP1 | kernel-syms-rt | 0 | 3.12.69-60.30.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | kernel-default | 0 | 3.0.101-0.7.53.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | kernel-ec2 | 0 | 3.0.101-0.7.53.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | kernel-pae | 0 | 3.0.101-0.7.53.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | kernel-source | 0 | 3.0.101-0.7.53.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | kernel-syms | 0 | 3.0.101-0.7.53.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | kernel-trace | 0 | 3.0.101-0.7.53.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | kernel-xen | 0 | 3.0.101-0.7.53.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | kernel-bigsmp | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | kernel-default | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | kernel-ec2 | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | kernel-pae | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | kernel-source | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | kernel-syms | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | kernel-trace | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | kernel-xen | 0 | 3.0.101-0.47.96.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-bigmem | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-default | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-ec2 | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-pae | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-ppc64 | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-source | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-syms | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-trace | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 11 SP4 | kernel-xen | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server 12 SP1 | kernel-default | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Server 12 SP1 | kernel-source | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Server 12 SP1 | kernel-syms | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Server 12 SP1 | kernel-xen | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Server 12-LTSS | kernel-default | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Server 12-LTSS | kernel-source | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Server 12-LTSS | kernel-syms | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Server 12-LTSS | kernel-xen | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Server 12-LTSS | kgraft-patch-SLE12_Update_19 | 0 | 1-2.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-bigmem | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-default | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-ec2 | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-pae | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-ppc64 | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-source | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-syms | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-trace | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | kernel-xen | 0 | 3.0.101-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | kernel-default | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | kernel-source | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | kernel-syms | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | kernel-xen | 0 | 3.12.61-52.66.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | kgraft-patch-SLE12_Update_19 | 0 | 1-2.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | kernel-default | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | kernel-source | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | kernel-syms | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | kernel-xen | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Software Development Kit 11 SP4 | kernel-docs | 0 | 3.0.101-94.2 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | kernel-docs | 0 | 3.12.69-60.64.29.3 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | kernel-obs-build | 0 | 3.12.69-60.64.29.1 |
| SUSE:Linux Enterprise Workstation Extension 12 SP1 | kernel-default | 0 | 3.12.69-60.64.29.1 |
| SUSE:Manager 2.1 | kernel-bigsmp | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager 2.1 | kernel-default | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager 2.1 | kernel-ec2 | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager 2.1 | kernel-source | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager 2.1 | kernel-syms | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager 2.1 | kernel-trace | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager 2.1 | kernel-xen | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager Proxy 2.1 | kernel-bigsmp | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager Proxy 2.1 | kernel-default | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager Proxy 2.1 | kernel-ec2 | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager Proxy 2.1 | kernel-source | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager Proxy 2.1 | kernel-syms | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager Proxy 2.1 | kernel-trace | 0 | 3.0.101-0.47.96.1 |
| SUSE:Manager Proxy 2.1 | kernel-xen | 0 | 3.0.101-0.47.96.1 |
| SUSE:OpenStack Cloud 5 | kernel-bigsmp | 0 | 3.0.101-0.47.96.1 |
| SUSE:OpenStack Cloud 5 | kernel-default | 0 | 3.0.101-0.47.96.1 |
| SUSE:OpenStack Cloud 5 | kernel-ec2 | 0 | 3.0.101-0.47.96.1 |
| SUSE:OpenStack Cloud 5 | kernel-source | 0 | 3.0.101-0.47.96.1 |
| SUSE:OpenStack Cloud 5 | kernel-syms | 0 | 3.0.101-0.47.96.1 |
| SUSE:OpenStack Cloud 5 | kernel-trace | 0 | 3.0.101-0.47.96.1 |
| SUSE:OpenStack Cloud 5 | kernel-xen | 0 | 3.0.101-0.47.96.1 |
| Ubuntu:14.04:LTS | linux | 0 | 3.13.0-107.154 |
| Ubuntu:14.04:LTS | linux-aws | 0 | 4.4.0-1002.2 |
| Ubuntu:14.04:LTS | linux-lts-vivid | 0 | 3.19.0-79.87~14.04.1 |
| Ubuntu:14.04:LTS | linux-lts-xenial | 0 | 4.4.0-59.80~14.04.1 |
| Ubuntu:16.04:LTS | linux | 0 | 4.4.0-59.80 |
| Ubuntu:16.04:LTS | linux-aws | 0 | 4.4.0-1003.12 |
| Ubuntu:16.04:LTS | linux-gke | 0 | 4.4.0-1003.3 |
| Ubuntu:16.04:LTS | linux-hwe | 0 | 4.8.0-36.36~16.04.1 |
Related vulnerabilities
- CVE-2025-38562 In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix null… Also affects linux
- CVE-2025-38352 In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: fix… Also affects linux
- CVE-2025-22037 In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix null… Also affects linux
- CVE-2025-21760 In the Linux kernel, the following vulnerability has been resolved: ndisc: extend RCU… Also affects linux
- CVE-2025-21758 In the Linux kernel, the following vulnerability has been resolved: ipv6: mcast: add RCU… Also affects linux
- CVE-2025-21664 In the Linux kernel, the following vulnerability has been resolved: dm thin: make… Also affects linux
- CVE-2024-57946 In the Linux kernel, the following vulnerability has been resolved: virtio-blk: don't… Also affects linux
- CVE-2024-57945 In the Linux kernel, the following vulnerability has been resolved: riscv: mm: Fix the… Also affects linux