mendozaErnest/ai-devsecops-control-plane

GitHub: mendozaErnest/ai-devsecops-control-plane

自托管应用安全编排平台,在本地并行运行多引擎安全扫描并通过本地 LLM 自动生成修复补丁提交 GitHub PR,确保源代码不离开内部基础设施。

Stars: 1 | Forks: 0

# 🛡️ AI DevSecOps Control Plane ### 具备本地 AI 修复能力的自托管应用安全平台。 **您的代码永远不会离开您的基础设施。** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5b8b6c20f3234938.svg)](https://github.com/mendozaErnest/ai-devsecops-control-plane/actions) ![Python](https://img.shields.io/badge/Python-3.11-3776AB?logo=python&logoColor=white) ![FastAPI](https://img.shields.io/badge/FastAPI-005571?logo=fastapi) ![Ollama](https://img.shields.io/badge/LLM-100%25%20local%20(Ollama)-black) ![Tests](https://img.shields.io/badge/tests-117%20passing-success) ![License](https://img.shields.io/badge/license-MIT-green) **12 个安全引擎 · 基于 GPU 的本地 AI 补丁 · 真实的 GitHub PR · 零云端调用** [快速开始](#-quick-start) · [架构设计](#-architecture) · [安全引擎](#-security-engines) · [AI 修复](#-ai-remediation) · [Agentic DAST](#-agentic-dast) · [路线图](#-roadmap)
## 为什么开发此平台 商业 AppSec 平台(Snyk、GitHub Copilot Autofix、SonarCloud)会将您的源代码发送到外部 API 以生成修复方案。**在受监管的行业——如银行、金融科技、医疗保健、政府——这是一个监管和合同上的阻碍,而不是小小的不便。** 该平台在您自己的硬件上运行整个安全生命周期,包括基于 LLM 的修复。网络边界就是您的机器。 | 功能 | 本平台 | 典型的云端 AppSec SaaS | |---|---|---| | AI 生成的代码修复 | ✅ 本地 LLM (Ollama, 本地部署 GPU) | ✅ 通过外部 API | | 源代码离开您的网络 | ❌ **绝不** | ✅ AI 功能所必需 | | 适用于气隙隔离 / 受监管环境 | ✅ 原生设计支持 | ⚠️ 受限或在合同上被阻止 | | 多引擎编排 (SAST · SCA · DAST · IaC · 机密扫描) | ✅ 12 个引擎,一个控制平面 | 通常各产品相互独立 | | 推理成本 | 您的硬件,边际成本为 $0 | 按席位 / 按次扫描订阅 | ## 核心功能 ``` Register project → Scan (SAST/SCA/DAST/IaC/Secrets) → Triage with ML risk scoring → Generate AI patch (local LLM) → Open reviewable GitHub PR → Track SLA & lifecycle ``` - **12 个安全引擎** 并行编排 —— SAST、SCA、DAST、IaC、容器 CVE、机密扫描 - **通过本地 LLM 进行 AI 修复** (Ollama + `qwen2.5-coder:14b`) —— 针对不同技术栈提供感知提示词,适用于 Python、Java、Angular/TypeScript - **真实的 GitHub Pull Requests** 通过 GitHub App (JWT RS256) 提交带有补丁的代码,并由 AST 级别的安全检查进行保护 —— 没有人工审核绝不合并 - **Agentic DAST**:使用 LangGraph 多智能体循环 (Explorer → Attacker → Verifier) 封装 OWASP ZAP - **ML 风险评分**:XGBoost 分类器对原始严重性之外的发现进行排名 - **企业级治理**:发现生命周期状态机、不可变审计追踪、按严重性划分的 SLA 跟踪 (3/7/30/90 天) ## 🚀 快速开始 ``` git clone https://github.com/mendozaErnest/ai-devsecops-control-plane cd ai-devsecops-control-plane pip install -r code/requirements.txt cp .env.example .env # add GitHub App credentials + Ollama URL # Local LLM(单独的终端) ollama pull qwen2.5-coder:14b && ollama serve # 运行 uvicorn src.api.main:app --reload # Dashboard → http://127.0.0.1:8000 ``` 或者使用 Docker Compose(自动配置 API + Ollama): ``` docker compose up -d ``` 完整设置:[docs/api-reference.md](docs/api-reference.md) · GitHub App 配置:[docs/github-app-setup.md](docs/github-app-setup.md) · 威胁模型:[docs/threat-model.md](docs/threat-model.md) ## 🏗 架构设计 ``` ┌────────────────────────────────────────────────────────────────────────┐ │ Dashboard (ES6 JS + Chart.js) │ │ findings · profiles · diff viewer · risk scores · PDF export │ └───────────────────────────────┬────────────────────────────────────────┘ │ REST ┌───────────────────────────────▼────────────────────────────────────────┐ │ FastAPI Control Plane │ │ ┌──────────────────┐ ┌─────────────────┐ ┌───────────────────────┐ │ │ │ ScanOrchestrator │ │ AI Remediator │ │ GitHub App Client │ │ │ │ (ThreadPool, │ │ (Ollama local, │ │ (JWT RS256, PRs, │ │ │ │ 12 engines, │ │ AST guardrails)│ │ Check Runs, webhook) │ │ │ │ SHA-256 dedup) │ └────────┬────────┘ └───────────┬───────────┘ │ │ └────────┬─────────┘ │ │ │ │ ┌────────▼─────────────────────▼───────────────────────▼───────────┐ │ │ │ SQLModel · Finding lifecycle · Audit trail · SLA · ML model │ │ │ └──────────────────────────────────────────────────────────────────┘ │ └──────────┬─────────────────────┬───────────────────────┬──────────────┘ │ │ │ ┌───────▼────────┐ ┌────────▼────────┐ ┌──────────▼──────────┐ │ SAST/SCA/IaC │ │ OWASP ZAP + │ │ Ollama (local │ │ Bandit·Semgrep │ │ LangGraph │ │ GPU inference — │ │ Trivy·Checkov… │ │ agent loop │ │ zero cloud calls) │ └────────────────┘ └─────────────────┘ └─────────────────────┘ ``` ## 🔍 安全引擎 | 领域 | 引擎 | 覆盖范围 | |---|---|---| | **SAST** | Bandit, Semgrep (`p/owasp-top-ten`, `p/find-sec-bugs`) | Python · Java · Angular/TypeScript | | **SCA** | pip-audit (PyPI advisory DB), OWASP Dependency-Check (NVD) | Python · Java CVEs | | **DAST** | OWASP ZAP (spider + active scan) | 任何 HTTP/HTTPS 目标 | | **Agentic DAST** | ZAP + LangGraph 多智能体循环 | 已确认、去重的发现结果 | | **IaC** | Checkov | Dockerfile · Kubernetes YAML · Helm · Terraform | | **文件系统 CVEs** | Trivy (`trivy fs`, 无需 Docker daemon) | Python · Node · Go 生态系统 | | **机密** | Gitleaks | 源代码 + 可选的 git 历史记录 | | **质量** | Pylint, ESLint, SonarQube Community REST | Python · Angular · 任意 | **扫描配置** 定义每个项目运行哪些引擎;`ScanOrchestrator` 并行执行它们 (`ThreadPoolExecutor`) 并通过 SHA-256 指纹消除重复发现。当引擎的二进制文件或服务不可用时,每个引擎都能优雅降级——缺少的工具只会记录警告,绝不会导致扫描崩溃。 ## 🤖 AI 修复 修复方案由具备技术栈感知提示词的**本地 LLM** 生成,并在接触到代码之前受到严格保护: - **Python** —— AST 校验强制要求语法有效的补丁;仅替换受影响的函数。确定性问题(弱哈希、重复字面量)无需 LLM 调用即可修复。 - **Java** —— 安全的加密升级、`PreparedStatement` 模式、TLS 配置。 - **Angular/TypeScript** —— `DomSanitizer` 模式、CSP 指导;硬编码的机密信息将被外部化到 CI/CD 环境变量中,而不仅仅是抹除。 `is_safe_to_apply()` 会拦截删除函数、包含占位符桩或删除了超过 20% 源代码行的补丁。被拒绝的补丁将回退到**仅建议模式的 PR** —— 没有明确的人工批准,绝不修改任何源代码。 ## 🕷 Agentic DAST LangGraph `StateGraph` 协调三个智能体针对实时目标运行,封装了 ZAP REST API: | 智能体 | 角色 | |---|---| | **Explorer** | 对目标进行蜘蛛爬取,映射路由、表单和身份验证边界;可选通过 LLM 对攻击面进行排名 | | **Attacker** | 使用定向 Payload 驱动 ZAP 主动扫描 (XSS、SQLi、路径遍历、身份验证绕过) | | **Verifier** | 重新请求每个警报并在持久化之前确认可利用性 —— 从而减少误报 | 该循环完全针对本地服务 (ZAP + Ollama) 运行,并向仪表板报告实时状态:`exploring → attacking → verifying → done`。 ## 📊 ML 风险评分 XGBoost 分类器根据每个发现的特征向量(严重性、工具、回归计数、存在时间、SLA 临近度、生命周期状态)对其进行评分 `[0.0–1.0]`。模型可以根据仪表板按需重新训练,在未经过训练时回退到基于严重性的确定性评分 —— API 绝不依赖于 ML 的可用性。 ## 🔄 发现生命周期与治理 ``` open ──► fixed ──► regression (re-detected after fix) └────► accepted_risk / false_positive (human triage, reason required) ``` 每一次状态转换都会记录在不可变的审计追踪中。SLA 截止日期按严重性分配 (CRITICAL 3天 · HIGH 7天 · MEDIUM 30天 · LOW 90天),并作为 API 过滤器和仪表板徽章公开显示。GitHub Check Run 会阻止存在严重发现的 PR 合并。 ## 🔐 平台自身的安全性 安全工具必须对自己保持与自身相符的标准: - **路径遍历保护** —— 扫描目标会根据 `SCAN_ALLOWED_ROOTS` 进行验证;拒绝任意的文件系统访问。 - **无 Shell 注入面** —— 子进程调用避免使用 `shell=True`;用户输入在执行前会经过验证。 - **最小权限的 GitHub 访问** —— GitHub App(而非 PAT)仅具有 `contents:write` + `pull_requests:write` 权限,并使用短期的安装 token。 - **机密信息脱离代码** —— 所有凭证均通过环境变量传递;`.env` 被 git-ignored 并由 Gitleaks 自我扫描。 - **吃自己的狗粮** —— 该平台在 CI 中扫描自己的代码库(在每个 PR 上运行 Bandit + pip-audit + Semgrep)。 威胁模型:[docs/threat-model.md](docs/threat-model.md) ## 🧪 质量与工程纪律 - 跨 15 个文件的 **117 个自动化测试**(扫描器、编排、生命周期、ML 回退、GitHub 集成) - CI 流水线在每个 pull request 上运行平台自身的安全引擎 - 优雅降级是经过测试的行为,而非偶然:ZAP、Ollama、LangGraph 和 ML 依赖项在运行时都是可选的 ## 🗺 路线图 | 阶段 | 范围 | 状态 | |---|---|---| | 1 | 核心平台:多语言 SAST、AI 修复、GitHub PR 自动化 | ✅ | | 2 | SCA、扫描配置、发现生命周期、SLA 跟踪、CI Check Runs | ✅ | | 3 | 质量引擎、语义补丁护栏、差异查看器 | ✅ | | 4 | DAST + Agentic DAST、基础设施扫描器 (Checkov/Trivy/Gitleaks)、ML 风险评分、Prometheus/Grafana 可观测性 | ✅ | | 5 | Kubernetes 部署 + kube-bench (CIS 基准)、PostgreSQL 生产配置、SARIF 导出 | 🔜 | 详细的冲刺计划:[ROADMAP.md](ROADMAP.md) ## 🛠 技术栈 **后端:** FastAPI · SQLModel (SQLite,支持 PostgreSQL) · ThreadPoolExecutor 编排 **AI:** Ollama (`qwen2.5-coder:14b`) · LangGraph · XGBoost **安全:** Bandit · Semgrep · pip-audit · OWASP Dependency-Check · OWASP ZAP · Checkov · Trivy · Gitleaks **集成:** GitHub App (JWT RS256) · GitHub Actions · Prometheus + Grafana **前端:** 模块化 ES6 JavaScript · Chart.js · i18n (EN/ES) ## 👤 为什么开发此项目 我曾在一家全球银行内部从事应用安全工作多年,使用 Fortify、Veracode 和 SonarQube 修复了生产环境中成千上万的严重和高危漏洞。我一直面临同样的障碍:本可以加速修复过程的 AI 工具在合同上是被禁止使用的,因为它们会将源代码发送到外部 API。 因此,我打造了这个我无法买到的平台——完整的 AppSec 生命周期,包括 AI 生成的修复方案,完全运行在您控制的基础设施上。它既是一个实用的安全工具,也说明了在受监管的环境中 AI 辅助安全应该如何运作。 ## 📄 许可证 MIT — 详见 [LICENSE](LICENSE)。
Ernesto Mendoza 构建 —— 面向受监管环境的应用安全工程。
标签:AI风险缓解, AV绕过, DevSecOps, DLL 劫持, FastAPI, 上游代理, 代码安全, 大语言模型, 模块化设计, 漏洞枚举, 自动化修复, 请求拦截, 逆向工具, 错误基检测, 静态代码分析