Sockeye: a language for analyzing hardware documentation
For systems programmers and security engineers, Sockeye provides a method to formally verify hardware security properties from documentation, uncovering real vulnerabilities.
The paper introduces Sockeye, a domain-specific language for describing hardware semantics and security properties, enabling formal proofs of (in-)security across eight platforms. It discovered documentation errors and a confirmed vulnerability in a real-world server chip affecting a family of network appliances.
The ever increasing complexity of hardware platforms poses a challenge to systems programmers. Correctly programming a multitude of components, providing functionality and security, is difficult: semantics of individual units are described in prose, underspecified, and prone to inaccuracies. Rigorous statements about platform security are often impossible. We introduce a domain-specific language to describe hardware semantics, assumptions about software behavior, and desired security properties. We then create machine-readable specifications for a diverse set of eight platforms from their reference manuals, and formally prove their (in-)security. In addition to security proofs about memory confidentiality and integrity, we discover a handful of documentation errors. Finally, our analysis also revealed a vulnerability on a real-world server chip, which was confirmed by the vendor to apply to a wide family of deployed network appliances. Our tooling offers system integrators a way of formally describing security properties for whole platforms, and the means to find counterexamples, or proving them correct.