alpha08-prog/Kubenetes-Attack-Path-Analyzer

GitHub: alpha08-prog/Kubenetes-Attack-Path-Analyzer

Kubernetes 攻击路径分析器,用于识别 Kubernetes 集群中的安全风险。

Stars: 0 | Forks: 1

# Kubernetes 攻击路径分析器
[![Python 3.10+](https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.100+-009688?logo=fastapi)](https://fastapi.tiangolo.com/) [![React 18](https://img.shields.io/badge/React-18+-61DAFB?logo=react&logoColor=white)](https://react.dev/) [![Docker](https://img.shields.io/badge/Docker-Compose-2496ED?logo=docker&logoColor=white)](https://www.docker.com/) [![NetworkX](https://img.shields.io/badge/Graph-NetworkX-4B8BBE?logo=python)](https://networkx.org/) [![License MIT](https://img.shields.io/badge/License-MIT-green)](LICENSE) [快速入门](#-quick-start-5-minutes) • [文档](#-complete-documentation) • [功能](#-features) • [架构](#-architecture)
## 🚀 快速入门 (5 分钟) ### 选项 A:Docker (最快 - 2 分钟) ``` git clone https://github.com/your-team/attack-path-analyzer.git cd attack-path-analyzer make demo ``` 打开 `http://localhost:3000` — 就这么简单! ### 选项 B:仅 CLI (3 分钟) ``` cd backend pip install -r requirements.txt python main.py --full-report ``` **请参阅** [docs/QUICK_START.md](docs/QUICK_START.md) 以获取详细的设置选项。 ## ⚡ 它能做什么 (30 秒演示) ``` $ python main.py --full-report ================================================================== KILL CHAIN REPORT Cluster : production-cluster Nodes : 41 | Edges: 48 ================================================================== [ ATTACK PATHS ] ⚠️ 46 attack paths detected Path #1 [CRITICAL] | 5 hops | Risk: 24.1/50 internet → web-frontend [CVE-2024-1234] → backend-sa → admin-role → db-credentials → production-db [ PRIVILEGE LOOPS ] 🔁 1 cycle detected: svc-service-a ↔ svc-service-b (Allows indefinite privilege escalation) [ CRITICAL NODES ] 🎯 web-frontend (Pod) Removing this blocks 32 of 46 paths (69.6%) [ REMEDIATION ] 1. Patch CVE-2024-1234 on web-frontend (URGENT) 2. Remove RoleBinding from backend-sa 3. Break privilege loop between services ``` ## ✨ 关键功能 | 功能 | 算法 | 它能做什么 | |---------|-----------|-------------| | **🔍 攻击路径检测** | Dijkstra | 找到攻击者从入口点到敏感资产的最容易的路线 (0-10 风险评分) | | **💥 爆发半径映射** | BFS | 识别攻击者从受损害节点出发,N 跳内可以到达的所有资源 | | **🔁 提权检测** | DFS | 检测允许无限提权的循环权限 | | **🎯 关键节点识别** | 中心性 | 根据攻击路径依赖于它们的数量对瓶颈进行排名 (60% 中心性 + 40% 风险) | | **📊 节点移除模拟** | 图手术 | 显示强化/移除任何节点的确切影响 | | **🤖 AI 杀链叙事** | Groq (Llama 3.3 70B) | 将原始图结果转换为高管友好的安全发现 | ## 🏗️ 架构 ### 系统设计 ``` ┌─────────────────────────────────────────────────────────────┐ │ PRESENTATION LAYER │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ React Frontend │ │ CLI Interface │ │ │ │ (Cytoscape.js) │ │ (Python) │ │ │ └────────┬─────────┘ └────────┬─────────┘ │ └───────────┼────────────────────────────────┼────────────────┘ │ REST API │ ┌───────────▼─────────────────────────────────▼────────────────┐ │ APPLICATION LAYER (FastAPI) │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ Routes: Graph, Attack, Blast, Cycles, Critical Node │ │ │ └────────┬─────────────────────────────────────┬─────────┘ │ │ │ │ │ │ ┌────────▼──────────┐ ┌───────────────▼──────────┐ │ │ │ Service Layer │ │ Groq AI Narrator │ │ │ │ (Business Logic) │ │ (NLG Reports) │ │ │ └────────┬──────────┘ └───────────────┬──────────┘ │ └───────────┼────────────────────────────────────┼──────────────┘ │ ┌───────────▼─────────────────────────────────────┬──────────────┐ │ ALGORITHM LAYER (NetworkX Wrapper) │ │ │ ┌──────────┬──────────┬──────────┬──────────┐ │ │ │ │ BFS │ Dijkstra │ DFS │ Centrality │ │ │ │(O(V+E)) │(O((V+E) │(O(V+E)C))│(O(VE)) │ │ │ │ │logV)) │ │ │ │ │ └──────────┴──────────┴──────────┴──────────┘ │ │ │ │ │ │ 📊 In-Memory Graph: NetworkX DiGraph │ │ │ 💾 Persistent: SQLite (optional history) │ │ │ 📁 Input: cluster-graph.json or kubectl │ │ └─────────────────────────────────────────────────┴──────────────┘ ``` **关键设计决策:** - ✅ **有向加权图** — K8s RBAC 是方向性的;权重表示可利用性 - ✅ **NetworkX** — 所有 4 个必需的算法内置,纯 Python,跨平台 - ✅ **内存中** — 在 500 节点图上快速分析 (< 500ms 完整分析) - ✅ **可插拔 AI** — Groq 用于叙事,回退到结构化 JSON 请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 以获取完整的系统设计。 ## 📊 算法深入探讨 ### 1. 爆发半径 (BFS) **何时:** 回答“如果这个 pod 被损害,攻击者可以到达什么?” ``` Source: web-frontend (compromised) Hop 1: sa-webapp, internal-api-svc, sidecar-proxy Hop 2: secret-reader, tls-cert, api-key, cluster-admin, api-server Hop 3: db-credentials, secret-admin-token, sa-worker, db-url-config → 13 nodes reachable in 3 hops ``` **复杂度:** O(V+E) | **演示图:** < 2ms | **500 节点图:** < 5ms ### 2. 最短攻击路径 (Dijkstra) **何时:** 回答“从互联网到生产数据库的最容易路径是什么?” ``` internet → web-frontend [CVE-2024-1234, CVSS 8.1] → backend-sa [admin grant] → role-secret-reader [can read] → db-credentials [contains password] → production-db Total Cost: 24.1/50 (HIGH RISK) Interpretation: Low cost = highly exploitable ``` **复杂度:** O((V+E)logV) | **演示图:** < 1ms | **500 节点图:** < 15ms ### 3. 提权 (DFS) **何时:** 检测“攻击者能否在身份之间循环以无限提权?” ``` svc-service-a [Role A] ↓ can-impersonate svc-service-b [Role B - admin-grant] ↓ back to A Loop detected! [CRITICAL] ``` **复杂度:** O((V+E)(C+1)) 其中 C = 循环数 ### 4. 关键节点 (中心性) **何时:** 规划“哪个单一强化操作阻止的路径最多?” ``` Node: web-frontend Centrality Score: 0.847 (high structural importance) Risk Score: 7.5/10 Combined Score: 0.6 × 0.847 + 0.4 × 0.75 = 0.809 Result: Removing this blocks 32 of 46 paths (69.6%) Action: HIGH PRIORITY remediation ``` **复杂度:** O(VE) | **演示图:** < 2ms | **500 节点图:** < 200ms 请参阅 [docs/algorithms.md](docs/algorithms.md) 以获取完整的深入探讨。 ## 📚 完整文档 我们为每个利益相关者提供 **全面的文档**: ### 📖 入门 - **[QUICK_START.md](docs/QUICK_START.md)** — 5 分钟设置 (3 个选项:Docker,CLI,本地开发) - **[README.md](README.md)** — 此文件!项目概述 ### 🎯 使用工具 - **[docs/CLI_COMMAND_REFERENCE.md](docs/CLI_COMMAND_REFERENCE.md)** — 所有 CLI 命令 + 预期输出 - **[docs/API_DOCUMENTATION.md](docs/API_DOCUMENTATION.md)** — 完整的 REST API 参考 - **[docs/algorithms.md](docs/algorithms.md)** — 算法解释 + 设计理由 ### 🏛️ 系统理解 - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — 系统设计 + 组件细节 - **[docs/CLUSTER_GRAPH_SCHEMA.md](docs/CLUSTER_GRAPH_SCHEMA.md)** — 数据格式规范 - **[docs/INDEX.md](docs/INDEX.md)** — 文档导航指南 ### 🚀 运营与发展 - **[docs/DEPLOYMENT.md](docs/DEPLOYMENT.md)** — Docker,Kubernetes,本地部署 - **[docs/TESTING.md](docs/TESTING.md)** — 测试策略 + 覆盖范围细节 - **[docs/CONTRIBUTING.md](docs/CONTRIBUTING.md)** — 为贡献者提供的发展指南 请参阅 [docs/INDEX.md](docs/INDEX.md) 以获取完整的导航。 ## 🎯 项目结构 ``` attack-path-analyzer/ ├── 📄 README.md # This file │ ├── backend/ │ ├── main.py # CLI entrypoint │ ├── requirements.txt │ └── app/ │ ├── cli.py # Argument parsing + validation │ ├── algorithm/ # 4 graph algorithms │ │ ├── bfs.py # Blast radius (O(V+E)) │ │ ├── dijkstra.py # Shortest path (O((V+E)logV)) │ │ ├── dfs_cycles.py # Cycle detection (O((V+E)C)) │ │ └── centrality.py # Critical nodes (O(VE)) │ ├── core/ # Core logic │ │ ├── cluster_graph_loader.py # Graph ingestion & normalization │ │ ├── graph_builder.py # NetworkX graph construction │ │ ├── risk_engine.py # CVSS/CVE scoring │ │ └── parser.py # kubectl output parsing │ ├── services/ # Business logic layer │ │ ├── analysis_service.py # Orchestrates algorithms │ │ ├── kill_chain_report.py # Report generation │ │ ├── remediation_service.py # Fix recommendations │ │ ├── narrator_service.py # AI narration (Groq) │ │ └── ... (10+ services) │ ├── api/ # FastAPI routes │ │ ├── routes_graph.py # /api/graph/* │ │ ├── routes_attack.py # /api/attack/* │ │ ├── routes_blast.py # /api/blast/* │ │ ├── routes_cycles.py # /api/cycles │ │ ├── routes_critical.py # /api/critical/* │ │ ├── routes_report.py # /api/report │ │ └── ... (8+ route files) │ ├── models/ # Pydantic schemas (100% validated) │ └── utils/ # Helpers, logging │ ├── frontend/ # React 18 + Vite │ ├── src/ │ │ ├── components/ # Cytoscape, panels, tables │ │ ├── pages/ # Dashboard, demo mode │ │ ├── api/ # Axios HTTP client │ │ └── hooks/ # Custom React hooks │ ├── tests/ │ ├── test_rubric_algorithms.py # Algorithm correctness │ ├── test_cluster_graph_loader.py # Data loading validation │ ├── test_kill_chain_report.py # Report generation │ ├── test_cve_and_diff.py # CVE integration │ └── test_cli_e2e_rubric.py # End-to-end CLI tests │ ├── docs/ # Complete documentation │ ├── QUICK_START.md # 5-minute setup │ ├── CLI_COMMAND_REFERENCE.md # All CLI commands │ ├── API_DOCUMENTATION.md # REST API reference │ ├── ARCHITECTURE.md # System design │ ├── TESTING.md # Test strategy │ ├── DEPLOYMENT.md # Deployment guide │ ├── CONTRIBUTING.md # Development guide │ ├── INDEX.md # Navigation │ ├── CLUSTER_GRAPH_SCHEMA.md # Data schema │ └── algorithms.md # Algorithm deep-dive │ ├── docker/ │ ├── backend.Dockerfile │ └── frontend.Dockerfile │ ├── docker-compose.yml # Full stack in one file ├── Makefile # Convenient commands └── .env.example # Configuration template ``` ## 🔧 CLI 命令 所有命令都在 `backend/` 中运行,在 `pip install -r requirements.txt` 之后: ### 完整安全分析 ``` python main.py --full-report # 运行:BFS + Dijkstra + DFS + Centrality # 输出:完整杀链报告及修复措施 ``` ### 爆发半径 (BFS) ``` python main.py --blast-radius --source pod-webfront --hops 3 # 在3跳内查找所有可达节点 ``` ### 最短攻击路径 (Dijkstra) ``` python main.py --source user-dev1 --target db-production # 查找攻击者最易走的路线 ``` ### 提权 (DFS) ``` python main.py --cycles # 检测权限循环 ``` ### 关键节点 ``` python main.py --critical-node # 通过影响识别瓶颈 ``` **预期输出记录在** [docs/CLI_COMMAND_REFERENCE.md](docs/CLI_COMMAND_REFERENCE.md). 运行 `python main.py --help` 以获取所有选项。 ## 🔌 REST API **基本 URL:** `http://localhost:8000/api` | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/graph` | GET | 完整图 (Cytoscape 格式) | | `/attack/path` | POST | 最短攻击路径 (Dijkstra) | | `/blast/radius` | POST | 可到达的节点 (BFS) | | `/cycles` | GET | 提权循环 (DFS) | | `/critical/nodes` | GET | 关键节点 (中心性) | | `/report` | GET | AI 生成的报告 | **示例:** ``` curl -X POST http://localhost:8000/api/attack/path \ -H "Content-Type: application/json" \ -d '{"source": "user-dev1", "target": "db-production"}' ``` 完整的 API 文档:[docs/API_DOCUMENTATION.md](docs/API_DOCUMENTATION.md) 交互式 Swagger UI:`http://localhost:8000/docs` ## 🧪 测试与验证 ### 测试覆盖率 - ✅ **算法正确性:** 10 个测试用例覆盖 BFS、Dijkstra、DFS 和中心性 - ✅ **数据加载:** 架构验证,规范化 - ✅ **集成:** CLI + API 的端到端测试 - ✅ **性能:** 在 500 节点图上的算法基准测试 ### 运行测试 ``` cd backend # 运行所有测试 pytest tests -v # 运行带覆盖率 pytest tests --cov=app --cov-report=term-missing # 运行特定测试类别 pytest tests/test_rubric_algorithms.py -v ``` **覆盖率目标:** > 85% | **当前:** 请参阅 [docs/TESTING.md](docs/TESTING.md) ## 📦 要求 **后端:** - Python 3.10+ - NetworkX (图算法) - FastAPI (REST 框架) - Pydantic v2 (数据验证) - Groq API (Llama 3.3 70B 叙事) **前端:** - Node.js 20+ - React 18 - Vite - Cytoscape.js - Tailwind CSS **可选:** - Docker & Docker Compose (设置最简单) - Kubernetes (部署目标) ## 🚀 部署选项 ### 1️⃣ Docker Compose (本地 / 单个主机) ``` docker-compose up --build ``` 请参阅 [docs/DEPLOYMENT.md#docker-deployment-recommended](docs/DEPLOYMENT.md#docker-deployment-recommended) ### 2️⃣ 本地开发 ``` # 后端:http://localhost:8000 # 前端:http://localhost:5173 ``` 请参阅 [docs/QUICK_START.md](docs/QUICK_START.md) ### 3️⃣ 托管:Render (后端) + Vercel (前端) 在两个平台上进行分割部署,并自动启用 TLS: - **后端 → Render** 通过 `render.yaml` 蓝图 — Docker 上的 FastAPI,`MOCK_MODE=true`,捆绑场景,`GROQ_API_KEY` 作为秘密。 - **前端 → Vercel** — Vite 静态构建 (根目录 `frontend/`), 将 `VITE_API_BASE_URL` 指向 Render 后端 URL。 因为后端允许所有 CORS 原始来源(无身份验证),所以两边不需要交叉连接。完整说明:[docs/DEPLOYMENT.md](docs/DEPLOYMENT.md). (Render 免费计划在空闲 15 分钟后冷启动;前端 mock-mode 标签覆盖了冷后端。) ## 🎯 功能 ### 工作 CLI 工具 - 数据摄取 & 图构建 - 命名标志的 CLI 界面 - 端到端集成测试 ### 杀链报告 - 攻击路径准确性(确切的节点序列,成本) - 结构化、可读的报告输出 - 补救建议(具体操作,而非通用) ### 算法正确性 - BFS:层叠式爆炸半径 - Dijkstra:加权最短路径 - DFS:循环检测,无重复 ### 关键节点分析 - 节点识别(中心性 + 风险) - 路径消除准确性 - 方法论正确性(无图突变) ### 代码质量 & 文档 - README 包含设置、CLI 示例、算法概述、结构 - 架构文档(所有字段均有解释) - 代码可读性(文档字符串、命名、PEP-8) 在 `docs/` 下还有其他文档指南。 ## 💡 关键见解 ### 为什么使用图算法? Kubernetes RBAC 基本上是一个 **有向图** 的权限。使用经典算法让我们: - **找到路径** (Dijkstra) → 攻击者的最容易路线是什么? - **映射爆炸区域** (BFS) → 他们接下来可以到达什么? - **检测循环** (DFS) → 他们能否无限提权? - **识别瓶颈** (中心性) → 什么打破了最多的路径? ### 边权重语义 边的 `weight` 是 **0-10 级别的可利用性成本;越低越容易利用**。作者从 CVSS / 风险数据中预先计算此值并将其直接放在边上 — Dijkstra 最小化路径上的 `weight` 之和。在加载器中没有 `10 - 风险` 反转;输入值按原样使用。 请参阅 [docs/CLUSTER_GRAPH_SCHEMA.md](docs/CLUSTER_GRAPH_SCHEMA.md) 以获取完整的输入架构和 `weight` 与 `risk` 的区别。 ### 为什么使用中心性? 如果一个节点是“关键的”,那么许多路径都会通过它。移除它会产生最大的影响。结合 60% 中心性 + 40% 风险确保我们同时捕获结构性的瓶颈和风险节点。 请参阅 [docs/ARCHITECTURE.md#design-decisions](docs/ARCHITECTURE.md#design-decisions) 以获取更多信息。 ## 🤝 贡献 想扩展工具吗?[docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) 解释了: - 如何添加新算法 - 如何添加新的 API 端点 - 开发工作流程和测试 - 代码标准(PEP-8,类型提示,文档字符串) ## 📊 性能特征 | 操作 | 时间 | 空间 | 演示 (18 节点) | 大型 (500 节点) | |-----------|------|-------|---|---| | **完整报告** | O(V²+E) | O(V+E) | 50-100ms | 200-500ms | | **爆炸半径** | O(V+E) | O(V) | 2-5ms | 10-20ms | | **最短路径** | O((V+E)logV) | O(V) | 1-3ms | 5-15ms | | **循环检测** | O((V+E)C) | O(V+E) | 5-10ms | 20-50ms | | **关键节点** | O(VE) | O(V+E) | 10-20ms | 100-200ms | ✅ **所有操作在 500 节点图上 < 1 秒** ✅ **在 40 节点图上舒适地 < 60 秒** ## 🏆 项目亮点 1. **全面** — 每个功能都有记录的预期输出 2. **生产就绪架构** — 清晰分离 CLI、API、服务和算法 3. **易于访问** — 对非安全专家(AI 叙事)友好 4. **可解释** — 显示确切的攻击路径,而不仅仅是风险评分 5. **经过测试** — 算法正确性由专门的测试用例覆盖 6. **经过文档记录** — 在 `docs/` 下有多个指南,涵盖设置、API、架构和测试 ## 🔗 快速链接 - 🚀 **开始:** [docs/QUICK_START.md](docs/QUICK_START.md) - 📖 **文档地图:** [docs/INDEX.md](docs/INDEX.md) - 🔍 **完整 CLI 参考:** [docs/CLI_COMMAND_REFERENCE.md](docs/CLI_COMMAND_REFERENCE.md) - 🌐 **API 参考:** [docs/API_DOCUMENTATION.md](docs/API_DOCUMENTATION.md) - 🏗️ **系统设计:** [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) - 🧪 **测试指南:** [docs/TESTING.md]() - 🔧 **部署指南:** [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md) - 👥 **贡献:** [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) ## 📄 许可证 MIT 许可证 — 请参阅 LICENSE 文件 ## 🏅 状态 ✅ **所有四个必需的图算法已实现并经过测试** ✅ **生产就绪部署** ✅ **全面的测试覆盖率**
**生产就绪的 Kubernetes 攻击路径分析器** [问题?](docs/INDEX.md) • [设置帮助?](docs/QUICK_START.md) • [查看文档](docs/INDEX.md)
标签:AV绕过, CSP, CVE, Docker, FastAPI, Kubernetes 安全, NetworkX, Python, React, Syscalls, Web截图, XML 请求, 人工智能, 协议分析, 反取证, 后端开发, 图算法, 威胁情报, 安全事件响应, 安全合规, 安全培训, 安全应急响应, 安全开发, 安全意识, 安全报告, 安全架构, 安全标准, 安全法规, 安全测试, 安全漏洞, 安全社区, 安全策略, 安全解决方案, 安全认证, 安全评估, 安全防御评估, 安全防护, 安全防护工具, 容器安全, 开发者工具, 提示词设计, 攻击性安全, 攻击路径分析, 数字签名, 无后门, 权限提升, 模型鲁棒性, 特权检测, 用户模式Hook绕过, 突变策略, 系统分析, 红队平台, 网络代理, 网络分析, 请求拦截, 逆向工具, 风险分析