AWS has shipped what it calls the first formally verified hypervisor in a commercial cloud, proving with 330,000 lines of machine-checked mathematics that virtual machines on its new Graviton5 instances stay isolated from one another. The achievement says as much about how we build trustworthy systems as it does about EC2.
The promise underneath every public cloud is a quiet one, and it is almost never stated out loud: the stranger renting the processor core next to yours cannot see your data. Millions of businesses stake their operations on that assurance every day, and for most of cloud computing's history it has rested on careful engineering, code review, testing, and the accumulated confidence that comes from systems running at scale without visible failure. With the general availability of its M9g and M9gd instances, the first powered by the new Graviton5 processor, Amazon Web Services has changed the basis of that promise from confidence to proof. The new Nitro Isolation Engine is, by Amazon's account, the first formally verified hypervisor component deployed in a commercial cloud, and its correctness is established not by argument but by 330,000 lines of machine-checked mathematics.

That distinction, between believing a system is correct and proving it, is the whole story here, and it deserves to be understood on its own terms before we look at how Amazon pulled it off.
The thesis: separating what must be true from everything else
Formal verification is the practice of using mathematical logic to prove that a program behaves exactly as specified, for every possible input and execution path, rather than for the finite set of cases a test suite can exercise. The idea is old and the appeal is obvious. The difficulty is equally obvious: real software is enormous, tangled, and full of the accidental complexity that accumulates when systems grow to do many jobs at once. Proving anything rigorous about a million-line codebase is, with today's tools, effectively impossible. The history of formal verification is in large part a history of people learning to make systems small enough to reason about.
This is why the central architectural decision behind the Nitro Isolation Engine matters more than any single proof technique. Since 2017, the Nitro Hypervisor has enforced isolation between virtual machines in EC2, but it has also done a great deal else: handling device drivers, business logic, resource allocation, and the many AWS-specific features that make the platform what it is. All of that complexity is load-bearing for the product and ruinous for verification. Amazon's engineers responded by drawing a line through the system. They distilled the critical isolation logic into a single minimal component, the Nitro Isolation Engine, and left everything else, the policy decisions about which VMs to create, how to allocate memory, when to migrate or schedule, in the larger hypervisor, which is now deprivileged.
The consequence is a strict inversion of trust. The Nitro Hypervisor still decides what should happen, but it can no longer touch guest state directly. To perform any operation that reaches into a virtual machine's memory or processor state, it must ask the Isolation Engine, which checks every request before acting. The hypervisor proposes; the engine disposes. This is the modern incarnation of an idea John Rushby named in 1981 when he coined the term "separation kernel": a minimal operating-system component that partitions a machine into isolated compartments and does nothing else. Rushby's insight was to separate policy from mechanism, and four decades later that separation is precisely what makes verification tractable. A component that only enforces isolation, and never decides what to isolate, is small enough that mathematics can wrap its arms around it.
Key arguments: what was proved, and how
Reducing the surface area to be verified is necessary but not sufficient. You still have to do the proof, and the engineering choices Amazon made reveal a thoughtful reading of what makes verification feasible at industrial scale.
The first choice was language. The Isolation Engine is written in Rust, whose ownership model and memory discipline already eliminate whole categories of bug, but Amazon went further and defined a restricted subset they call μRust, or "micro Rust." The subset deliberately excludes Rust's more dynamic features, traits and dynamic dispatch among them, keeping only what is expressive enough to write the engine while remaining amenable to mathematical reasoning. The meaning of a μRust program is given a precise definition inside the Isabelle/HOL proof assistant through what is called a shallow embedding, meaning the semantics of the restricted language are expressed directly in the higher-order logic that Isabelle mechanically checks. Isabelle's role throughout is that of a tireless, unforgiving referee: it verifies that every step of reasoning obeys the laws of logic and accepts nothing on faith.
The proofs themselves were built on a body of general-purpose infrastructure that Amazon open-sourced in 2025 as the AutoCorrode library. Specifications are written in Separation Logic, a formalism designed specifically for reasoning about programs that manipulate pointers and low-level memory, the exact territory a hypervisor inhabits. Proving that the code satisfies those specifications uses a weakest-precondition calculus, a systematic method for computing the least restrictive condition that must hold before an operation in order to guarantee the desired condition after it. The classic illustration is arithmetic: the weakest precondition for the expression x + y to behave correctly is the set of states in which x and y are small enough not to overflow. Scale that reasoning up across an entire codebase and you have a proof of functional correctness.

