Formal Guarantees about Real Software

Use BlueRock tools to verify your software.

Verifying Software @ BlueRock

At BlueRock Security, we are on a mission to secure systems from the ground up. Formal verification is a crucial part of this goal because it is the only way to provide mathematical guarantees about a system. To enable reasoning about software, we are developing state-of-the-art tools to prove that software behaves as intended in all possible situations. Our tools build on decades of research into modular reasoning principles for highly concurrent software.

To date, we have applied these tools to verify (parts of) complex, concurrent C++ code across the BlueRock ULTRA™ stack from the NOVA microhypervisor to user-mode applications including a console multiplexor and a Virtual Machine Monitor (VMM). These verifications have been collaborative efforts between systems engineers with no background in formal methods and formal methods engineers, and the experiences have been beneficial on both sides. Our verification efforts have found and fixed many subtle bugs ranging from shallow undefined behavior to race conditions and semantic bugs across the entire stack.

While we continue our work hardening the BlueRock stack, fully realizing our mission has lead us to enable the broader use of our verification tools outside of BlueRock. This work includes polishing our tools to improve usability and developing specifications for common C++ infrastructure such as the C++ standard library.

Read more

Towards Modular Specification and Verification of Concurrent Hypervisor-based Isolation

An overview of our work on verifying the NOVA microkernel circa 2024.

Read it!

Modularizing CPU semantics for Virtualization

An overview of our work on hardware architectural semantics.

Read it!

Developing with Formal Methods at BedRock Systems

Learn how BlueRock Security is applying state-of-the-art formal verification techniques to industrial C++ code.

Read it!