
Python용 라이브러리 수준 eBPF 샌드박스(Linux 및 macOS): 모듈별 syscall 수준 제어.
secimport는 Python 모듈별로 시스템 콜 제한을 적용하는 eBPF 기반 보안 툴킷으로, 애플리케이션의 보안 프로필을 세밀하게 제어할 수 있습니다. 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은 리눅스에서 seccomp를 사용한 네임스페이스 샌드박싱을 활성화합니다
secimport는 실행 가능한 bash 스크립트로 nsjail과 함께 사용할 seccomp 프로필을 자동으로 생성합니다.
이는 또 다른 방어 계층으로서 전체 파이썬 프로세스의 시스템 호출을 제한하는 데 사용할 수 있습니다.