blob: 24419a0f46d4cbb63840e97c6024fb3944b242eb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
semantic: 0.534
device: 0.090
graphic: 0.089
debug: 0.048
other: 0.042
vnc: 0.033
permissions: 0.026
performance: 0.026
boot: 0.023
PID: 0.021
socket: 0.020
network: 0.020
files: 0.020
KVM: 0.009
semantic: 0.852
debug: 0.057
other: 0.017
files: 0.014
performance: 0.013
PID: 0.008
device: 0.008
network: 0.005
KVM: 0.005
socket: 0.005
permissions: 0.005
boot: 0.004
graphic: 0.004
vnc: 0.003
x86 BZHI semantic bug
Description of problem
The result of instruction BZHI is different from the CPU. The value of destination register and SF of EFLAGS are different.
Steps to reproduce
Compile this code
void main() {
asm("mov rax, 0xb1aa9da2fe33fe3");
asm("mov rbx, 0x80000000ffffffff");
asm("mov rcx, 0xf3fce8829b99a5c6");
asm("bzhi rax, rbx, rcx");
}
Execute and compare the result with the CPU.
CPU
RAX = 0x0x80000000ffffffff
SF = 1
QEMU
RAX = 0xffffffff
SF = 0
Additional information
This bug is discovered by research conducted by KAIST SoftSec.
|