ntbnaren7/cyber-sentinel
GitHub: ntbnaren7/cyber-sentinel
一个基于OpenEnv标准的强化学习环境,用于模拟训练AI Agent处理SIEM分流、威胁狩猎和云加固等自主SOC运营任务。
Stars: 0 | Forks: 0
## 标题:Cyber-Sentinel
emoji: 🛡️
colorFrom: blue
colorTo: gray
sdk: docker
pinned: false
app_port: 7860
# 🛡️ Cyber-Sentinel:自主 SOC Agent 环境
[](https://github.com/meta-pytorch/OpenEnv)
[](https://python.org)
[](https://opensource.org/licenses/MIT)
## 🎯 动机
安全运营中心每天需要处理**成千上万条警报**。分析师面临警报疲劳、复杂的对手以及日益扩展的云基础设施。识别并控制漏洞的平均时间为**277 天**(IBM,2023 年)。
**Cyber-Sentinel** 模拟了 AI Agent 产生最大影响的三种核心 SOC 工作流:
1. **警报分流** — Agent 能否从噪声中区分出真正的攻击?
2. **威胁搜寻** — 它能否追踪攻击者在网络中的活动并控制漏洞?
3. **云加固** — 它能否在不导致停机的情况下修复基础设施配置错误?
这些都是高风险的现实任务,一旦出错后果严重:遗漏一条勒索软件警报可能造成数百万美元的损失;隔离错误的服务器则会扰乱业务运营。
## 📋 任务
| # | 任务 | 难度 | 目标 | 最大步数 |
|---|------|-----------|-----------|-----------|
| 1 | **SIEM 警报分流** | 🟢 简单 | 将 8 条安全警报分类为良性/可疑/恶意 | 20 |
| 2 | **取证威胁搜寻** | 🟡 中等 | 调查 6 台主机以查找、终止并隔离受损机器 | 20 |
| 3 | **云边界加固** | 🔴 困难 | 修复 5 个云配置错误而不导致服务中断 | 25 |
### 评分 (0.0 – 1.0)
所有评分器都是**确定性且程序化的** — 不使用 LLM 作为评判。
#### 任务 1:警报分流
| 结果 | 奖励 |
|---------|--------|
| 分类正确 | `+1/total_alerts` (~0.125) |
| 漏报 (恶意 → 良性) | `-0.15` |
| 误报 (良性 → 恶意) | `-0.05` |
#### 任务 2:威胁搜寻
| 结果 | 奖励 |
|---------|--------|
| 查询受损主机日志 | `+0.10` |
| 查询正常主机 (排除) | `+0.02` |
| 终止正确的恶意进程 | `+0.25` |
| 终止错误的进程 | `-0.10` |
| 隔离正确的主机 | `+0.40` |
| 隔离错误的主机 | `-0.20` |
#### 任务 3:云加固
| 结果 | 奖励 |
|---------|--------|
| 正确的补救措施 | `+0.15` |
| 严重性顺序奖励 (CRITICAL 优先) | `+0.05` |
| 阻断关键端口 (中断) | `-0.30` |
| 错误的操作/策略 | `-0.05` |
## 🔌 动作空间
所有动作使用单个带有 `action_type` 判别器的 `CyberSentinelAction` 模型:
```
# Alert Triage
{"action_type": "triage_alert", "alert_id": "alert_001", "classification": "malicious", "metadata": {}}
# Forensic Hunting
{"action_type": "query_logs", "host_id": "host_003", "indicator": "198.51.100.23", "metadata": {}}
{"action_type": "kill_process", "host_id": "host_003", "process_id": "6666", "metadata": {}}
{"action_type": "isolate_host", "host_id": "host_003", "metadata": {}}
# Cloud Hardening
{"action_type": "restrict_access", "asset_id": "customer-data-bucket", "policy": "deny_public", "metadata": {}}
{"action_type": "enable_protection", "asset_id": "root-account", "policy": "enable_mfa", "metadata": {}}
{"action_type": "apply_policy", "asset_id": "prod-web-server", "policy": "least_privilege", "metadata": {}}
```
## 👁️ 观测空间
`CyberSentinelObservation` 包括:
| 字段 | 类型 | 描述 |
|-------|------|-------------|
| `task_name` | str | 当前任务标识符 |
| `task_description` | str | 人类可读的目标及约束 |
| `step_count` / `max_steps` | int | 进度跟踪 |
| `done` | bool | 当前回合是否结束 |
| `reward` | float | 每步奖励增量 |
| `current_score` | float | 累积分数 [0.0, 1.0] |
| `last_action_success` | bool | 上一个动作是否有效 |
| `last_action_error` | str? | 无效时的错误消息 |
| `siem_alerts` | list? | SIEM 警报源 (仅限 alert_triage) |
| `network_hosts` | list? | 网络主机 (仅限 threat_hunting) |
| `threat_intel` | dict? | IoC 详情 (仅限 threat_hunting) |
| `investigation_log` | list? | 查询结果历史 (仅限 threat_hunting) |
| `cloud_assets` | list? | 云基础设施 (仅限 cloud_hardening) |
| `vulnerabilities` | list? | 活跃的配置错误 (仅限 cloud_hardening) |
| `service_status` | dict? | 关键服务运行时间 (仅限 cloud_hardening) |
## 🚀 安装与使用
### 前置条件
- Python 3.10+
- [uv](https://docs.astral.sh/uv/) (推荐) 或 pip
### 本地开发
```
# Clone the repo
git clone
cd corp-ops-env
# Install dependencies with uv
uv sync
# Start the environment server (Terminal 1)
uv run uvicorn server.app:app --host 0.0.0.0 --port 7860
# Run inference (Terminal 2)
HF_TOKEN=your_token uv run python inference.py
```
### Docker
```
# Build
docker build -t cyber-sentinel .
# Run
docker run -p 7860:7860 cyber-sentinel
# Run inference against the container
HF_TOKEN=your_token python inference.py
```
### 环境变量
| 变量 | 必需 | 默认值 | 描述 |
|----------|----------|---------|-------------|
| `HF_TOKEN` | ✅ 是 | — | Hugging Face API token |
| `API_BASE_URL` | 否 | `https://api-inference.huggingface.co/v1/` | LLM API 端点 |
| `MODEL_NAME` | 否 | `meta-llama/Llama-3.1-8B-Instruct` | 用于推理的模型 |
| `ENV_BASE_URL` | 否 | `http://localhost:7860` | 环境服务器 URL |
| `CYBER_SENTINEL_TASK` | 否 | `alert_triage` | 启动时的默认任务 |
| `CYBER_SENTINEL_SEED` | 否 | `42` | 随机种子 |
## 📊 基准分数
| 任务 | 模型 | 分数 | 步数 |
|------|-------|-------|-------|
| Alert Triage | Llama-3.1-8B | ~0.75 | 8 |
| Threat Hunting | Llama-3.1-8B | ~0.50 | 12 |
| Cloud Hardening | Llama-3.1-8B | ~0.35 | 15 |
## 🏗️ 项目结构
```
cyber-sentinel/
├── openenv.yaml # OpenEnv manifest
├── Dockerfile # Container for HF Spaces
├── pyproject.toml # Dependencies (uv)
├── requirements.txt # Dependencies (Docker/pip)
├── models.py # Pydantic: Action, Observation, State
├── inference.py # Baseline evaluation script
├── README.md # This file
├── .env # Local env vars (git-ignored)
├── .gitignore # Git ignore rules
└── server/
├── __init__.py
├── app.py # FastAPI entry point
├── environment.py # Core OpenEnv Environment class
└── tasks.py # Task definitions + graders
```
## 🔍 OpenEnv 规范合规性
- ✅ 类型化的 `Action`、`Observation`、`State` 模型 (Pydantic)
- ✅ `step(action)` → 带有 reward + done 的 observation
- ✅ `reset()` → 初始 observation
- ✅ `state()` -> 完整内部状态
- ✅ `openenv.yaml` 清单文件
- ✅ 程序化评分器 (0.0–1.0)
- ✅ 带有部分进度信号的增量奖励
- ✅ 对不良行为的惩罚 (漏报、中断)
- ✅ 确定性且可复现 (固定种子的 RNG)
- ✅ 带有严格输出格式的基准 `inference.py`
## 📜 许可证
MIT
标签:AI代理, Docker, LLM, OpenAI, Python, Unmanaged PE, 仿真环境, 内存规避, 告警分诊, 基础设施加固, 安全运营, 安全防御评估, 强化学习, 扫描框架, 数据展示, 无后门, 红队, 结构化查询, 网络安全, 自动化安全, 请求拦截, 逆向工具, 隐私保护