Cloudanix VulnDB

CVE-2017-12154

High · 7.1

CVSS

7.1

EPSS

0.5%

Published

Sep 26, 2017

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A problem in the Linux kernel's virtual machine handling could let programs inside one virtual machine reach outside and change important hardware settings, risking broader system compromise.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Privilege Gain
Component
OS kernel
Class
Privilege Escalation
Remediation
Upgrade
Effort
Medium
Patch risk
Medium

What it actually does

The prepare_vmcs02 function in arch/x86/kvm/vmx.c fails to ensure CR8-load exiting and CR8-store exiting L0 vmcs02 controls exist when L1 omits the use TPR shadow vmcs12 control, granting KVM L2 guest OS users direct read and write access to the hardware CR8 register.

Why it matters to the business

In virtualized Linux environments, compromised guest virtual machines may gain unauthorized access to host CPU interrupt controls, enabling further attacks on the hypervisor or co-located guests across a widely deployed kernel component.

How an attack unfolds

An attacker with code execution in an L2 guest OS issues operations that exploit the missing CR8 virtualization controls to directly read and write the hardware CR8 register, bypassing intended L0/L1 protections.

How to fix it

Update the Linux kernel to a version containing commit 51aa68e7d57e3217192d88ce90fd5b8ef29ec94f.

How to confirm the fix worked

Confirm the running kernel includes commit 51aa68e7d57e3217192d88ce90fd5b8ef29ec94f; exercise nested virtualization workloads and verify CR8 exiting controls are correctly set in vmcs02.

Typical attack path

  1. Obtain code execution inside an L2 KVM guest virtual machine
  2. Trigger nested VMCS preparation that omits TPR shadow usage
  3. Directly access or modify the hardware CR8 register to alter interrupt priority
  4. Escalate privileges or attempt hypervisor escape

How to detect it

Review kernel and KVM logs for unexpected nested VM exits or CR8 register accesses originating from guest contexts; examine auditd or dmesg entries related to vmx and cr8.

What your security team should do

  • Apply the kernel fix containing commit 51aa68e7d57e3217192d88ce90fd5b8ef29ec94f to all affected hosts
  • Audit and restrict nested virtualization usage where possible
  • Monitor virtualization event logs for anomalous CR8-related exits

The record

