Formalizing Stack Safety as a Security Property
Sean Noble Anderson, Roberto Blanco, Leonidas Lampropoulos, Benjamin, C. Pierce, and Andrew Tolmach

TL;DR
This paper provides a formal, multi-faceted security-based definition of stack safety, capturing various enforcement mechanisms and validating them through property-based testing to distinguish correct from incorrect implementations.
Contribution
It introduces a novel formal characterization of stack safety as five distinct properties, accommodating diverse enforcement mechanisms and behaviors.
Findings
The properties distinguish correct and incorrect stack safety implementations.
The test harness successfully identified broken variants of micro-policies.
A repaired version of the lazy policy passes the tests.
Abstract
The term stack safety is used to describe a variety of compiler, run-time, and hardware mechanisms for protecting stack memory. Unlike "the heap," the ISA-level stack does not correspond to a single high-level language concept: different compilers use it in different ways to support procedural and functional abstraction mechanisms from a wide range of languages. This protean nature makes it difficult to nail down what it means to correctly enforce stack safety. We propose a new formal characterization of stack safety using concepts from language-based security. Rather than treating stack safety as a monolithic property, we decompose it into an integrity property and a confidentiality property for each of the caller and the callee, plus a control-flow property: five properties in all. This formulation is motivated by a particular class of enforcement mechanisms, the "lazy" stack safety…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLaw, AI, and Intellectual Property
