Home
What is Morello-HAT?
The Morello-HAT project intends to create and evaluate a common API that can be used by compiler developers as well as programmers of higher-level languages, to allow them to leverage Morello’s hardware capabilities to improve memory security and type safety, spatial as well as temporal, of their language and programs.
Motivation
Currently, the Morello stack supports C and C++ and the capability API is very low-level and pointer-oriented. There are many promising modern languages with fast-growing popularity (e.g. Go, Rust, Dart,) that are not pointer-based and have different type systems and memory management strategies. It is important for the success of the platform that it supports such languages. There is a wide gap between the current low-level, C-focused capability API and the needs of higher-level languages, and that is the gap which this project aims to fill.
The libraries and tools we will develop as the key deliverables of this project will make it much easier for programming language developers, compiler writers and programmers to incorporate support for Morello's hardware capabilities into their language ecosystems. As a result, applications developed in those modern, fast-growing languages such as Rust, Go and Dart, as well as future languages, can be ported quickly to Morello.
The vulnerability detection and mitigation part of the project will demonstrate the effectiveness of our libraries and tools in mitigating exploits through the use of hardware capabilities. In addition, current debug tools heavily rely on high levels of privilege to operate, and with the debug host and debug target located on the same chip, sharing the same memory and registers and reusing the same debug authentication mechanisms leads to the privilege escalation, we therefore will provide a comprehensive defence mechanism across different roles in the ecosystem by introducing an additional security restriction in the Morello stack.
Recent Activity
- Towards a better memory management API - Part 2 - May 18, 2024
- Towards a better memory management API - Part 1 - November 6, 2023
- Launch of Project Website - September 28, 2023