190 stable releases
3.26.1 | Sep 30, 2024 |
---|---|
3.25.0 | Aug 31, 2024 |
3.23.17 | Jul 25, 2024 |
3.15.7 | Mar 27, 2024 |
3.6.2 | Nov 30, 2023 |
#29 in Unix APIs
486,922 downloads per month
3MB
65K
SLoC
Syd is a rock-solid unikernel to sandbox applications on Linux>=5.19. Syd is similar to Bubblewrap, Firejail, GVisor, and minijail. Syd is secure by default, and intends to provide a simple interface over various intricate Linux sandboxing mechanisms such as LandLock, Namespaces, Ptrace, and Seccomp-{BPF,Notify}, most of which have a reputation of being brittle and difficult to use. You may run Syd as a regular user, with no extra privileges, and you can even set Syd as your login shell. Syd adheres to the UNIX philosophy and intends to do one thing and do it well with least privilege: Neither SETUID is required like Firejail, nor privileged kernel context is required like EBPF-based alternatives such as Falco or this. Syd is based mostly on and shares its Threat Model with Seccomp. Syd does not suffer from TOCTTOU issues like GSWTK and Systrace: As a unikernel, it executes system calls on behalf of the sandboxed process rather than continuing them in the sandbox process. LandLock ABI version 3 is supported for additional hardening. Use of Ptrace is minimal and optional with a negligible overhead. Use of unprivileged user namespaces is optional and off by default. A brief overview of Syd's capabilities are as follows:
- Read sandboxing
- Write sandboxing (with Append-only Paths, and Path Masking)
- Stat sandboxing (aka Path Hiding)
- Exec sandboxing (and SegvGuard)
- Ioctl sandboxing (contain AI/ML workloads, access PTY, DRM, KVM safely)
- Force sandboxing (aka Verified execution, like Veriexec and Integriforce )
- TPE sandboxing (aka Trusted Path Execution)
- Network sandboxing (feat. UNIX, IPv4, IPv6, Netlink, and KCAPI sockets)
- Lock sandboxing (uses Landlock LSM)
- Proxy sandboxing (SOCKS proxy forwarding with network namespace isolation, defaults to TOR)
- Memory sandboxing
- PID sandboxing (simpler alternatives to Control Groups)
- SafeSetID (Safe user/group switching with predefined UID/GID transitions)
- Ghost mode (similar to Seccomp Level 1 aka Strict Mode)
- Namespaces and Containerization
- Learning mode with Pandora
Read the fine manuals of syd,
libsyd,
gosyd,
plsyd,
pysyd,
rbsyd,
syd.el and watch the asciicasts Memory
Sandboxing, PID
Sandboxing, Network
Sandboxing, and Sandboxing Emacs with
syd. Join the CTF event at
https://ctftime.org/event/2178 and try to read the file /etc/CTF
¹ on
syd.chesswob.org with ssh user/pass: syd.²
- Use cargo to install from source, requires libseccomp.
- To use with Docker, Podman, or CRI-O build with the "oci" feature, see: https://man.exherbolinux.org/syd-oci.1.html
- Packaged for Alpine, Exherbo, and Gentoo.
- Binary releases for arm64, armv7, ppc64le, riscv64, s390x, x86, and x86-64 are located at https://distfiles.exherbolinux.org/#sydbox/
- Releases are signed with this key: https://distfiles.exherbolinux.org/sydbox/syd.asc
- Report security issues to
syd AT chesswob DOT org
. Encrypt with the key above. - Change Log is here: https://gitlab.exherbo.org/sydbox/sydbox/-/blob/main/ChangeLog.md
- VIM syntax highlighting file for Syd profiles is here: https://gitlab.exherbo.org/sydbox/sydbox/-/tree/main/vim
- Tested on arm64, armv7, ppc64le, riscv64, s390x, x86, and x86-64 with GitLab Pipelines, and SourceHut Builds.
Maintained by Ali Polatel. Up-to-date sources can be found at https://gitlab.exherbo.org/sydbox/sydbox.git and bugs/patches can be submitted to https://gitlab.exherbo.org/groups/sydbox/-/issues. Follow toots with the #sydbox hashtag and discuss in #sydbox on Libera Chat.
¹: SHA256(/etc/CTF
)=f1af8d3946546f9d3b1af4fe15f0209b2298166208d51a481cf51ac8c5f4b294
²: Start by reading the CTF sandbox profile.
Dependencies
~10–28MB
~378K SLoC