带洞安全运行 —— 基于 eBPF + 深度学习的浏览器内核漏洞利用检测平台
ImmuneX 是一个演示原型,展示如何通过 eBPF 内核探针采集浏览器行为特征,结合 PyTorch 深度神经网络与 IsolationForest 异常检测,实现对浏览器内核漏洞利用的实时检测、攻击类型识别、0-day 变种感知与一键响应处置。
核心理念:借鉴生物免疫思想,即使系统带洞(存在漏洞),也能通过自免疫机制保持安全运行。
Mac Host
└─ Lima (vz / Hypervisor.framework)
├─ soc VM (Ubuntu 24.04, 2C/2G/12G)
│ ├─ uvicorn model_server:app :8080
│ ├─ AttackDetectionNet (PyTorch DNN)
│ ├─ IsolationForest (anomaly detection)
│ ├─ Pattern matching engine (PoC learning)
│ └─ Web Dashboard (http://127.0.0.1:8080)
│
└─ victim VM (Ubuntu 24.04, 4C/4G/20G)
├─ Playwright + Chromium (headless)
├─ bpftrace eBPF probe
├─ browser_agent (JS behavior injection)
└─ telemetry_sender → http://192.168.5.2:8080/telemetry
└─ demo_controller.py (127.0.0.1:8081)
└─ 接收仪表盘按钮请求,转发到 Victim VM 执行演示/响应
- 攻击类型识别:堆喷射、JIT 喷射、沙箱逃逸、数据窃取
- 0-day 变种感知:IsolationForest 异常检测 + PoC 模式学习匹配
- PoC 模式学习:从漏洞 PoC/补丁提取特征模式,持续更新模式库
- 一键响应处置:终止浏览器进程、阻断网络外联、隔离设备、恢复设备
- 设备状态监控:实时显示被攻击 VM 的浏览器进程、eBPF 探针状态
cd ~/browser_ebpf_soc_demo
# 一键启动两台 VM、SOC 服务、控制器,并跑正常 + 堆喷射演示
bash scripts/start_demo.sh
# 打开仪表盘
open http://127.0.0.1:8080
# 停止 VM(保留数据)
bash scripts/stop_demo.sh
# 彻底删除(VM + 项目 + 镜像缓存)
bash scripts/cleanup.sh- 正常状态:仪表盘显示绿色,风险分数在低位
- 触发攻击:点击攻击场景(如堆喷射),风险分数冲高,雷达图变形,AI 判定显示攻击类型
- PoC 学习:点击「学习 copyfail」,系统学习到 copyfail 漏洞模式
- 变种检测:点击「触发 dirtyfrag」,AI 判定显示「小模型:无法精确识别」+「模式匹配:相似度 86%」,弹窗提示「检测到漏洞利用」
- 响应处置:点击「隔离设备」,Victim VM 真实终止浏览器 + 阻断网络
- 恢复设备:点击「恢复设备」,清空规则,设备恢复正常
- 特征采集:eBPF (bpftrace)、Playwright、JS 行为注入
- 分类模型:PyTorch AttackDetectionNet (12→64→128→64→32→5)
- 异常检测:scikit-learn IsolationForest
- 模式匹配:基于 PoC 特征签名的变种检测引擎
- 后端:FastAPI、uvicorn
- 前端:HTML5、Chart.js、毛玻璃 UI
- 虚拟化:Lima (Apple Hypervisor.framework)
- 浏览器:Chromium (headless)
- 架构:12→64→128→64→32→5 DNN
- 参数量:20,165
- 模型大小:78.8 KB
- 推理延迟:0.697 ms
- 平均置信度:99.99%
browser_ebpf_soc_demo/
├── soc/ # SOC 平台
│ ├── model_server.py # FastAPI 推理服务
│ ├── train_model.py # 模型训练脚本
│ ├── pattern_learner.py # PoC 模式学习
│ ├── requirements.txt
│ └── static/index.html # Web 仪表盘
├── victim/ # 被攻击设备
│ ├── browser_agent.py # 浏览器驱动与行为注入
│ ├── ebpf_probe.py # eBPF 探针封装
│ ├── demo_*.py # 各攻击类型演示脚本
│ └── test_page.html # 本地测试页
├── shared/ # 共享定义
│ ├── schema.py # 数据模型与攻击类型
│ └── patterns.json # 漏洞模式库
├── scripts/ # 编排脚本
│ ├── start_demo.sh # 一键启动
│ ├── stop_demo.sh # 停止 VM
│ ├── cleanup.sh # 彻底清理
│ └── demo_controller.py # 主机侧控制器
└── lima_configs/ # Lima VM 配置
├── soc.yaml
└── victim.yaml
- 模型用合成数据训练,仅用于演示概念
- eBPF 无法捕获所有 JIT 编译细节,部分攻击类型主要依赖浏览器级特征
- 网络依赖 Lima vzNAT,两台 VM 通过宿主网关 192.168.5.2 通信
- 所有数据存内存,重启 SOC VM 后清空
MIT