The prepare_vmcs02 function in arch/x86/kvm/vmx.c in the Linux kernel through 4.13.3 does not ensure that the "CR8-load exiting" and "CR8-store exiting" L0 vmcs02 controls exist in cases where L1 omits the "use TPR shadow" vmcs12 control, which allows KVM L2 guest OS users to obtain read and write access to the hardware CR8 register.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 4.12.13-1
Debian:12 linux 0 4.12.13-1
Debian:13 linux 0 4.12.13-1
Debian:7 linux 0 3.2.93-1
Debian:8 linux 0 3.16.43-2+deb8u5
Debian:9 linux 0 4.9.30-2+deb9u5
Mageia:5 kernel 0 4.4.92-1.mga5
Mageia:5 kernel-linus 0 4.4.92-1.mga5
Mageia:5 kernel-tmb 0 4.4.92-1.mga5
Mageia:5 kernel-userspace-headers 0 4.4.92-1.mga5
Mageia:5 kmod-vboxadditions 0 5.1.26-4.mga5
Mageia:5 kmod-virtualbox 0 5.1.26-4.mga5
Mageia:5 kmod-xtables-addons 0 2.10-48.mga5
Mageia:6 kernel 0 4.9.56-1.mga6
Mageia:6 kernel-linus 0 4.9.56-1.mga6
Mageia:6 kernel-tmb 0 4.9.56-1.mga6
Mageia:6 kernel-userspace-headers 0 4.9.56-1.mga6
Mageia:6 kmod-vboxadditions 0 5.1.26-6.mga6
Mageia:6 kmod-virtualbox 0 5.1.26-6.mga6
Mageia:6 kmod-xtables-addons 0 2.12-46.mga6
Red Hat:enterprise_linux:7::client kernel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-abi-whitelists 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-bootwrapper 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-debug 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-debug-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-debug-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-debuginfo-common-ppc64 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-debuginfo-common-ppc64le 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-debuginfo-common-s390x 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-debuginfo-common-x86_64 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-doc 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-headers 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-kdump 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-kdump-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-kdump-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-tools 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-tools-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-tools-libs 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client kernel-tools-libs-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client perf 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client perf-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client python-perf 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::client python-perf-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-abi-whitelists 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-bootwrapper 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-debug 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-debug-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-debug-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-debuginfo-common-ppc64 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-debuginfo-common-ppc64le 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-debuginfo-common-s390x 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-debuginfo-common-x86_64 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-doc 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-headers 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-kdump 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-kdump-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-kdump-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-tools 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-tools-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-tools-libs 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode kernel-tools-libs-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode perf 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode perf-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode python-perf 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::computenode python-perf-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-abi-whitelists 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-bootwrapper 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-debug 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-debug-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-debug-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-debuginfo-common-ppc64 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-debuginfo-common-ppc64le 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-debuginfo-common-s390x 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-debuginfo-common-x86_64 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-doc 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-headers 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-kdump 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-kdump-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-kdump-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-tools 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-tools-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-tools-libs 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server kernel-tools-libs-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server perf 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server perf-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server python-perf 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::server python-perf-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-abi-whitelists 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-bootwrapper 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-debug 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-debug-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-debug-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-debuginfo-common-ppc64 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-debuginfo-common-ppc64le 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-debuginfo-common-s390x 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-debuginfo-common-x86_64 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-doc 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-headers 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-kdump 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-kdump-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-kdump-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-tools 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-tools-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-tools-libs 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation kernel-tools-libs-devel 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation perf 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation perf-debuginfo 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation python-perf 0 0:3.10.0-862.el7
Red Hat:enterprise_linux:7::workstation python-perf-debuginfo 0 0:3.10.0-862.el7
Red Hat:rhel_eus:7.4::computenode kernel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-abi-whitelists 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-bootwrapper 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-debug 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-debug-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-debug-devel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-debuginfo-common-ppc64 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-debuginfo-common-ppc64le 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-debuginfo-common-s390x 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-debuginfo-common-x86_64 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-devel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-doc 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-headers 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-kdump 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-kdump-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-kdump-devel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-tools 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-tools-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-tools-libs 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode kernel-tools-libs-devel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode perf 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode perf-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode python-perf 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::computenode python-perf-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-abi-whitelists 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-bootwrapper 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-debug 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-debug-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-debug-devel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-debuginfo-common-ppc64 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-debuginfo-common-ppc64le 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-debuginfo-common-s390x 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-debuginfo-common-x86_64 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-devel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-doc 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-headers 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-kdump 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-kdump-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-kdump-devel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-tools 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-tools-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-tools-libs 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server kernel-tools-libs-devel 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server perf 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server perf-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server python-perf 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_eus:7.4::server python-perf-debuginfo 0 0:3.10.0-693.55.1.el7
Red Hat:rhel_extras_rt:7 kernel-rt 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-debug 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-debug-debuginfo 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-debug-devel 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-debug-kvm 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-debug-kvm-debuginfo 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-debuginfo 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-debuginfo-common-x86_64 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-devel 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-doc 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-kvm 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-kvm-debuginfo 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-trace 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-trace-debuginfo 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-trace-devel 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-trace-kvm 0 0:3.10.0-862.rt56.804.el7
Red Hat:rhel_extras_rt:7 kernel-rt-trace-kvm-debuginfo 0 0:3.10.0-862.rt56.804.el7
SUSE:Linux Enterprise Desktop 12 SP2 kernel-default 0 4.4.90-92.45.1
SUSE:Linux Enterprise Desktop 12 SP2 kernel-source 0 4.4.90-92.45.1
SUSE:Linux Enterprise Desktop 12 SP2 kernel-syms 0 4.4.90-92.45.1
SUSE:Linux Enterprise Desktop 12 SP3 kernel-default 0 4.4.92-6.18.1
SUSE:Linux Enterprise Desktop 12 SP3 kernel-source 0 4.4.92-6.18.1
SUSE:Linux Enterprise Desktop 12 SP3 kernel-syms 0 4.4.92-6.18.1
SUSE:Linux Enterprise High Availability Extension 12 SP2 kernel-default 0 4.4.90-92.45.1
SUSE:Linux Enterprise High Availability Extension 12 SP3 kernel-default 0 4.4.92-6.18.1
SUSE:Linux Enterprise Live Patching 12 kgraft-patch-SLE12-SP2_Update_14 0 1-2.4
SUSE:Linux Enterprise Live Patching 12 SP3 kgraft-patch-SLE12-SP3_Update_4 0 1-4.3
SUSE:Linux Enterprise Module for Public Cloud 12 kernel-ec2 0 3.12.74-60.64.63.1
SUSE:Linux Enterprise Module for Public Cloud 12 kernel-ec2 0 3.12.61-52.101.1
SUSE:Linux Enterprise Real Time 12 SP2 kernel-rt 0 4.4.88-18.1

Related vulnerabilities