Touch but Don't Look - Running the Kernel in Execute Only Memory
Linux Plumbers Conference via YouTube
Overview
Syllabus
Intro
Why use execute-only memory
Control flow attacks
JIT-ROP
Discovering text - XO is not a lock box
Mitigations: Cost vs Benefit
XO memory CPU support
Trick for XO memory for VMS (2)
Qemu/KVM implementation
Userspace XO support
X86 Kernel Text Permission Lifecycle
XB6 patching methods
So what broke?
Text patching features
Toolchain Mixing Data and Code
Performance
Making this reliable
XO faults
Implementing non-strict mode
Fixing guest page tables
Future - Not reading text as a new rule in the kernel?
Plans
Summary
Taught by
Linux Plumbers Conference