Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
jailer — Jailer 是一个基于 eBPF 的进程隔离系统,为 Linux 提供强制访问控制(MAC)。它使用 BPF task_storage 映射来跟踪进程,并对文件访问、网络操作和进程执行实施基于角色的策略。 | Kitploit
工具/GitHubGitHub/gen0sec/jailer
防御工具容器安全网络安全云安全
GitHubgen0sec/jailer

jailer

Jailer 是一个基于 eBPF 的进程隔离系统,为 Linux 提供强制访问控制(MAC)。它使用 BPF task_storage 映射来跟踪进程,并对文件访问、网络操作和进程执行实施基于角色的策略。

查看仓库网站
5821910天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Jailer - eBPF 强制访问控制

警告:本项目正处于密集开发阶段,尚未准备好用于生产环境。API、策略格式和行为可能会在不通知的情况下发生变化。仅供测试和实验使用。

致谢

说明:这是一个独立实现,与 Meta 的解决方案并非同一项目。虽然 BpfJailer 在功能上相似,并受到 Meta 的 Liam Wisehart、Justin Ngai、Carl El Khoury、Mansee Chadha 的原始想法和设计的启发,但这是一个独立开发的独立代码库。我们对启发这项工作的愿景和基础概念表示衷心感谢。

社区

Join us on Discord Substack

Jailer 是一个基于 eBPF 的进程隔离系统,为 Linux 提供强制访问控制(MAC)。它使用 BPF task_storage 映射跟踪进程,并对文件访问、网络操作和进程执行实施基于角色的策略。

功能(当前版本)

功能状态描述
进程跟踪✅ 可用使用 task_storage BPF 映射跟踪进程
Socket 注册✅ 可用进程通过 Unix socket API 注册
基于角色的策略✅ 可用受限和宽松角色
文件访问控制✅ 可用阻止/允许文件打开操作
隔离继承✅ 可用子进程继承父进程的隔离
网络控制✅ 可用阻止/允许 socket 绑定/连接
端口/协议过滤✅ 可用按端口 TCP/UDP 允许/拒绝规则
执行控制✅ 可用阻止/允许进程执行
路径匹配✅ 可用带缓存失效的目录项遍历
签名二进制文件🚧 存根二进制签名验证(未实现)
替代注册✅ 可用按可执行文件、cgroup 或 xattr 自动注册
无守护进程模式✅ 可用引导二进制文件在早期启动时固定程序
审计事件✅ 可用用于 systemd-journald 集成的 Perf 缓冲区

Nginx 演示

Nginx demo

复杂演示

asciicast

内核要求

最低内核版本

  • Linux 5.11+(用于 BPF_MAP_TYPE_TASK_STORAGE 支持)
  • 推荐:Linux 6.1+(更好的 BTF 支持)

必需的内核配置

# Check current kernel config
zcat /proc/config.gz 2>/dev/null || cat /boot/config-$(uname -r)

必需选项:

CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_LSM=y
CONFIG_DEBUG_INFO_BTF=y

启用 BPF LSM

必须在内核启动参数中启用 BPF LSM:

# Check if BPF LSM is active
cat /sys/kernel/security/lsm
# Should include "bpf" in the list

# If not, add to kernel boot parameters:
# Edit /etc/default/grub and add to GRUB_CMDLINE_LINUX:
#   lsm=lockdown,capability,landlock,yama,apparmor,bpf

# Then update grub and reboot:
sudo update-grub
sudo reboot

对于 Ubuntu/Debian 系统,你也可以使用:

# Create a script to enable BPF LSM
cat > /tmp/enable_bpf_lsm.sh << 'EOF'
#!/bin/bash
GRUB_FILE="/etc/default/grub"
if grep -q "lsm=" "$GRUB_FILE"; then
    sudo sed -i 's/lsm=[^""]*/lsm=lockdown,capability,landlock,yama,apparmor,bpf/' "$GRUB_FILE"
else
    sudo sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 lsm=lockdown,capability,landlock,yama,apparmor,bpf"/' "$GRUB_FILE"
fi
sudo update-grub
echo "BPF LSM enabled. Please reboot."
EOF
chmod +x /tmp/enable_bpf_lsm.sh
sudo /tmp/enable_bpf_lsm.sh

安装

从发布版本安装

预构建的 tarball 已针对 x86_64 和 aarch64 发布,基于 glibc 2.31 构建,因此它们可以在比构建环境更旧的发行版上运行。

curl -fsSL https://github.com/gen0sec/jailer/raw/main/install.sh | sudo sh

脚本在安装任何内容之前会验证 SHA256。每个构件也都经过 GPG 签名;要检查来源,请先导入发布密钥:

