|0.5.2||Jun 14, 2021|
|0.5.1||Jun 14, 2021|
|0.4.7||May 31, 2021|
|0.0.9||May 30, 2021|
#29 in Debugging
837 downloads per month
For updates, check out my blog at https://pink.exherbo.org
SydBox uses autotools. To build, simply do
make -j check
sudo make install. By default this will produce a statically linked SydBox binary.
If you want use dynamic linking, give the
--disable-static option to
To use SydBox you need a Linux kernel with version 5.11 or
newer which includes the secure computing mode
and the system calls
In addition, it is recommended that you enable the kernel option
CONFIG_CROSS_MEMORY_ATTACH so that SydBox can use the system calls
These system calls are available in Linux since 3.2. Note SydBox will use the file
/proc/pid/mem if these system calls are unavailable or not working.
For more information about these requirements, check the following links:
- LWN article about pidfd_getfd
SECCOMP_USER_NOTIF_FLAG_CONTINUE: commit, commit, and commit.
If you do not have a very recent Linux version, you may use Sydbox-1.2.1 which requires Pink's Tracing Library
NOTE: SydBox-2.0.1 and newer do not use ptrace() but use seccomp user notify facilities in recent Linux kernels 5.6 and newer. Hence, PinkTrace is no longer a dependency.
- Git: https://git.exherbo.org/git/pinktrace-1.git
- Lightweight ptrace wrapper library providing a robust API for tracing processes.
- An extensive API reference is available here.
- Tar: https://dev.exherbo.org/distfiles/pinktrace/pinktrace-0.9.6.tar.bz2
- Git: https://git.exherbo.org/git/pinktrace-1.git
NOTE: Pandora is in its early stages of development. To be able to use Pandora you need Sydbox-2.0.1 or later.
You can check the build options using
$ sydbox --version sydbox-2.0.1 Options: dump:yes seccomp:yes ipv6:yes netlink:yes
To see if your system is supported by SydBox, use
$ sydbox --test sydbox: Linux/chesswob 5.12.10 sydbox: [>] Checking for requirements... sydbox: [*] cross memory attach is functional. sydbox: [*] /proc/pid/mem interface is functional. sydbox: [*] pidfd interface is functional. sydbox: [*] seccomp filters are functional. sydbox: [>] SydBox is supported on this system!
To verify SydBox is working correctly, either use
make -j check during
installation or use the helper utility
sydtest to run the installed tests.
Pandora's Box: A helper for SydBox, a ptrace & seccomp based sandbox to make sandboxing practical. This makes it easy for the end user to use secure computing for practical purposes.
Step 1: Inspect and gather data about the given process.
In this case, we're going to try with https://www.mozilla.org/de/firefox/new/.
$ pandora profile firefox
Browse using firefox for a while, let pandora gather data. The browser is running under a tracer so it'll run noticably slower.
- use --bin /path/to/sydbox, if sydbox is not in PATH
- use --output firefox.syd-2 to specify an alternative output path for profile.
$ $EDITOR out.syd-2
Inspect what the browser has been doing.
Enable, disable additional options or turn paths into wildcards such as
/home/*** to allow home and everything beyond /home
the usual glob characters,
?, * are supported.
Check SydBox manual page to learn more on how PATTERN MATCHING works.
Enable, disable additional network addresses unless you're using a SOCKS5 proxy which does remote DNS lookups, e.g:
Check SydBox manual page to learn more on how ADDRESS MATCHING works.
$ pandora box -c out.syd-2 firefox
Run the browser under secure computing with full protection.
Check the console for possible access violations over time.
Edit the profile file as necessary and update restrictions.
For instance if you see an access violation such as
sydbox: 8< -- Access Violation! -- sydbox: connect(-1, unix:/run/user/1000/pulse/native) sydbox: proc: AudioIPC Server (parent:0) sydbox: cwd: `/home/alip/src/exherbo/sydbox-1' sydbox: cmdline: `/usr/lib/firefox/firefox ' sydbox: >8 -- sydbox: 8< -- Access Violation! -- sydbox: connect(-1, unix:/var/run/pulse/native) sydbox: proc: AudioIPC Server (parent:0) sydbox: cwd: `/home/alip/src/exherbo/sydbox-1' sydbox: cmdline: `/usr/lib/firefox/firefox ' sydbox: >8 --
This sounds like you're trying to play some audio on your browser. In this case, you
should add an allowlist to your profile
.syd-2 file and restart your browser under
this new profile.
Note, sometimes you may have to add a symbolic link rather than the file it is pointing to, or vice versa, or both.
Last but not least,
Share your profile with other people and help others use secure computing!
Here is a Firefox profile edited by yours truly:
Below are the details of the author. Mail is preferred. Attaching poems encourages consideration tremendously.
Hey you, out there beyond the wall, Breaking bottles in the hall, Can you help me?
- Alï Polatel email@example.com
- Exherbo: https://git.exherbo.org/dev/alip.git/
- Github: https://github.com/alip/
- Twitter: https://twitter.com/hayaliali
- Mastodon: https://mastodon.online/@alip
- IRC: alip at Libera
- Original Git: https://git.exherbo.org/sydbox-1.git/
- Github Mirror: https://github.com/sydbox/sydbox-1
Github mirror is updated periodically. Feel free to submit an issue or a pull request there. Attaching poems encourages consideration tremendously.
- Sydbox: Stop Skype P2P/Call Home: People Have The Right To Communicate W\o Eavesdropping
- Recent Linux Changes Help Safe & Secure w\o Root
- A Study in Sydbox
- Pink's Tracing Library
- Sydbox Logo Survey
- Sydbox: Default Sandbox of Exherbo
- Disabling External Commands in Metadata Phase (Exherbo>Gentoo)
- ptrace on IA64
- Network Sandboxing and /proc (Exherbo>Gentoo)
- ptrace on FreeBSD
- Running Untrusted Binaries that Access the Network
- Proper Network Sandboxing (Exherbo>Gentoo)
- Deprecating addpredict (Exherbo>Gentoo)