leishka-pagan/AXIOM
GitHub: leishka-pagan/AXIOM
证据驱动的网络安全推理引擎,通过确定性评分与人工审核保障可审计的攻击链构建。
Stars: 0 | Forks: 0
# AXIOM
**证据驱动的网络安全推理引擎。**
AXIOM 构建结构化的攻击计划和技术链,这些技术经过验证、评分并通过受控信任生命周期获得批准。它不会猜测。每个输出都基于来源、基于证据且可审计。
## 核心原则
## 架构
```
config.py — single source of truth: weights, thresholds, vocabulary
↓
core/
models.py — all Pydantic schemas and enums
db.py — SQLite, append-only evidence, named repository functions
validator.py — schema contract layer between every agent handoff
orchestration.py — neutral service layer (review/ and main.py call this, not agents/)
↓
agents/
agent1_ingest.py — firewall: normalize, validate, reject, pass to Agent 2
agent2_score.py — sole writer to techniques table; deterministic scoring
agent3_plan.py — evidence-floored planner with hard/soft constraints
agent4_chain.py — DB-backed chain builder + bounded shadow reasoning
agent5_feedback.py — evidence ingestion, rescore trigger, decay audit
review/
cli.py — human approval boundary for status promotions
main.py — thin CLI entry point
data/seed.json — curated initial technique dataset
```
### 依赖关系图
```
config.py
↓
core/models.py → core/db.py → core/validator.py
↓
core/orchestration.py
↓ ↓
agents/ review/ main.py
↓
SQLite via core/db.py
```
Agent 之间不相互导入。所有跨 Agent 的状态转移都通过数据库完成。
## 数据模型
### variant_id — 真实主键
技术通过 `variant_id` 标识,而非 MITRE ID。这允许同一技术的平台变体作为独立行共存:
| variant_id | technique_id | platform |
|----------------------|--------------|----------|
| `T1548::Linux` | `T1548` | Linux |
| `T1548::Windows` | `T1548` | Windows |
| `T1548.003::Linux` | `T1548.003` | Linux |
| `AXIOM-3F9A1C2B` | `AXIOM-...` | Cloud |
`technique_id` 是可查询的 MITRE 索引,不是主键。
### 证据仅追加
`evidence` 表具有数据库级触发器,阻止 `UPDATE` 和 `DELETE`。任何证据记录都无法被修改。置信度分数来源于证据,而非存储的可变状态。
### 状态词汇表
| Status | Meaning |
|-------------------------|------------------------------------------------------|
| `lab_validated` | 通过受控执行确认有效 |
| `source_supported` | 可信来源支持,未进行实验室运行 |
| `historically_validated`| 之前实验室验证过,已过衰减阈值 |
| `conflicted` | 矛盾的证据 |
| `deprecated` | 确认不可用,已明确弃用 |
| `unverified` | 无可信来源支持 |
`lab_validated` 需要通过审核队列的人工批准,绝不会自动分配。
### 置信度公式
```
confidence =
0.40 × execution_evidence
0.20 × source_quality
0.15 × source_consensus
0.10 × environment_match
0.10 × recency
0.05 × stability
```
`detection_risk` 是一个独立字段,它从不影响置信度。
### 规划器评分公式
```
planner_score = confidence × mission_fit × stealth_weighted_risk_adjustment
```
其中 `stealth_weighted_risk_adjustment` 仅在 `low_noise_preferred` 约束激活时应用。
## 快速开始
### 安装依赖
```
pip install pydantic
```
### 运行完整闭环
```
# 1. 摄取种子技术数据集
python main.py ingest data/seed.json
# 2. 检查系统状态
python main.py status
# 3. 生成计划
python main.py plan --goal "privilege escalation on Linux" --os Linux
# 4. 生成链
python main.py chain --goal "privilege escalation" --os Linux --no-shadow
# 5. 提交执行证据
python main.py feedback T1548.003::Linux success ubuntu-22.04 --notes "NOPASSWD confirmed"
# 6. 检查待审
python main.py review list
# 7. 批准晋升(如排队)
python main.py review approve --reviewer yourname
# 8. 运行衰减审计
python main.py decay --dry-run
```
## 命令
### `ingest`
```
python main.py ingest
```
将技术记录数组通过 Agent 1 加载。拒绝格式错误的记录进入错误队列。绝不会将无效数据转发。
### `feedback`
```
python main.py feedback [--notes "..."]
```
提交执行证据,追加到不可变证据日志,触发 Agent 2 重新评分。若证据阈值满足,则排队提升审核。
示例:
```
python main.py feedback T1548.003::Linux success ubuntu-22.04 --notes "NOPASSWD for less"
python main.py feedback T1047::Windows failure windows-11-22h2 --notes "wmic.exe not found"
```
### `plan`
```
python main.py plan --goal "..." --os [--mode strict|guided_bootstrap|research]
[--constraints ] [--phases ] [--max-steps N]
[--show-excluded]
```
**模式:**
- `strict` — 仅使用 `lab_validated` 技术
- `guided_bootstrap` — `lab_validated` + `source_supported`(默认)
- `research` — 所有证据类别,标记为假设
**硬约束(过滤):**
- `no_state_change`
- `no_kernel_exploit`
- `no_network_traffic`
- `no_file_write`
**软约束(排序):**
- `low_noise_preferred`
- `speed_preferred`
- `minimal_dependencies`
- `avoid_known_signatures`
### `chain`
```
python main.py chain --goal "..." --os [--mode ...] [--steps N] [--no-shadow]
```
构建攻击逻辑链。每一步被标记为 `confirmed`、`probable` 或 `hypothesis`。缺口会成为验证任务。
`--no-shadow` 禁用用于提案生成的 Claude API 调用。在离线环境或仅希望获得数据库输出时使用。
### `review`
```
python main.py review list
python main.py review show
python main.py review approve --reviewer
python main.py review reject --reviewer
python main.py review errors
python main.py review status
```
审核队列是通往 `lab_validated` 的唯一路径。需要人工审核员,批准记录中审核员身份不可为空。
### `status`
```
python main.py status
```
显示技术数量、状态分布、平均置信度、待审核项和待处理错误。
### `decay`
```
python main.py decay [--dry-run]
```
审计陈旧证据。对超过衰减窗口(365 天)未经验证的 `lab_validated` 技术重新评分并降级。
## 种子文件格式
```
[
{
"technique_id": "T1548.003",
"technique_name": "Abuse Elevation Control Mechanism",
"title": "Enumerate sudo permissions",
"platform": ["Linux"],
"command": "sudo -l",
"preconditions": ["interactive shell"],
"dependencies": [],
"source_refs": ["GTFOBins", "HackTricks"],
"alternatives": ["id", "getcap -r / 2>/dev/null"]
}
]
```
**必需字段:** `technique_name`、`title`、`platform`、`command`、`source_refs`
缺少任一必需字段的记录将被拒绝进入错误队列。空的 `command`、空的 `platform` 和空的 `source_refs` 会被硬拒绝。
## 信任模型
```
Shadow reasoning (Agent 4)
→ proposals (UNTRUSTED)
→ Agent 1 ingestion queue
→ Agent 2 scoring
→ review queue
→ human approval
→ lab_validated
Evidence (Agent 5)
→ append-only evidence log
→ Agent 2 rescore
→ review queue (if threshold met)
→ human approval
→ lab_validated
```
**影子推理产生的提案永远不会被直接使用。** 它们必须重新进入系统并通过 Agent 1 评分和人类审核,才能被使用。`core/validator.py` 中的解析器强制结构分离是机械性的,而非指导性的。
## 运行测试
```
python -m pytest tests/ -v
```
预期结果:134 通过,8 跳过。
跳过的 8 个测试是静态分析测试,在 `agents/` 目录下所有代理文件齐全后激活,用于验证代码库中写权限边界。
## 已知 v1 限制
1. **无抓取功能** — 第 2 阶段(受控来源抓取)尚未实现。摄取仅限于手动种子文件。
2. **Pydantic V2 警告** — 模型使用 V1 的 `@validator` 语法。功能正常,但在迁移到 Pydantic V3 前需要更新。
3. **影子推理** — Agent 4 的 Claude API 调用没有重试/超时硬保障。非致命(失败时链继续),但在生产环境中应视为可选。
4. **无软件包安装** — 在项目根目录运行 `python main.py`。正式打包(`setup.py` / `pyproject.toml`)是 v2 事项。
5. **仅 SQLite** — 设计用于迁移到 Postgres。所有写操作通过 `core/db.py` 中的命名仓库函数完成,代理中不使用原始 SQL。
标签:CLI, FTP漏洞扫描, Pydantic, SQLite, WiFi技术, 人类审核, 代理架构, 依赖图, 信任提升, 可审计, 可溯源, 威胁建模, 安全可观测性, 安全编排, 审计追踪, 技术栈, 推理引擎, 搜索引擎优化, 攻击计划, 数据模型, 架构分层, 版本控制, 确定性, 确定性评分, 种子数据, 结构化, 网络安全, 证据驱动, 追加证据, 逆向工具, 隐私保护, 项目架构