22 comments

[ 3.4 ms ] story [ 49.9 ms ] thread
"If you operate an x86 KVM host that accepts multi-tenant guests and supports nested virtualization, or use an instance on top of one"

does this mean that you must have nested virtualization enabled to br vulnerable. does disabling this feature in the host os or bios, make you immune to this bug?

Yes you can disable it via kernel module parameters kvm_intel.nested=0 or kvm_amd.nested=0.
The full write up is here: [0].

This is a very nasty vulnerability and risks any service that uses and allows nested x86 virtualization features at risk. Including those running VMs as a service.

> Running the PoC inside a guest VM can trigger a host kernel panic. A full escape exploit that works in a controlled environment also exists, but it is not released at this time and is planned to be released in the very distant future.

The first commit that introduced this vulnerability was in 2010. [1] So it was undiscovered for 16 years until now [2].

It was only a matter of time that a vulnerability in KVM would appear. This one is really not good as it is the first KVM guest-to-host exploit working on both AMD and Intel.

[0] https://github.com/V4bel/Januscape/blob/main/assets/write-up...

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

> So it was undiscovered for 16 years until now

Publicly undiscovered

KVM maintainer here.

For what it's worth, this is a variant of a vulnerability discovered via fuzzing last April, CVE-2026-46113.

hey, here's a good rule of thumb.

If you share resources, that reduces costs, but increases security risks.

choose whether to share a filesystem, an OS, a kernel, hardware, or just use a dedicated server.

The economics of sharing resources are all in a tiny sliver of the budget spectrum, the shoestring budget range :

0-1$/mo: serverless

1$-5$/mo containers

5$-200$/mo Virtual Machine(s)

200$-1Billion$/month , at least one dedicated server

So if your hourly is worth anywhere upwards of 5$/hr, and your project has any semblance of seriousness, just use a dedicated server, and avoid a whole class of LPE vulnerabilities just to save some $.

Businesses have expenses, let's stop pretending that all of these non dedicated server infrastructures are serious. Shell out 200$/month or stick to hobby status.

No, I don't sell dedicated servers, but I should

In your context you still "share" with a dedicated server too. It's not your rack, it's not your IPMI/OOB, even on bare metal. Components in the server are running all sorts of their own code.

All of these layers are a form of risk

I'm a bit confused. So you're saying instead of running 20 containers for an app that are 1-4Gi and some odd CPU I should replace them with 20 dedicated servers?

By your own numbers that's 200x+ as expensive.

Really 20 containers is a pretty small app considering 5 app server containers, a DB, a cache, a load balancer, some monitoring/alerting crap 2x for redundancy.

I believe the proposed system is to run the containers on dedicated rented server(s). Instead of having the containers/VMs share underlying CPU/RAM with others.
A dedicated server is a bunch of risk and skilled administration work compared to using a container platform or serverless. Many more people have been pwned by consequences of neglected server administration than managed serverless/container platform VM escapes.
KVM, or x86 identified mail validation.
> LPE: On distributions such as RHEL, /dev/kvm is world-writable (0666), so an unprivileged user can also use this vulnerability as a reliable LPE to gain root.

Why on Linux device files are accessible by untrusted applications?

Because if /dev/kvm isn't accessible to unprivileged users, then people will start using `sudo` to run anything involving virtualization, which would be much worse for security overall.
1: As siblings note, some device files are wide open, some are limited to a given user group, and some are root-only.

2: Because it's desirable for users to be able to run VMs.

(comment deleted)
Linux controls access using configurable file permissions, so this has a false premise. The better question is doesn't RHEL really use a kvm group to limit access like other distributions? If so, why?
Nested virt on x86 is curiously painful; you'd kind of think each layer would be isolated, so that the L0 (hardware) would only have to worry about it's VM (L1), and L1 would have to worry about it's VM (L2); but nope - the L0 top level hypervisor sees faults from the L2 and has to figure out that they are actually L2 not L0. IMHO the extra complexity (and historical flakiness of it) - makes me say that enabling nesting is a bad idea for public VM hosts.
Some of the comments here talk about the risk this poses for multi tenant vm providers.

Wouldn't this also be a risk for people using VMs to sandbox untrusted code running on trusted hosts?

Anyone know if "-cpu ${CPU},vmx=off,svm=off" in QEMU is a safe workaround for this?

(To disable nested virtualization on a per-VM basis. Only against exploitation from within that specific VM, obviously does nothing against users with access to /dev/kvm on the host.)

xenchads dabbing on kvmvirgins once again