curl -fsSL https://github.com/gen0sec/jailer/releases/download/v0.1.1/bpfjailer-signing-key.asc | gpg --import

要手动安装,请从发布页面下载适用于您架构的压缩包,然后:

tar xzf bpfjailer-*-linux-gnu.tar.gz && cd bpfjailer-*-linux-gnu
sudo install -Dm0755 bpfjailer-bootstrap /usr/sbin/bpfjailer-bootstrap
sudo install -Dm0755 bpfjailer-daemon    /usr/sbin/bpfjailer-daemon
sudo install -Dm0644 bpfjailer.bpf.o     /usr/lib/bpfjailer/bpfjailer.bpf.o
sudo install -Dm0644 policy.json         /etc/bpfjailer/policy.json
sudo install -Dm0644 bpfjailer-*.service /etc/systemd/system/
sudo systemctl daemon-reload

然后启用 安装模式 中描述的两种模式之一。

构建

先决条件

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Install build dependencies (Ubuntu/Debian)
sudo apt-get install -y clang llvm libelf-dev linux-headers-$(uname -r)

# Install BPF target for Rust
rustup target add bpfel-unknown-none

构建所有组件

cd jailer

# Build BPF programs
cd bpfjailer-bpf && cargo build --release && cd ..

# Build daemon and client
cargo build --release

快速开始

1. 启动守护进程

# Run as root (loads config/policy.json if present)
sudo RUST_LOG=info ./target/release/bpfjailer-daemon

预期输出:

[INFO] BpfJailer daemon starting...
[INFO] Loading BpfJailer eBPF programs with libbpf-rs...
[INFO] ✓ pending_enrollments map available for enrollment
[INFO] ✓ network_rules map available for port/protocol filtering
[INFO] ✓ task_storage map created successfully
[INFO] ✓ Program task_alloc attached
[INFO] ✓ Program file_open attached
[INFO] ✓ Program socket_bind attached
[INFO] ✓ Program socket_connect attached
[INFO] ✓ Program bprm_check_security attached
[INFO] Initialized with default roles: restricted (1), permissive (2)
[INFO] Loaded policy from config/policy.json
[INFO] Loaded 5 roles
[INFO] Enrollment server listening on /run/bpfjailer/enrollment.sock

2. 运行安全测试

# Run vulnerability tests WITHOUT jailing (shows attacks succeed)
sudo python3 tests/vulnerable_apps/run_tests.py

# Run vulnerability tests WITH restricted role (shows attacks blocked)
sudo python3 tests/vulnerable_apps/run_tests.py --role 1

# Run specific test
sudo python3 tests/vulnerable_apps/run_tests.py --role 1 --test path

# List available tests and roles
sudo python3 tests/vulnerable_apps/run_tests.py --list

受限角色的示例输出:

============================================================
TEST: Path Traversal / Arbitrary File Read
============================================================
Attempting to read /etc/passwd via path traversal...
BLOCKED - Permission denied (BpfJailer blocked file access)

============================================================
TEST: Command Injection
============================================================
Attempting command injection...
BLOCKED - Permission denied (BpfJailer blocked exec)

============================================================
TEST: Reverse Shell / Data Exfiltration
============================================================
Test 1: Reverse shell connection to 127.0.0.1:4444
BLOCKED - Permission denied (BpfJailer blocked connect)

可用的安全测试

测试漏洞缓解措施
path_traversal通过 ../ 任意读取文件restricted, isolated
command_injectionShell 命令执行restricted, webserver, isolated
reverse_shell向攻击者发起出站连接restricted, isolated
ssrf访问内部服务/云元数据restricted, isolated
arbitrary_write写入敏感路径restricted
crypto_miner下载 + 执行 + 连接矿池restricted, webserver
privilege_escalation读取 shadow,写入 sudoersrestricted

3. 手动注册测试

#!/usr/bin/env python3
import socket
import json
import os

# Connect to daemon
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect("/run/bpfjailer/enrollment.sock")

# Enroll with restricted role (ID 1)
request = {"Enroll": {"pod_id": 1, "role_id": 1}}
sock.send((json.dumps(request) + "\n").encode())
response = sock.recv(4096).decode()
print(f"Enrollment: {response}")
sock.close()

# Try to read a file (should be blocked)
try:
    open("/etc/passwd").read()
    print("File access: ALLOWED")
except PermissionError:
    print("File access: BLOCKED")

策略文件

BpfJailer 从 JSON 策略文件加载角色。守护进程按以下顺序搜索策略文件:

  1. $BPFJAILER_POLICY 环境变量
  2. /etc/bpfjailer/policy.json
  3. config/policy.json(相对于工作目录)

策略文件示例

下载工具