Adversarial CHERI Exercises and Missions
1.
Introduction
1.1.
Background reading
1.2.
Cross compilation and execution
1.2.1.
Helper script
2.
Skills Development Exercises
2.1.
Compile and run RISC-V and CHERI-RISC-V programs
2.1.1.
Answers
2.2.
Disassemble and debug RISC-V and CHERI-RISC-V programs
2.2.1.
Answers
2.3.
Demonstrate CHERI Tag Protection
2.3.1.
Answers
2.4.
Exercise an inter-object stack buffer overflow
2.4.1.
Answers
2.5.
Exercise an inter-object global buffer overflow
2.5.1.
Answers
2.6.
Explore subobject bounds
2.6.1.
Answers
2.7.
Corrupt a control-flow pointer using a subobject buffer overflow
2.7.1.
Answers
2.8.
Exercise heap overflows
2.8.1.
Answers
2.9.
Exercise integer-pointer type confusion bug
2.9.1.
Answers
2.10.
Demonstrate pointer injection
2.10.1.
Answers
2.11.
Adapt a C Program to CHERI C
2.11.1.
Answers
2.12.
CheriABI Showcase
2.12.1.
Answers
2.13.
Extending Heap Allocators for CHERI
2.13.1.
Answers
2.14.
Demonstrate pointer revocation
2.14.1.
Answers
3.
Focused Adversarial Missions
3.1.
Exploiting a buffer overflow to manipulate control flow
3.2.
Exploiting an uninitialized stack frame to manipulate control flow
3.3.
Exploiting heap use-after-free to manipulate control flow
3.4.
Exploiting kernel system-call vulnerability to manipulate control flow
3.5.
Exploiting kernel NFS-server vulnerability to manipulate control flow
4.
Appendix
Light
Rust
Coal
Navy
Ayu
Adversarial CHERI Exercises and Missions
Focused Adversarial Missions