
eBPF-Sandbox auf Bibliotheksebene für Python (Linux & macOS): Syscall-Kontrolle pro Modul.
secimport ist ein eBPF-basiertes Security-Toolkit, das Syscall-Einschränkungen pro Python-Modul durchsetzt und so eine granulare Kontrolle über das Sicherheitsprofil Ihrer Anwendung ermöglicht. Man kann es sich wie seccomp-bpf für Linux vorstellen, jedoch auf der Ebene von Python-Modulen.
git clone https://github.com/avilum/secimport.git
cd secimport/docker
./build.sh && ./run.sh
Befehlszeile:
secimport --help
Usage: python -m secimport.cli [OPTIONS] COMMAND [ARGS]...
secimport is a comprehensive toolkit designed to enable the tracing, construction, and execution of secure Python runtimes. It leverages USDT probes and eBPF/DTrace technologies to enhance overall security measures.
WORKFLOW: 1. secimport trace / secimport shell 2. secimport build 3. secimport run
QUICKSTART: $ secimport interactive
For more details, please see https://github.com/avilum/secimport/wiki/Command-Line-Usage
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy it or customize the installation. │
│ --help Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ trace Trace a Python process using an entrypoint or interactive shell. │
│ shell Alias for 'trace'. │
│ trace-pid Trace a running process by PID. │
│ build Build a sandbox profile from a trace log. │
│ run Run a Python process inside the sandbox. │
│ interactive Run secimport in interactive mode. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
secimport interactive
# In the Python shell that opens:
>>> secimport trace # Start tracing
>>> import requests # Perform actions you want to profile
>>> # Press CTRL+D to stop tracing
>>> secimport build # Build sandbox from trace
>>> secimport run # Run with enforcement
secimport trace # Trace a new Python process
secimport trace_pid <PID> # Trace an existing process
secimport build # Build sandbox from trace
secimport run [options] # Run with enforcement
# Stop on violation
secimport run --stop_on_violation=true
# Kill on violation
secimport run --kill_on_violation=true
import secimport
# Replace standard import with secure import
requests = secimport.secure_import('requests', allowed_syscalls=['open', 'read', ...])
Python mit USDT-Probes installieren:
# Configure Python with --enable-dtrace
# See detailed instructions in our wiki
Installieren Sie ein unterstütztes Backend (eBPF oder DTrace)
# Ubuntu/Debian
apt-get install bpftrace
# For other platforms, see our Installation wiki
Installiere secimport
pip install secimport
Neben der Sandbox, die secimport erstellt,
erzeugt der Befehl secimport build eine nsjail-Sandbox mit seccomp-Profil für Ihren überwachten Code.
nsjail ermöglicht Namespace-Sandboxing mit seccomp unter Linux
secimport generiert automatisch seccomp-Profile zur Verwendung mit nsjail als ausführbares Bash-Skript.
Es kann verwendet werden, um die Syscalls des gesamten Python-Prozesses einzuschränken, als eine weitere Verteidigungsschicht.