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技术, 人类审核, 代理架构, 依赖图, 信任提升, 可审计, 可溯源, 威胁建模, 安全可观测性, 安全编排, 审计追踪, 技术栈, 推理引擎, 搜索引擎优化, 攻击计划, 数据模型, 架构分层, 版本控制, 确定性, 确定性评分, 种子数据, 结构化, 网络安全, 证据驱动, 追加证据, 逆向工具, 隐私保护, 项目架构