Skip to content

Lind

Welcome to Lind!

Lind is a single-process sandbox that provides an option to safely execute programs. Lind executes applications using software fault isolation and a kernel microvisor to limit the potential of reaching bugs or security flaws in the application.

In Old Norse, Old High German and Old English a “lind” is a shield constructed with two layers of linden wood. Linden wood shields are lightweight, and do not split easily, an appropriate metaphor for a sandboxing system which employs two technologies.

lind-wasm

lind-wasm is a WebAssembly-focused extension of the Lind project. It integrates multiple components—both in-house and third-party—to enable execution of POSIX-like applications in WebAssembly runtimes, such as Wasmtime.

Getting started

Check out the Getting started guide for a Hello World! example and our docs to learn more about Lind!

Supported platforms: lind-wasm targets linux/amd64. A native build requires x86-64 Linux (tested on Ubuntu 22.04) and roughly 20 GB of free disk space.

Host How to run
x86-64 Linux native build, or the development image
Windows Ubuntu 22.04 under WSL2, covered in the Native Linux setup guide; or Docker Desktop with --platform=linux/amd64
macOS (Intel or Apple Silicon) the development image with --platform=linux/amd64; on Apple Silicon this runs under emulation and is slower

On Windows and macOS, clone into a case-sensitive filesystem — the WSL2 ext4 filesystem rather than /mnt/c, for example. The glibc sources contain case-colliding filenames (see #1246).

Run make checkenv to verify a machine.

Repository Structure and Components

This monorepo combines various subprojects and dependencies that work together to support Lind's goals. Below is an overview of the major components:

In-House Projects

Component Location Description
fdtables src/fdtables Provides file descriptor table management, used to emulate POSIX semantics
rawposix src/rawposix Implementation of raw POSIX syscall wrappers used internally by Lind
threei src/threei System call mediation layer for policy deployment
typemap src/typemap Defines custom data structures and type conversion functions used across Lind
cage src/cage Implements the custom Cage structure and its subsystems, including vmmap (virtual memory mapping) and signal handling
sysdefs src/sysdefs Shared system call definitions and constants for cross-platform support
lind-boot src/lind-boot Execution entry point that initializes our modified Wasmtime runtime, 3i, and RawPOSIX

Third-Party Projects (Source)

Project Location Description
glibc src/glibc Modified version of glibc to support WebAssembly and Lind interfaces
wasmtime src/wasmtime Embedded Wasmtime runtime for running and debugging Lind-Wasm modules

Third-Party Binaries

Tool Location Description
binaryen tools/binaryen Provides wasm-opt and other utilities used for optimizing wasm binaries

Contributing and Community

Contributions are welcome. See the repository-specific contribution guide for development setup, testing, and code style. Project-wide policies and community information are maintained in the Lind community repository:

Please report vulnerabilities privately according to our Security Policy.

License

Lind-Wasm is licensed under the Apache License 2.0.

About

Welcome to the Lind sandbox monorepo! See our docs below:

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

23 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages