Bac à sable eBPF au niveau des bibliothèques pour Python (Linux et macOS) : contrôle au niveau des appels système par module.
secimport est une boîte à outils de sécurité basée sur eBPF qui applique des restrictions d'appels système par module Python, offrant un contrôle granulaire sur le profil de sécurité de votre application. Considérez-le comme seccomp-bpf pour Linux, mais fonctionnant au niveau des modules Python.
git clone https://github.com/avilum/secimport.git
cd secimport/docker
./build.sh && ./run.sh
Ligne de commande :
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', ...])
Installez Python avec les sondes USDT :
# Configure Python with --enable-dtrace
# See detailed instructions in our wiki
Installez un backend pris en charge (eBPF ou DTrace)
# Ubuntu/Debian
apt-get install bpftrace
# For other platforms, see our Installation wiki
Installer secimport
pip install secimport
Outre le bac à sable que secimport construit,
La commande secimport build crée un bac à sable nsjail avec un profil seccomp pour votre code tracé.
nsjail permet l'isolation par espaces de noms avec seccomp sous Linux
secimport génère automatiquement des profils seccomp à utiliser avec nsjail sous forme de script bash exécutable.
Il peut être utilisé pour limiter les appels système de l'ensemble du processus Python, comme une couche de défense supplémentaire.