All Projects → unrelentingtech → capsicumizer

unrelentingtech / capsicumizer

Licence: Unlicense License
Run anything (like full blown GTK apps) under Capsicum

Programming Languages

C++
36643 projects - #6 most used programming language
Meson
512 projects

Projects that are alternatives of or similar to capsicumizer

capsicum-rs
Rust bindings for the FreeBSD capsicum framework
Stars: ✭ 15 (-68.75%)
Mutual labels:  freebsd, capsicum
Judge Server
Judging backend server for the DMOJ online judge.
Stars: ✭ 648 (+1250%)
Mutual labels:  freebsd, sandbox
Bold-Falcon
毕方智能云沙箱(Bold-Falcon)是一个开源的自动化恶意软件分析系统;方班网络安全综合实验-设计类;
Stars: ✭ 30 (-37.5%)
Mutual labels:  sandbox
vulture-base
Vulture 4 base system and bootstrap scripts
Stars: ✭ 33 (-31.25%)
Mutual labels:  freebsd
osutil
Go library to easily detect current operating system, current Linux distribution, macOS version and more...
Stars: ✭ 22 (-54.17%)
Mutual labels:  freebsd
SandboxBrowser
A simple iOS sandbox file browser, you can share files through AirDrop
Stars: ✭ 84 (+75%)
Mutual labels:  sandbox
numbernine
Attempt at a desktop shell and stuff; abandoned in favor of https://github.com/DankBSD/waysmoke
Stars: ✭ 15 (-68.75%)
Mutual labels:  freebsd
ioc
libioc command line tool for BSD jail management
Stars: ✭ 13 (-72.92%)
Mutual labels:  freebsd
docker-machine-driver-bhyve
Docker Machine driver for Bhyve
Stars: ✭ 27 (-43.75%)
Mutual labels:  freebsd
pfSense-pkg-WireGuard
This is a port of the original WireGuard UI bits as implemented by Netgate in pfSense 2.5.0 to a package suitable for rapid iteration and more frequent updating on future releases of pfSense.
Stars: ✭ 194 (+304.17%)
Mutual labels:  freebsd
cli-sandbox
Akamai CLI for Sandbox
Stars: ✭ 14 (-70.83%)
Mutual labels:  sandbox
shadowrealm-api
🗳️ A implementation of the ShadowRealm API Proposal, a JavaScript sandbox, test with TC39 Test262 cases.
Stars: ✭ 44 (-8.33%)
Mutual labels:  sandbox
insaneworks-packer-template
CentOS 7-8 8Stream / AlmaLinux 8 / FreeBSD 12 - 13 x64 + VirtualBox / VMWare for Packer Template + FreeBSD 13 / AlmaLinux 9 + Parallels
Stars: ✭ 38 (-20.83%)
Mutual labels:  freebsd
netty-queue
Simple queue: java, json-rest, netty
Stars: ✭ 21 (-56.25%)
Mutual labels:  sandbox
Awesome-BSD-Ports-Programs-And-Projects
A Repo Detailing BSD Ports, Programs, and Projects.
Stars: ✭ 46 (-4.17%)
Mutual labels:  freebsd
linux2free
Upgrade Linux to FreeBSD remotely via SSH
Stars: ✭ 18 (-62.5%)
Mutual labels:  freebsd
psutil
Cross-platform lib for process and system monitoring in Python
Stars: ✭ 8,488 (+17583.33%)
Mutual labels:  freebsd
Voxel
Sandbox survival game created with Light Engine (Development halted due to other projects)
Stars: ✭ 18 (-62.5%)
Mutual labels:  sandbox
bbcp
BlackBox Cross-Platform (Windows, GNU/Linux, OpenBSD, FreeBSD)
Stars: ✭ 49 (+2.08%)
Mutual labels:  freebsd
paket
A simple and fast package manager for the Fish shell written in Rust. 🐠
Stars: ✭ 31 (-35.42%)
Mutual labels:  freebsd

unlicense

The Super Capsicumizer 9000

capsicumizer is a sandbox launcher that imposes Capsicum capability mode onto an unsuspecting program, allowing "sysadmin style" or "oblivious" sandboxing (i.e. no source code modifications, all restrictions added externally).

You just write AppArmor-esque "profiles" and capsicumizer takes care of sandboxing the applications.

capsicumizer is capable of launching some GUI applications (like gedit) on both Wayland and X11.

(GTK 3.24 required because of this patch)

Note: applications that use syscalls directly (instead of going through libc) — namely, anything compiled with Golang's official compiler — won't be able to actually access files under the allowed paths. This is because we rely on LD_PRELOADing a library (libpreopen) that overrides libc functions like open to make them use openat style functions with pre-opened directory descriptors.

gedit demo: refusing to open /etc

Requirements

  • a recent version of FreeBSD
  • Meson build system
  • libucl >=0.8.1 (pkg: #233383)
  • libpreopen (that linked fork, at least for now) (pkg: someday)

Usage

Capsicumizer profiles are written in UCL syntax (which is pretty common on FreeBSD), and can be used as directly runnable scripts (#!):

#!/usr/bin/env capsicumizer

run = "/usr/local/bin/gedit";

access_path = [
	"$HOME",
	"/usr/local",
	"/var/db/fontconfig",
	"/tmp",
];

library_path = [
	"/lib",
	"/usr/lib",
	"/usr/local/lib",
	"/usr/local/lib/gvfs",
	"/usr/local/lib/gio/modules",
	"/usr/local/lib/gedit",
];

# gedit does not need any extra preloads
# this is just an example
ld_preload = [
	"libgobject-2.0.so"
];

Environment variables and program arguments ($0 etc.) are exposed as UCL variables.

Contributing

By participating in this project you agree to follow the Contributor Code of Conduct.

The list of contributors is available on GitHub.

License

This is free and unencumbered software released into the public domain.
For more information, please refer to the UNLICENSE file or unlicense.org.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].