Forwarded from AlexTCH
Dear colleagues,
At AWS re:Invent 2025 in Las Vegas, we announced the AWS Nitro Isolation Engine [1, 2, 3], a formally verified enhancement to the AWS Nitro System that enforces isolation between virtual machines hosted on AWS's new Graviton5-based EC2 instances.
Nitro Isolation Engine represents a significant deployment of mechanized proof in production infrastructure, and we therefore wanted to bring this to the attention of the formal methods and programming languages communities. This work builds directly on decades of advances in interactive theorem proving, program verification, and programming languages theory, alongside landmark projects—such as, seL4 [4], CertiKOS [5], SeKVM [6], and many others—that were inspirations for this work.
What is Nitro Isolation Engine?
Nitro Isolation Engine is a small, trusted computing base written in Rust that sits beneath the AWS Nitro Hypervisor, providing a security isolation boundary between the hypervisor and guest virtual machines, and between co-tenanted guest virtual machines. The Nitro Isolation Engine controls the critical hardware features required for isolating customer workloads, primarily control of Stage Two translation tables.
The verification effort
Nitro Isolation Engine was designed with verification in mind from the first line of code. Nitro Isolation Engine is subject to AWS’s existing rigorous engineering practices, including the deployment of property-based-testing and lightweight formal methods, for example the Kani bounded model checker for Rust [7].
Building atop this foundation, we have specified and verified the correctness of Nitro Isolation Engine in Isabelle/HOL [8]. Our model and proofs consist of around 260,000 lines of machine-checked models and proofs. Specifically, we have proved:
Functional correctness: Nitro Isolation Engine behaves as specified for all operations: virtual machine creation, memory mapping, instruction and data abort handling, and so on. As corollaries of our total verification style, we have also proven memory-safety, termination, and absence of runtime errors, providing our modelling assumptions are accurate.
Confidentiality: We prove a noninterference-style property demonstrating the confidentiality of guest virtual machine states, formalized as indistinguishability preservation up-to permitted flows of declassified information out of a guest.
Integrity: The integrity of guest virtual machine state is formalized as a safety property, showing that the private state of one virtual machine is unaffected by operations modifying another distinct virtual machine.
In addition, we have applied Iris [9] and Verus [10] to prove the correctness of the Nitro Isolation Engine’s concurrency primitives, including ticket locks, mutexes, and rendezvous barriers.
For functional verification, we defined μRust, a restricted subset of Rust expressive enough to write Nitro Isolation Engine but amenable to formal reasoning and embedded its semantics into Isabelle/HOL. Specifications are written in separation logic, and proofs proceed via weakest precondition calculus with custom automation. We have made our verification infrastructure open source as the AutoCorrode library [11] for Isabelle/HOL, which may be of independent interest.
Regards,
Automated Reasoning Group, AWS
[1]: https://www.aboutamazon.com/news/aws/aws-graviton-5-cpu-amazon-ec2
[2] : https://www.youtube.com/watch?v=3Gt-30Fm38U https://www.youtube.com/watch?v=3Gt-30Fm38U
[3]: https://www.youtube.com/watch?v=b0P55gHhG4g
[4]: https://sel4.systems/
[5]: https://flint.cs.yale.edu/certikos/
[6]: https://www.usenix.org/conference/usenixsecurity21/presentation/li-shih-wei
[7]: https://github.com/model-checking/kani
[8]: https://isabelle.in.tum.de/
[9]: https://iris-project.org/
[10]: https://github.com/verus-lang/verus
[11]: https://github.com/awslabs/AutoCorrode
At AWS re:Invent 2025 in Las Vegas, we announced the AWS Nitro Isolation Engine [1, 2, 3], a formally verified enhancement to the AWS Nitro System that enforces isolation between virtual machines hosted on AWS's new Graviton5-based EC2 instances.
Nitro Isolation Engine represents a significant deployment of mechanized proof in production infrastructure, and we therefore wanted to bring this to the attention of the formal methods and programming languages communities. This work builds directly on decades of advances in interactive theorem proving, program verification, and programming languages theory, alongside landmark projects—such as, seL4 [4], CertiKOS [5], SeKVM [6], and many others—that were inspirations for this work.
What is Nitro Isolation Engine?
Nitro Isolation Engine is a small, trusted computing base written in Rust that sits beneath the AWS Nitro Hypervisor, providing a security isolation boundary between the hypervisor and guest virtual machines, and between co-tenanted guest virtual machines. The Nitro Isolation Engine controls the critical hardware features required for isolating customer workloads, primarily control of Stage Two translation tables.
The verification effort
Nitro Isolation Engine was designed with verification in mind from the first line of code. Nitro Isolation Engine is subject to AWS’s existing rigorous engineering practices, including the deployment of property-based-testing and lightweight formal methods, for example the Kani bounded model checker for Rust [7].
Building atop this foundation, we have specified and verified the correctness of Nitro Isolation Engine in Isabelle/HOL [8]. Our model and proofs consist of around 260,000 lines of machine-checked models and proofs. Specifically, we have proved:
Functional correctness: Nitro Isolation Engine behaves as specified for all operations: virtual machine creation, memory mapping, instruction and data abort handling, and so on. As corollaries of our total verification style, we have also proven memory-safety, termination, and absence of runtime errors, providing our modelling assumptions are accurate.
Confidentiality: We prove a noninterference-style property demonstrating the confidentiality of guest virtual machine states, formalized as indistinguishability preservation up-to permitted flows of declassified information out of a guest.
Integrity: The integrity of guest virtual machine state is formalized as a safety property, showing that the private state of one virtual machine is unaffected by operations modifying another distinct virtual machine.
In addition, we have applied Iris [9] and Verus [10] to prove the correctness of the Nitro Isolation Engine’s concurrency primitives, including ticket locks, mutexes, and rendezvous barriers.
For functional verification, we defined μRust, a restricted subset of Rust expressive enough to write Nitro Isolation Engine but amenable to formal reasoning and embedded its semantics into Isabelle/HOL. Specifications are written in separation logic, and proofs proceed via weakest precondition calculus with custom automation. We have made our verification infrastructure open source as the AutoCorrode library [11] for Isabelle/HOL, which may be of independent interest.
Regards,
Automated Reasoning Group, AWS
[1]: https://www.aboutamazon.com/news/aws/aws-graviton-5-cpu-amazon-ec2
[2] : https://www.youtube.com/watch?v=3Gt-30Fm38U https://www.youtube.com/watch?v=3Gt-30Fm38U
[3]: https://www.youtube.com/watch?v=b0P55gHhG4g
[4]: https://sel4.systems/
[5]: https://flint.cs.yale.edu/certikos/
[6]: https://www.usenix.org/conference/usenixsecurity21/presentation/li-shih-wei
[7]: https://github.com/model-checking/kani
[8]: https://isabelle.in.tum.de/
[9]: https://iris-project.org/
[10]: https://github.com/verus-lang/verus
[11]: https://github.com/awslabs/AutoCorrode
Aboutamazon
AWS introduces Graviton5—the company’s most powerful and efficient CPU
Fifth generation chip provides the best price performance for a broad range of workloads in Amazon EC2.
🫡4🔥2🤔1🎉1🌚1
Провёл ваншот. На этот раз игроки меньше пытались развалить сюжет, но я смог нормально зарулить отклонение от модуля. Финальная боёвка окончилась победой, но драматически, с тремя персонажами из четырёх в бессознательном состоянии. Игроки довольны.
Я в восторге. Давно такой валидации не получал.
Я в восторге. Давно такой валидации не получал.
❤21🔥3🤮2💩2🤡2
#prog #rust #article
In defense of lock poisoning in Rust
In defense of lock poisoning in Rust
<...> I keep coming back to how unbounded the downside of an undetected panic is, and how easy it is to get wedged in this state. Mutexes and poisoning have value separate from each other, but I don’t think they are as independent as they seem at first. My understanding from writing Rust code over many years is that almost all uses of mutexes benefit from poisoning, and almost all instances of poisoning one needs to care about are with mutex-guarded data.
Help guys, my gf said I was hers, but she is mine aswell. This statement would imply that she owns me and I own her, but that would cause a stack overflow! Is she lying, and only owns a reference to me? pls help
#justrustaceanthings
r/rustjerk
😁10🌚1
Блог*
#game Вчера вышла Rift of the Necrodancer, спинофф Crypt of the Necrodancer. Эта игра ближе к традиционным ритм-играм, но при этом всё равно имеет свои фишки, перешедшие из прошлой игры. Брать, скорее всего, стоит — я в своё время демку с жалкими четырьмя…
Кому-то это точно интересно: теперь для игры есть DLC с треками из Friday night funkin' и Unbeatable
❤6
The (successful) end of the kernel Rust experiment
The topic of the Rust experiment was just discussed at the annual Maintainers Summit. The consensus among the assembled developers is that Rust in the kernel is no longer experimental — it is now a core part of the kernel and is here to stay. So the "experimental" tag will be coming off.
🎉11🥰5❤🔥2👎1
#prog #amazingopensource #article (и даже в какой-то мере #algo)
Stacktower.io (репозиторий) — инструмент для создания визуализаций зависимостей в духе известного комикса xkcd + история о его создании, с инкрементальным улучшением, начиная с брутфорса. История хорошо демонстрирует, насколько хорошо помогает знать prior art в computer science.
Stacktower.io (репозиторий) — инструмент для создания визуализаций зависимостей в духе известного комикса xkcd + история о его создании, с инкрементальным улучшением, начиная с брутфорса. История хорошо демонстрирует, насколько хорошо помогает знать prior art в computer science.
👍16🌚3
Forwarded from ReadMe.txt (Ilya Klishin)
🔎 Создатели сериала «Коломбо» рассказывали, что списали своего знаменитого детектива с Порфирия Петровича из «Преступления и наказания»
В интервью Уильяма Линка (соавтора «Коломбо») журналу Mystery Scene (лето 2010, статья Tom Nolan «Vital Link»), он говорит:
“We admitted in a lot of interviews, our template for Columbo was Petrovich, the detective-inspector in Crime and Punishment”
«Мы во множестве интервью признавали: нашим шаблоном для Коломбо был [Порфирий] Петрович, следователь из “Преступления и наказания”».
В частности с героя Достоевского списана мягкая вкрадчивая манера детектива. Его фирменная манера почти уже уходить, но возвращаться и говорить «И вот еще что» (And one more thing).
В интервью Уильяма Линка (соавтора «Коломбо») журналу Mystery Scene (лето 2010, статья Tom Nolan «Vital Link»), он говорит:
“We admitted in a lot of interviews, our template for Columbo was Petrovich, the detective-inspector in Crime and Punishment”
«Мы во множестве интервью признавали: нашим шаблоном для Коломбо был [Порфирий] Петрович, следователь из “Преступления и наказания”».
В частности с героя Достоевского списана мягкая вкрадчивая манера детектива. Его фирменная манера почти уже уходить, но возвращаться и говорить «И вот еще что» (And one more thing).
❤9
#prog #rust #rustreleasenotes
Вышла версия Rust 1.92.0! Как всегда, тут только интересные мне моменты — всё остальное в детальных заметках о релизе.
▪️Информация по оптимизации времени сборки теперь есть прямо в Cargo book 🎉 (PR)
▪️Линты про проблемы, связанные с never type fallback, теперь deny by default.
▪️Теперь на функциях можно комбинировать
▪️Операции
▪️Линт unused_must_use теперь не срабатывает на значениях Result<T, E>, где тип E не населён.
▪️
▪️Методы
▪️Стабилизированы некоторые API:
🔸std::panic::Location::file_as_cstr (полезно для интеропа с C/C++)
🔸RwLockWriteGuard::downgrade для понижения блокировки на запись до блокировки на чтение
🔸
🔸
▪️Методы
▪️Поиск в rustdoc теперь скрывает методы трейтов на типах из результатов поиска, если в списке есть сам метод трейта. Например, поиск по "last" покажет
▪️Компилятор теперь по умолчанию генерирует таблицы для раскрутки стека даже с -C panic=abort. Это сделано для рабочих трассировок стека (которые могут быть созданы не только паникой). Убрать эти таблицы можно ключём
Вышла версия Rust 1.92.0! Как всегда, тут только интересные мне моменты — всё остальное в детальных заметках о релизе.
▪️Информация по оптимизации времени сборки теперь есть прямо в Cargo book 🎉 (PR)
▪️Линты про проблемы, связанные с never type fallback, теперь deny by default.
▪️Теперь на функциях можно комбинировать
#[track_caller] и #[no_mangle]. Технически это можно было делать и раньше, но до этого релиза преобразование подобной функции в указатель на функцию сохраняло атрибут #[no_mangle], что приводило к ошибкам линковки. Если что, работает эта комбинация только на функциях с extern "Rust".▪️Операции
&raw const/&raw mut для взятия адреса теперь можно использовать на полях объединений в safe коде.▪️Линт unused_must_use теперь не срабатывает на значениях Result<T, E>, где тип E не населён.
▪️
Iterator::eq{, by} теперь может сделать ранний возврат на TrustedLen итераторах. Да, это означает, что теперь этот метод может отбрасывать операции с побочными эффектами.▪️Методы
count и last на iter::Repeat теперь паникуют вместо входа в бесконечный цикл.▪️Стабилизированы некоторые API:
🔸std::panic::Location::file_as_cstr (полезно для интеропа с C/C++)
🔸RwLockWriteGuard::downgrade для понижения блокировки на запись до блокировки на чтение
🔸
new_zeroed и new_zeroed_slice на умных указателях. Сами конструкторы safe, потому что возвращают аллокации с MaybeUninit вместо значений напрямую.🔸
insert_entry на btree_map::Entry и btree_map::VacantEntry, которые вставляют переданное значение и возвращают OccupiedEntry (аналогичные методы для HashMap стабилизировали год назад)▪️Методы
rotate_left и rotate_right на слайсах теперь можно вызывать в const-контекстах.▪️Поиск в rustdoc теперь скрывает методы трейтов на типах из результатов поиска, если в списке есть сам метод трейта. Например, поиск по "last" покажет
Iterator::last и BTreeSet::last (метод на BTreeSet, не имеющий отношения к Iterator), но не покажет, скажем, std::vec::IntoIter::last.▪️Компилятор теперь по умолчанию генерирует таблицы для раскрутки стека даже с -C panic=abort. Это сделано для рабочих трассировок стека (которые могут быть созданы не только паникой). Убрать эти таблицы можно ключём
-C force-unwind-tables=no.blog.rust-lang.org
Announcing Rust 1.92.0 | Rust Blog
Empowering everyone to build reliable and efficient software.
👍5🎉3