201 stable releases
3.29.4 | Dec 1, 2024 |
---|---|
3.29.1 | Nov 30, 2024 |
3.27.0 | Oct 11, 2024 |
3.23.17 | Jul 25, 2024 |
3.6.2 | Nov 30, 2023 |
#45 in Unix APIs
288,660 downloads per month
3.5MB
86K
SLoC
Syd is a rock-solid application kernel to sandbox applications on Linux>=5.19. Syd is similar to Bubblewrap, Firejail, GVisor, and minijail. As an application kernel it implements a subset of the Linux kernel interface in user space, intercepting system calls to provide strong isolation without the overhead of full virtualization. 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 an application kernel, it executes system calls on behalf of the sandboxed process rather than continuing them in the sandbox process. LandLock, up to ABI version 6, 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)
- Create & Mknod sandboxing (confine regular & special file creation including memory fds)
- Chown/Chgrp sandboxing (confine owner/group changes on files)
- 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
- Application Firewalls with IP Blocklists
- Lock sandboxing (uses Landlock LSM)
- Crypt sandboxing (Transparent File Encryption with AES-CTR)
- 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)
- Hardened procfs and devfs against Side-channel Attacks
- 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
~12–26MB
~395K SLoC