Orange Slice: A research kernel and hypervisor attempting to get fully deterministic emulation with minimum performance cost

Orange Slice is a research kernel and hypervisor with an end goal of creating a deterministic hypervisor. This will be developed almost entirely in my free time, and will probably move slow. However I will try to stream almost all dev for this project, such that people can ask questions and hopefully learn a thing or two about kernel and hypervisor development! This deterministic hypervisor is going to be designed from the start for fuzzing. Having determinism in a hypervisor would allow us to never have an issue with reproducing a bug, regardless of how complex the bug is. However as a hypervisor we will benefit from the performance of hardware-accelerated virtualization. The end goal is a deterministic hypervisor, capable of booting Windows and Linux, with less than a 5x performance slowdown to achieve instruction-and-cycle level determinism for cycle counts and interrupt boundaries.

https://github.com/gamozolabs/orange_slice

 

UEFI, bootloaders, and Rust

There was a talk about UEFI programming in Rust at MadRust, the Madrid Rust Meetup:

https://github.com/aruiz/madrust-uefi-skeleton

https://drive.google.com/file/d/19Zv1jbu-leKsa0DaRWEWt0dHSeIwwqVg/view

Rust en primavera: UEFI y GTK

Thursday, Apr 4, 2019, 7:15 PM

Calle de Pradillo, 42
Calle de Pradillo, 42 Madrid, ES

36 Rustaceans Attending

Llegó la primavera, y con ella otra ración de programación de sistemas con Rust. Alberto Ruiz [1] es un Engineering Manager en Red Hat [2] en el equipo de Bootloader. En su charla se sumergirá en UEFI [3], la especificación de firmware estándar en la mayoría de sistemas Intel para consumidores; y mostrará cómo compilar un Hello World básico (y quiz…

Check out this Meetup →

Fortanix: SGX enclave dev platform

https://edp.fortanix.com/

rust-guide: Guide to develop secure applications with Rust

The object of this document is to provide hints and recommendations for secure applications development using the Rust programming language. It is not intended to be a course on how to write Rust programs, there are already plenty of good learning resources for this purpose (see the External references section below). The purpose is rather to guide the programmer and to inform him about certain pitfalls, especially in case he is involved in the development of applications with strong security requirements. These recommendations form a complement to the good level of trust the Rust language already provides. That said, recalls are sometimes necessary for clarity, and the experienced Rust programmer may rely solely on Recommendation or Warning inserts.

https://github.com/ANSSI-FR/rust-guide

r-efi: UEFI Reference Specification Protocol Constants and Definitions for Rust

The r-efi project provides the protocol constants and definitions of the UEFI Reference Specification as native rust code. The scope of this project is limited to those protocol definitions. The protocols are not actually implemented. As such, this project serves as base for any UEFI application that needs to interact with UEFI, or implement (parts of) the UEFI specification.

https://github.com/r-util/r-efi

See-also:

https://firmwaresecurity.com/2018/11/28/c-efi-uefi-reference-specification-protocol-constants-and-definitions-2/

c2rust.com: C to Rust translator

Re: https://firmwaresecurity.com/2017/04/08/corrode-rust-to-c-translator/

There’s another C to Rust translator:

https://c2rust.com/

https://github.com/immunant/c2rust/tree/master/examples

PFSExtractor-RS: Rust port of PFSExtractor: extract contents of Dell BIOS update files in PFS format

Nikolaj is learning Rust. He just rewrote one C tool to Rust:

https://github.com/LongSoft/PFSExtractor-RS