What exactly did they prove? Four families of properties. Functional correctness, that the implementation behaves exactly as its specification says. Absence of runtime errors, no unexpected program-halting failures like unwrapping a None value in Rust. Memory safety, no buffer overflows or null-pointer dereferences. And, treated separately because it demands different machinery, confidentiality and integrity, the guarantee that only authorized information flows occur and that, for instance, guest memory is always scrubbed before it is reused. The first three are bundled together as a single functional-verification result, helped along by a clever framing: Amazon's contracts demand "total correctness," meaning that from any state satisfying the precondition the program is guaranteed to terminate in a state satisfying the postcondition. Total correctness, it turns out, implies memory safety and freedom from runtime errors as a side effect, which is an elegant economy in a project where every theorem is expensive.
The confidentiality argument is the subtler of the two, and it rests on an idea called noninterference, formalized here as indistinguishability preservation. Imagine two machines, each with one public register and one private register. An observer who can see only the public registers considers the two machines indistinguishable whenever their public values match, regardless of what the hidden private registers hold. The property we want is that this indistinguishability survives execution: if two states look the same to the observer before a step, they must look the same after. The reason this captures confidentiality is almost philosophical. If the observer cannot tell the two machines apart after the step any better than before, the step taught them nothing about the private data. A violation looks like a program that branches on a private register to set a public one. Now the two machines diverge in their public state, a clever observer can work backward to deduce the hidden values, and that divergence is exactly an illicit flow of information. By proving that no such divergence can occur, the verification establishes that secrets cannot leak across the isolation boundary.
The specifications grow large because the modeling is deep. Amazon gives the example of PSCI_CPU_ON, the power-state function a virtual CPU would invoke to turn itself on. The case where a running CPU asks to turn itself on is erroneous, and the engine simply returns the error code AlreadyOn while leaving everything else untouched. The behavior is trivial to state in English and sprawling to state formally, precisely because reaching that point in the code means a cascade of prior checks has already passed, and the specification must account for all of them. The complexity of the specification is not noise; it is the honest price of modeling a real system at full fidelity.
Implications: from trust to evidence
The natural comparison is seL4, the landmark 2009 project that first proved a realistic operating-system kernel correct and demonstrated that this kind of verification was even possible. Amazon is explicit that seL4 inspired the work, and the two efforts are comparable in scale at roughly 330,000 lines of proof. But the difference in deployment is the part that should make people sit up. seL4 proved that verification of real systems was feasible; the Nitro Isolation Engine proves that it can be productized. This is not a research kernel in a lab or a high-assurance component in a defense system with a handful of users. It ships on production hardware as an always-on feature for every Graviton5 customer, woven into the commercial fabric of one of the largest computing platforms on earth.
That shift carries a meaning beyond AWS's product line. For most of the software industry, security assurance is a matter of accumulated evidence and the absence of disproof: we have not found a flaw, the system has not been breached, the auditors signed off. Formal verification offers a categorically different kind of assurance, the kind that mathematics provides, where the property holds for all inputs because the alternative is a logical contradiction. When the verified component is also made small and auditable, customers gain something the cloud has rarely offered, which is genuine visibility into how the isolation they depend on is actually enforced rather than a brand promise that it is.
Counter-perspectives: the boundaries of proof
It is worth holding this achievement at the right distance, because formal verification invites a particular kind of overconfidence. A proof is only ever as good as its specification and its assumptions. The Nitro Isolation Engine is proved correct with respect to a model of μRust and a set of specifications written by humans; if those specifications fail to capture some behavior that matters, or if the model of the hardware diverges from the silicon's actual behavior, the proof remains valid and the system can still fail. Verification moves the trust rather than eliminating it. You no longer have to trust the implementation, but you do have to trust that the specification says what you think it says, that the compiler from μRust to machine code preserves the proved properties, and that the hardware honors the abstractions the proof assumes. Side channels, timing leaks, and physical attacks live largely outside the model.
Amazon, to its credit, frames the work as a beginning rather than a finished monument. The authors note that they have more to share about conformance testing, which checks that the verified model actually matches the deployed code, and about reasoning over concurrent execution, which is among the hardest problems in the field. These are not footnotes; they are the load-bearing connections between a mathematical proof and a running machine, and the rigor of those connections will determine how much the headline result is ultimately worth.
Still, the direction is the thing. For decades, formal verification has been the discipline that everyone admired and almost no one could afford at scale. By reshaping a system specifically so that it could be proved correct, and then proving it, and then shipping it to ordinary customers, Amazon has offered a working answer to the question of whether mathematical assurance can leave the laboratory. The deeper lesson may be the oldest one in engineering, rediscovered in a new and demanding context: the path to proving a system trustworthy runs through making it simple enough to understand completely. The cloud is built on abstractions we are mostly asked to take on faith. It is a notable thing when one of them is replaced by a theorem.

Comments
Please log in or register to join the discussion