This document is capturing discussions at the Shadow Stacks and Landing Pads TG and attempts to document the baseline. This is not official specification and everything in this document may change. Control-flow Integrity (CFI) provides CPU instruction set architecture (ISA) capabilities to defend against Return-Oriented Programming (ROP) and Call/Jump-Oriented Programming (COP/JOP) style control-flow subversion attacks.
To enforce backward edge control-flow integrity, the extension introduces a shadow stack. To enforce forward edge control-flow integrity, the extension introduces labeled landing pad instructions.
This work is licensed under a Creative Commons Attribution 4.0 International License (CC-BY-4.0). See the LICENSE file for details.
Contributors to this specification are contained in the contributors.adoc file.
For instructions on how to contribute please see the CONTRIBUTING file.
This project is built using AsciiDoctor (Ruby). The repository has been setup to build the PDF on
checkin using GitHub actions. Workflow dependencies are located in the dependencies
directory.
For more information on AsciiDoctor, specification guidelines, or building locally, see the RISC-V Documentation Developer Guide.
This project uses GitHub Submodules to include the RISC-V docs-resources project to achieve a common look and feel.
When cloning this repository for the first time, you must either use
git clone --recurse-submodules
or execute git submodule init
and git submodule update
after the clone to populate the docs-resources directory. Failure to clone the submodule, will result
in the PDF build fail with an error message like the following:
$ make asciidoctor-pdf \ -a toc \ -a compress \ -a pdf-style=docs-resources/themes/riscv-pdf.yml \ -a pdf-fontsdir=docs-resources/fonts \ --failure-level=ERROR \ -o profiles.pdf profiles.adoc asciidoctor: ERROR: could not locate or load the built-in pdf theme `docs-resources/themes/riscv-pdf.yml'; reverting to default theme No such file or directory - notoserif-regular-subset.ttf not found in docs-resources/fonts Use --trace for backtrace make: *** [Makefile:7: profiles.pdf] Error 1
The final specification form of PDF can be generated using the make
command.