[ANN] restricted 1.1 - Restrict possible system operations and filesystem view of your program

Hello,

I would like to announce a new package restricted.

This library lets you limit which system operations and which parts of the filesystem your program can access. Call it as early as possible in your program so that the rest of the code runs with reduced privileges. Currently, actual enforced restrictions are implemented for these operating systems:

  • OpenBSD

Even on other operating systems, you can still use restricted to document which privileges your program needs. Users can then test that your program respects these promises with tools such as pledge on Linux. Enjoy :wink:

This is my first ocaml library so feel free to give feedback.

5 Likes

Very interesting.

Note that inspired by EIO, I’ve implemented a static (and recently dynamic) capability system for OCaml that works on all operating systems: xix/lib_core/commons/Cap.mli at master · aryx/xix · GitHub

It’s not yet well documented, and not extracted as a separate OPAM library, but I used it in a few programs (this xix project, but also semgrep), and IMHO it is a great way to restrict statically what your code can do.

1 Like