• Systems with small trusted computing bases (TCBs) open possibility for automated security verification of systems
• Example: SecVisor - a 3kLOC security hypervisor designed to guarantee only user-approved code executes with kernel privilege
Security hypervisor provides layer of verifiable protection
<10kLOC
Narrow interface
Hypervisor
•
Develop tools and techniques to automatically verify security of systems that utilize memory protection mechanisms
•
Model check SecVisor’s design, find and repair two vulnerabilities, and verify repaired design
•
Exploit system structure to prove security of arbitrarily large model
(measured in terms of page table entries (PTEs)) by verifying only small model (with 1 PTE)
•
In-progress work includes verifying SecVisor’s C source code. Approach includes development of C-model of x86 hardware virtualization extensions, bit-precise adversarial model checker, and new techniques for scalable verification
•
Develop formal models of SecVisor, hardware platform, and adversary. Total Verification Model Size = SecVisor Model
+ HW Model + Adversary Model
• To make verification tractable, system model and adversary are restricted to unrealistically small number of PTEs
• Thus, these results
• Exploit structure of memory protection mechanisms and access control properties to extend verification to realistic memory models. We prove:
Adv
Adv
•
In every reachable state of the system,
W
X permissions hold on page table and Device Exclusion
Vector (DEV) implying only user-approved code executes with kernel privilege
•
Model checker identified two vulnerabilities in shadow page table (SPT) design that carry over to implementation. Both vulnerabilities caused by missing checks in SPT synchronization code
Vulnerability 1: Adversary gives eXe privilege to code stored in user memory
SWT implies that a small memory model is sufficient for verification of SecVisor’s access control-based memory protection. It generalizes to other secure systems:
Small World Language and Logic (SWL) codifies the design principle behind efficiently-verifiable memory protection. Any system expressible in SWL satisfies the Small World Theorem and hence has an
X
W
X
W
User
Mem
Kernel
Code
Kernel
Data
Vulnerability 2: Adversary adds writable alias to kernel code
•
After adding additional checks to synchronization code, the repaired system satisfied security property
• Inprogress work includes verifying SecVisor’s C source code.
Approach includes development of C-model of x86 hardware virtualization extensions, bit-precise adversarial model checker, and new techniques for scalable verification:
•
Verifying separate stages of systems
(e.g., bootstrap and runtime) and securely compose the resulting verified subsystems
•
Automatically extract just the security-relevant code, thereby greatly reducing verification costs