Transient Architectural Execution:�From Weird Gates to Weird Programs
Ping-Lun Wang, Fraser Brown, Riccardo Paccagnella,
Eyal Ronen, Riad S. Wahby, and Yuval Yarom
IEEE S&P, 05/19/2026
Contact: pinglunw@andrew.cmu.edu
μWMs: hidden computers in the CPU
2
▲ CPU
µArch weird machines (µWMs)
µArch
ISA
🤯 Obfuscate malware
😈 Improve μArch attacks
Credit: irasutoya.com
😥 Existing μWMs are very limited…
😎 Overcome side-channel mitigations
µWMs: many security applications!
Limitations of existing μWMs
3
Weird gates [1, 2, 3]
[1] Spec-o-Scope: Cache probing at cache speed, Horowitz et al., CCS ‘24
[2] Bending microarchitectural weird machines towards practicality, Wang et al., USENIX Sec ‘24
[3] The gates of time: Improving cache attacks with transient execution, Katzman et al., USENIX Sec ‘23
💥 No conditional execution (e.g., branches)
💥 No indexed memory operations
💥 Weird gates can only compute 4 bits at a time
Circuit model: very limited
Our work: transient architectural execution (TAE)
4
Credit: irasutoya.com
✨ Weird programs: compute with ISA
✅ Branches
✨ AES encryption is 543× faster than the state of the art!
ISA
µArch
✅ Memory operations
✅ Powerful ISA instructions (e.g., AES-NI)
weird gates + transient exec attacks
= μWMs with full capabilities!
TAE: transient execution attacks + weird gates
5
Transient execution attacks
(e.g., Spectre & Meltdown)
Weird gates
Our work: TAE
μArch output
Arch input
Transient execution
μArch input
Compute
(low-level circuits)
μArch output
Transient execution
μArch input
Compute
(high-level ISA)
Arch value
μArch output
Transient execution
Overview of transient architectural execution
6
add rax, rbx
Transient execution
μArch world
Arch world
1️⃣ μArch to Arch
3️⃣ Arch to μArch
💎
| 💷 | 💶 |
💵 | 💷 | 💶 |
💵
2️⃣ Arch compute
Storage
Computation
How to do this?
← rax
rax ←
💵
Idea: cache miss → branch misprediction
7
input[0]
in the cache?
Yes!
No…
Evaluate condition
Make a prediction
✅ Correct direction
⛔ Incorrect direction
💵
💵
❌
if (input[0]) correct();
else incorrect();
😈 Mis-train the predictor
μArch (cache) → branch misprediction → Arch
8
input[0]
💵
❌
return 1;
Branch predictor?
return 0;
Taken!
(Trained)
In transient execution
// input[0] is 0
if (input[0]) return 0;
else return 1;
✨ μArch to Arch!
💵
0
😈 Mis-train the predictor
Make μArch to Arch more scalable
9
😥 A branch only converts 1 bit of information
🤔 What if we use an indirect branch?
✨ Multiple targets → multiple bits of information!
Branch target buffer (BTB) and indirect branches
10
Indirect branch
Target = 1
Target 0: // more code…
Target 1: // more code…
Target 2: // more code…
Target 3: // more code…
Target 4: // more code…
Target 5: // more code…
Target 6: // more code…
(more targets…)
BTB state
Last target:
1
Records the last target
Write to the BTB states
11
Indirect branch
Target = 5
(more targets…)
Last target:
BTB state
1
5
Target 0: // more code…
Target 1: // more code…
Target 2: // more code…
Target 3: // more code…
Target 4: // more code…
Target 5: // more code…
Target 6: // more code…
Value to write
Updates to target 5!
Convert BTB states to Arch value
12
Target 0: // more code…
Target 1: // more code…
Target 2: // more code…
Target 3: // more code…
Target 4: // more code…
Target 5: // more code…
Target 6: // more code…
Indirect branch
Target = delay()
Target 0: return 0;
Target 1: return 1;
Target 2: return 2;
Target 3: return 3;
Target 4: return 4;
Target 5: return 5;
Target 6: return 6;
Last target:
BTB state
1
5
❓
Target is 5!
✨ μArch to Arch!
✨ 65,536 = 216 targets
16 bits per branch
Transient execution
(more targets…)
Return the target number
Weird functions: compute with ISA using TAE
13
1️⃣
2️⃣
3️⃣
Transient execution
BTB to Arch
AES Encrypt
(with AES-NI)
Arch to BTB
▲ AES weird function
[1] Bending microarchitectural weird machines towards practicality, Wang et al., USENIX Sec ‘24
Compose weird functions into weird programs
14
Transient execution
BTB to Arch
Computation
(with ISA instructions)
Arch to BTB
1️⃣
2️⃣
3️⃣
▲ A weird function
Weird function 1
Weird function 2
Weird function 3
Weird function n
▲ A weird program
(more weird functions…)
Compose weird functions into weird programs
15
Transient execution
BTB to Arch
Computation
(with ISA instructions)
Arch to BTB
1️⃣
2️⃣
3️⃣
▲ A weird function
Weird function 1
Weird function 2
Weird function 3
Weird function n
▲ A weird program
(more weird functions…)
✨ Large scale computation
Takeaways
✨ Transient Arch Exec: brings powerful ISA to μWMs!
✨ Weird programs: orders of magnitude faster!
✨ μWMs are practical for program obfuscation and other attacks
🛡️ Future work: μWMs mitigations