Cheri Userspace

Change List

  • libprocstat(3) library and procstat(1) command: extended to inspect sandbox statistics.

  • libcheri(3): a sandbox API, and a set of system-class objects that can be delegated to sandboxes. Currently (1), this consists of a singleton system object that provides the ability to print to stdout, and a file-descriptor class that allows delegation of individual kernel-provided file descriptors to sandboxes.

  • libc_cheri(3): core C-language APIs and services within sandboxes. This library is able to use the system and file-descriptor classes to provide access to APIs such as printf().

  • cheritest: test cases for capability-related functions including sandboxing; cheritest relies on cheritest-helper.bin to provide sandboxed code.

  • cheri_tcpdump, sandboxed sniffing and parsing; cheri_tcpdump relies on tcpdump-helper to provide sandboxed code.

  • libz-cheri(3): compression routines with fine-grained memory protection.

Source code

CheriBSD userspace source directories:

Filename Description
bin/cheritest/ Command-line utility exercising CHERI and CheriBSD features, including sandboxing CTSRD-project demo code
ctsrd/ CTSRD-project demo code
lib/libc_cheri/ In-sandbox C library/runtime
lib/libcheri Library implementing the CHERI sandbox API; the CHERI system class implementation
libexec/cheritest-helper/ Sandboxed components for cheritest
libexec/tcpdump-helper/ Sandboxed components for cheri_tcpdump, initialization and context management
lib/libz-cheri Version of libz compiled with CHERI memory protection
usr.sbin/tcpdump/cheri_tcpdump Version of tcpdump able to use CHERI sandboxing
lib/libprocstat/ Extensions to this library allow procstat(1) to monitor libcheri sandboxes
usr.bin/procstat/ procstat(1) command extended to monitor libcheri sandboxes

  1. CHERI programmer’s guide, 2015. (may be outdated) ↩
Created Jul 16, 2019 // Last Updated Oct 27, 2019

If you could revise
the fundmental principles of
computer system design
to improve security...

... what would you change?