secimport 是一个基于 eBPF 的安全工具包,可按 Python 模块强制执行系统调用限制,从而对你的应用程序安全配置提供细粒度控制。可以把它理解为 Linux 上的 seccomp-bpf,但工作在 Python 模块级别。
git clone https://github.com/avilum/secimport.git
cd secimport/docker
./build.sh && ./run.sh
命令行:
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', ...])
安装带有 USDT 探针的 Python:
# Configure Python with --enable-dtrace
# See detailed instructions in our wiki
安装受支持的后端(eBPF 或 DTrace)
# Ubuntu/Debian
apt-get install bpftrace
# For other platforms, see our Installation wiki
安装 secimport
pip install secimport
除了 secimport 构建的沙箱之外,
secimport build 命令会为你的被追踪代码创建一个带有 seccomp 配置文件的 nsjail 沙箱。
nsjail 在 Linux 上启用带 seccomp 的命名空间沙箱
secimport 会自动生成可与 nsjail 配合使用的 seccomp 配置文件,作为可执行的 bash 脚本。
它可用于限制整个 Python 进程的系统调用,作为另一层防御。
我们欢迎贡献!详情请参阅我们的贡献指南。
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。