
صندوق رمل eBPF على مستوى المكتبة لـ Python (Linux وmacOS): تحكم على مستوى استدعاءات النظام لكل وحدة.
secimport هي مجموعة أدوات أمنية مبنية على eBPF تفرض قيودًا على استدعاءات النظام (syscalls) لكل وحدة Python، مما يوفر تحكمًا دقيقًا في ملف الأمان الخاص بتطبيقك. فكّر فيها كـ seccomp-bpf لنظام Linux، لكنها تعمل على مستوى وحدة 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', ...])
ثبّت Python مع مجسّات USDT:
# 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
إلى جانب بيئة العزل (sandbox) التي يبنيها secimport،
يقوم الأمر secimport build بإنشاء بيئة عزل nsjail مع ملف تعريف seccomp للكود الذي تم تتبعه.
يتيح nsjail عزل مساحات الأسماء (namespace sandboxing) مع seccomp على لينكس
يقوم secimport تلقائيًا بإنشاء ملفات تعريف seccomp لاستخدامها مع nsjail كسكربت bash قابل للتنفيذ.
يمكن استخدامه لتقييد استدعاءات النظام (syscalls) لعملية بايثون بأكملها، كطبقة دفاع إضافية.