Jean-Regis-M/SentinelML
GitHub: Jean-Regis-M/SentinelML
一款基于 eBPF 和 Rust 的 AI 工作负载运行时安全防护工具,通过内核级遥测实现低延迟异常检测,解决传统安全代理在高强度 ML 基础设施中造成的性能瓶颈问题。
Stars: 1 | Forks: 0
# 🛡️ SentinelML:内核原生 AI 工作负载防护
[](https://github.com/Jean-Regis-M/SentinelML)
[](LICENSE)
[](https://ebpf.io/)
[](https://www.rust-lang.org/)
[](https://kubernetes.io/)
[](https://expressjs.com/)
## 📖 目录
1. [概述与核心任务](#1-executive-summary--core-mission)
2. [统一架构与拓扑图](#2-unified-architecture--topology-map)
3. [深度 eBPF 探针规格说明](#3-deep-ebpf-probe-specifications)
4. [用户空间遥测 Daemon (Rust) 架构](#4-userspace-telemetry-daemon-rust-architecture)
5. [企业级 Operator 仪表盘 (React + TypeScript)](#5-enterprise-operator-dashboard-react--typescript)
6. [高价值异常检测矩阵](#6-high-value-anomaly-detection-matrix)
7. [完整 REST API 架构文档](#7-full-rest-api-schema-documentation)
8. [设置与安装说明](#8-setup--installation-instructions)
9. [性能延迟概况与研究](#9-performance-latency-profiles--studies)
10. [路线图与愿景目标](#10-roadmap--vision-targets)
11. [贡献与开发工作流](#11-contribution--development-workflows)
12. [协同漏洞披露与许可协议](#12-coordinated-vulnerability-disclosure--licensing)
## 1. 概述与核心任务
在高强度的机器学习基础设施(PyTorch 训练节点、Ray 处理 runtime、密集型 Triton 推理主机)中部署传统的端点检测与响应 (EDR) 代理或基于审计的系统跟踪配置会带来三个致命问题:
* **不可接受的训练延迟**:用户空间审计 hook 会降低 CPU 缓存利用率并阻塞多线程 I/O 操作,导致繁重的神经网络循环无法进行优化。
* **资源缓存侵占**:厚重的安全层占用了 RAM 块,导致 GPU 缓存和系统限制频繁换页,降低了 PyTorch 的处理性能。
* **硬件与内核盲点**:标准的跟踪日志仅验证 shell 文件,但无法拦截底层的 GPU 分配、原始 CUDA 内核或 NVIDIA 驱动程序系统调用,从而允许模型权重被静默窃取。
**SentinelML** 通过将 **通过 eBPF 探针实现的内核级过滤** 与 **用 Rust 编写的快速、内存安全的用户空间 daemon**,以及由 **Gemini GenAI** 驱动的分析控制台相结合,解决了这些限制。通过在内核中过滤事件并使用无锁共享内存 ring-buffer,SentinelML 实现了接近零的延迟开销(+0.12% 的延迟基准)。
## 2. 统一架构与拓扑图
SentinelML 实现了一个跨越内核边界和用户空间接口的完全解耦的双平面拓扑:
```
LINUX RUNTIME KERNEL SPACE
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ [Tracepoint: execve] [Kprobe: do_sys_openat2] [Uprobe: nv_ioctl] │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ Exec Payload Verify file paths NVIDIA Device │
│ Metadata Cache & mismatch flags Driver Calls │
│ │ │ │ │
│ └──────────────────────────────┼────────────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ sentinel_events ringbuf │ │
│ └────────────────┬─────────────────┘ │
└─────────────────────────────────────────┼───────────────────────────────────┘
│
│ Lockless 16MB Zero-Copy RingBuffer
▼
SENTINELML USERSPACE RUST DAEMON
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ ┌──────────────────────────────────┐ │
│ │ Tokio Async MPSC Channel │ │
│ └────────────────┬─────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ Cgroups Cluster Binder │ │
│ └────────────────┬─────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ Threat Categorizer Engine │ │
│ ├────────────────┬─────────────────┴──────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ Rule Match Stats Baseline AI Core Engine│
│ │ │ │ │
│ └────────────────┼────────────────────────────────┘ │
│ ▼ │
│ Active Alert Incident! │
│ │ │
│ ┌──────────────────────┴──────────────────────┐ │
│ ▼ ▼ │
│ Prometheus Scrapers HTTP REST Engine │
│ (Port 9090 Interface) (Express Port 3000) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
## 3. 深度 eBPF 探针规格说明
SentinelML 在运行容器的主机或云原生节点内部直接 hook 事件。利用 BPF 类型格式 (BTF) 和一次编译处处运行 (CO-RE) 技术,二进制文件可以在各种内核版本上安全运行。
### A. kprobe/do_sys_openat2
* **目标 Hook**:在实际的文件描述符被解析之前拦截文件打开操作。
* **安全上下文**:评估调用 UID 是否具备 ML 执行能力。如果非特权执行线程请求读取深层权重格式(`.safetensors`、`.bin`、`.pt`)的属性,该调用将注册一个交互式数据渗出审计事件。
### B. tracepoint/syscalls/sys_enter_execve
* **目标 Hook**:检查在容器边界内创建的可执行进程。
* **安全上下文**:跟踪目标 Pod 上的参数设置,以发现反弹 shell 入侵、异常工具(`curl`、`ncat`、`wget` 从未知来源下载)或试图绕过 namespace 规则的行为。
### C. uprobe/nvidiactl
* **目标 Hook**:检查通过 `/dev/nvidiactl` 写入本地图形处理单元的进程。
* **安全上下文**:捕获 CUDA payload 特征,并根据 GPU-operator 环境中的加密货币挖矿拦截规则评估参数。
## 4. 用户空间遥测 Daemon (Rust) 架构
一旦经过验证的内核事件到达环形 ring-buffer 通道,我们的用户空间收集器就会立即编译、处理并发送原始事件。
```
[Kernel Event Socket] ──► [Tokio Async Receiver] ──► [Cgroups Metadata Lookup]
│
▼
[Prometheus/Rest Bus] ◄── [Categorizer Resolver] ◄── [Cluster Pod Association]
```
### 核心架构组件:
* **Tokio 多生产者单消费者 Pipeline**:事件循环并发地拉取 payload 帧,而不会阻塞关键的 CPU 线程,从而防止在高跟踪计数下出现内存丢弃或溢出。
* **Cgroups 解析引擎**:使用 `/sys/fs/cgroup` 中的文件描述符立即解析容器 ID,允许 daemon 将调用的 PID 与其对应的 Kubernetes Pod 名称和 namespace 相关联。
* **高耐用性规则解析器**:使用高效的内存模式匹配针对签名规范评估警报,确保不会在正常事务上增加开销。
## 5. 企业级 Operator 仪表盘 (React + TypeScript)
SentinelML 集成了一个由 React 18、Tailwind CSS 和 Lucide Icons 驱动的整洁、响应迅速且高密度的 Operator 仪表盘。
UI 分为四个功能视图:
1. **运维仪表盘**:
提供集群状态的实时视图,包括 eBPF 状态、每秒处理的事件数、内存消耗、GPU 遥测(包含利用率指标、泄漏因素和文件系统事务图)以及实时威胁源。
2. **24 小时威胁热力图**:
* **交互式网格**:在 24 小时的水平坐标窗口内,针对 namespace 绘制活动和历史安全警报。
* **实时文本搜索框**:允许操作员实时即时搜索 namespace 行。
* **原生 Space 过滤选择器**:操作员可以直接使用下拉菜单隔离特定的 Kubernetes namespace,以专注于目标容器组。
* **交互式单元格提示**:将鼠标悬停在网格单元格上会显示详细的事件计数、严重性评分以及针对性的缓解建议。
3. **GenAI 诊断 Copilot**:
由 **通过 Express 路由的 Google Gemini 开发者 API** 提供支持,Copilot 为 markdown 日志中的选定安全警报编译深度遏制 playbook、取证见解和 eBPF hook 审查。
4. **YAML 安全规则编辑器**:
允许开发者实时起草、调整和评估针对文件渗出、GPU 挖矿程序哈希和出站网络吞吐量限制的安全定义。
## 6. 高价值异常检测矩阵
SentinelML 保护关键系统免受针对 AI 架构的威胁:
```
ADVERSARIAL ATTACK STEPS SENTINELML TELEMETRY INTERCEPS
───────────────────────── ────────────────────────────────
[ Pod Introspect Action ] ───► kprobe: openat2 on /proc configurations
[ Weights theft attempt ] ───► Blocked weight descriptor locks (safetensors)
[ GPU CryptoMining spawn ] ───► uprobe: Intercept in nvidia_ioctl write commands
[ Reverse Shell exfiltr. ] ───► tracepoint: sys_enter_execve matching shell structures
```
| 漏洞目标 | 严重性 | 操作性威胁 | 内核缓解措施 |
|---|---|---|---|
| **模型权重窃取** | **严重** | 未授权读取者从共享集群卷中渗出参数。 | **Block I/O / SIGKILL**:终止请求访问权重文件(`*.safetensors`、`*.pt`)的读取线程。 |
| **GPU 加密劫持** | **高** | 受损的 Pod 在物理 GPU 上运行挖矿引擎。 | **Context Kill**:拦截 CPU-GPU 上下文映射并终止 CUDA 工作负载。 |
| **Namespace 提权**| **高** | Pod 逃逸试图访问系统进程或 root 路径。 | **Cgroup 隔离**:限制容器边界并将进程标记给集群 API 协调器。 |
| **模型投毒** | **中** | 未授权写入参数以破坏活动模型路径。 | **受审计的写入拦截**:阻止来自非 ML 系统组对关键模型的写入操作。 |
## 7. 完整 REST API 架构文档
SentinelML 运行在安全的全栈模型上。React 仪表盘通过安全的后端 Express REST 路由获取数据,将所有分析模型凭证和 API 密钥隔离在服务器端。
| Endpoint | 方法 | Payload 架构 | 描述 |
|---|---|---|---|
| `/api/system/status` | `GET` | *None* | 提供主动监控状态、已加载的探针列表、队列长度、内存占用和 GPU 统计信息。 |
| `/api/alerts` | `GET` | *None* | 返回完整的跟踪安全事件数组。 |
| `/api/alerts/simulate` | `POST` | `{"category": "CryptoMining" \| "DataExfiltration" \| "ModelTheft"}` | 注入模拟跟踪事件以验证通知路径和仪表盘可视化渲染。 |
| `/api/alerts/:id/mitigate` | `POST` | *None* | 解决活动警报,将其状态更新为 `mitigated`。 |
| `/api/alerts/clear` | `POST` | *None* | 重置活动跟踪日志数据库,以便进行干净的性能分析运行。 |
| `/api/copilot/analyze` | `POST` | `{"alertId": "string"}` | 将警报上下文发送到服务器端的 Gemini API,返回安全遏制 playbook。 |
## 8. 设置与安装说明
SentinelML 可以作为 Kubernetes daemon 运行以捕获节点级别的事件,或者作为独立的本地开发设置运行。
### Kubernetes 部署 (生产 CLI)
1. **添加并更新 Helm 仓库**:
helm repo add sentinelml https://charts.sentinelml.io
helm repo update
2. **在 `overrides.yaml` 中定义自定义规则**:
daemon:
debug: false
perfRingbufferSizeMb: 16
riskThreshold: 0.82
dashboard:
replicaCount: 2
service:
type: LoadBalancer
port: 80
3. **执行 Helm install 命令**:
helm install sentinelml sentinelml/sentinelml \
--namespace sentinel-system \
--create-namespace \
-f overrides.yaml
### 本地独立开发设置
要在本地构建并运行 SentinelML,请在运行 v5.8+ 内核的 Linux 工作站上执行以下步骤:
#### 前置依赖:
* Clang (v11 或更高版本) 和 LLVM 编译器包。
* 与您的内核 runtime 匹配的 Linux 内核头文件 (`uname -r`)。
* 稳定的 Rust 工具链 (v1.76 或更高版本)。
* NodeJS (v18+) 和 NPM 打包管理器。
#### 逐步构建序列:
1. **克隆仓库**:
git clone https://github.com/Jean-Regis-M/SentinelML.git
cd SentinelML
2. **编译 eBPF 探针**:
cd ebpf
make all
*预期输出:* `[+] Compiled eBPF CO-RE bytecode: build/sentinel_bpf.bpf.o`
3. **编译用户空间分析 Daemon (Rust)**:
cd ../daemon
cargo build --release
4. **启动 Web 运维控制台**:
确保在本地 `.env` 配置文件中指定了必要的环境密钥(例如用于 AI 分析的 `GEMINI_API_KEY`):
cd ..
npm install
npm run dev
打开浏览器访问 `http://localhost:3000` 即可与控制台进行交互。
## 9. 性能延迟概况与研究
我们的基准测试运行是针对高强度的 ML 工作负载(PyTorch 2.2,在物理 PCIe NVIDIA H100 GPU 单元上微调 LLaMA-7B 权重)进行评估的:
```
TRAINING PROCESS LATENCY COMPARISON
(Lower Job Lag % means better performance)
No security agent [0.0% Lag Baseline]
████████████████████████████████████████████████████████████████ (0.0% Lag)
SentinelML agent [+0.12% Lag]
█████████████████████████████████████████████████████████████████ (+0.12% Lag)
Falco Security agent [+6.2% Lag]
█████████████████████████████████████████████████████████████████████ (+6.2% Lag)
auditd logging framework [+8.4% Lag]
████████████████████████████████████████████████████████████████████████ (+8.4% Lag)
```
| 诊断引擎系统 | 事件处理速率 | ML 作业训练延迟 (%) | 活动 Daemon 内存 (MB) |
|---|---|---|---|
| **无活动分析器 (基准)** | 0 (无跟踪) | 0.00% (基准) | 0.0 MB |
| **auditd daemon syslogs** | 14,000 | +8.41% 延迟 | ~120.0 MB |
| **Falco 标准跟踪** | 250,550 | +6.20% 延迟 | ~184.2 MB |
| **SentinelML (eBPF + Rust)** | **850,900** | **+0.12% 延迟** | **42.5 MB** |
延迟的降低是通过使用 **内核侧 map 过滤和低延迟共享 ring** 实现的。事件直接在 eBPF 内核 map 中进行检查,完全避免了安全事务从内核到用户空间的上下文切换。
## 10. 路线图与愿景目标
* **v1.0.0 (核心引擎基准)**:高性能 eBPF 系统调用探针、无锁 Rust ring-buffer 解析器、双 cgroup namespace 解析以及交互式仪表盘。
* **v2.0.0 (GPU 硬件内存保护器)**:直接虚拟化 hook,用于监控物理 GPU 集群并直接在 PCIe 寄存器上跟踪执行模式。
* **v3.0.0 (协作 AI 盾牌)**:联邦模型集成,允许跨集群的节点安全地共享威胁分析遥数据。
## 11. 贡献与开发工作流
我们欢迎社区的贡献!要贡献修复、新的 eBPF 探针或 daemon 改进:
1. 请查阅我们的 [SentinelML 贡献指南 (CONTRIBUTING.md)](CONTRIBUTING.md),其中概述了 C (eBPF) 和 Rust 的编码风格指南。
2. 使用适当的 [GitHub Issue 模板](.github/ISSUE_TEMPLATE/),在我们的官方跟踪板上提交错误报告或功能请求:[github.com/Jean-Regis-M/SentinelML](https://github.com/Jean-Regis-M/SentinelML)。
3. 确保所有代码编译无警告,格式整洁(`cargo fmt --all`、`npm run lint`),并通过单元测试。
## 12. 协同漏洞披露与许可协议
由于 SentinelML 直接运行在关键系统的内核空间中,因此保障工作负载的安全是我们的最高优先级:
* **防止公共漏洞利用**:请勿在公开的 GitHub issue 中报告安全绕过、权限提升或内核崩溃。
* **私密报告路由**:将使用 PGP 加密的报告、概念验证和日志提交至 **security@sentinelml.io**(PGP 公钥坐标:`F50A 1B89 92C0 EE45`)。
SentinelML 在 Apache 2.0 和 GPL 2.0 双重许可下发布。提交代码即表示您同意在同等条款下发布贡献。
*使用 SentinelML,让您高性能的 AI 扩展保持安全、高效且不受损害。*
标签:0day防御, AI工作负载保护, AMSI绕过, API接口, DNS解析, Docker镜像, Express, JSONLines, Linux内核, Mr. Robot, React, Rust, Syscalls, TypeScript, 人工智能安全, 代码示例, 低延迟, 内核遥测, 可视化界面, 合规性, 威胁检测, 子域名突变, 安全工程, 安全插件, 开源项目, 异常检测, 数据分析, 无线安全, 流量嗅探, 端点检测与响应(EDR), 网络安全, 网络安全审计, 网络流量审计, 自动化攻击, 自定义请求头, 隐私保护, 零信任