CVE-2023-46841

x86: shadow stack vs exceptions from emulation stubs

Medium · published March 20, 2024

CVSS v3.1
6.5
EPSS
0%
Percentile
18.0
In the wild
Unconfirmed
What it is

Recent x86 CPUs offer functionality named Control-flow Enforcement

Technology (CET). A sub-feature of this are Shadow Stacks (CET-SS).

CET-SS is a hardware feature designed to protect against Return Oriented

Programming attacks. When enabled, traditional stacks holding both data

and return addresses are accompanied by so called "shadow stacks",

holding little more than return addresses. Shadow stacks aren't

writable by normal instructions, and upon function returns their

contents are used to check for possible manipulation of a return address

coming from the traditional stack.

In particular certain memory accesses need intercepting by Xen. In

various cases the necessary emulation involves kind of replaying of

the instruction. Such replaying typically involves filling and then

invoking of a stub. Such a replayed instruction may raise an

exceptions, which is expected and dealt with accordingly.

Unfortunately the interaction of both of the above wasn't right:

Recovery involves removal of a call frame from the (traditional) stack.

The counterpart of this operation for the shadow stack was missing.

The record
Technical detail
CVSS v3.1
6.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00269 · 18.0th percentile
Published
2024-03-20T10:40Z
EPSS history
Timeline
  • 20 MAR 10:40Z
    x86: shadow stack vs exceptions from emulation stubs
    cvelistv5