CheriABI1 – Chapter 4.1 Implementation Tradeoffs
Choices:
declaration annotation model: rejected. for compatibility.
system-call stub/proxy model: rejected.
verification based approach: rejected. Is where generated code checked the capabilities passed to system calls had appropriate bounds and permissions. Has serious drawbacks with advantages:
Capability as first class citizen: Final choice, where “capabilities are carried down the call stack and are first class citizens in the kernel”. “In doing so, we converted the kernel to a hybrid program, eliminating the use of inline assembly macros in favor of annotated capabilities and compiler provided __builtin_*
functions. However, hybrid kernel was fairly invasive.
SIG_DFL
, SIG_IGN
, or a signal handler function pointer __sighandler_t *
==> create any such sentinel cap with offset from NULL
instead of from thread’s DDC
.[^2007watson] Exploiting concurrency vulnerabilities in system call wrappers. WOOT workshop, USENIX Security, 2007.
2019.
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?