MatthewPaver/Autonomous-Security-Engineer

GitHub: MatthewPaver/Autonomous-Security-Engineer

ASE 是一款授权 AppSec 审查的闭环自动化系统,将多扫描器发现、人工审批与隔离验证串联为「发现→挑战→修复→证明」工作流。

Stars: 0 | Forks: 0

# 自治 Security Engineer **发现 → 挑战 → 修复 → 证明** ASE 是一个用于捆绑练习应用的授权安全审查循环。它将扫描器的发现结果连接成攻击路径,拒绝无依据的声明,要求人工批准具体的补丁,然后在隔离副本上验证该补丁——绝不在原始应用上进行。 | | | |---|---| | **活动** | [Cursor Cybersecurity London Hackathon](https://cursor-cybersecurity-hackathon-08-2026.teamdeel.workers.dev/hackathon) | | **赛道** | 进攻性安全 · 值得信赖的 AI 叙事 | | **仓库** | [github.com/MatthewPaver/Autonomous-Security-Engineer](https://github.com/MatthewPaver/Autonomous-Security-Engineer) | | **口头推介** | [PITCH.md](./PITCH.md) | ## 立即体验(评委专用) | | | |---|---| | **Web** | https://web-three-sooty-73.vercel.app | | **API** | https://ai-security--ase-scanner-fastapi-app.modal.run | | **评委模式** | 首页 → **运行 2 分钟评委演示** | | **鉴权** | 托管环境的变更操作需要通过 `POST /api/auth/demo` 获取演示用的 Bearer | **唤醒提示:** 如果感觉第一次点击很慢,请点击一次 `/health`——闲置后 Modal 可能会处于冷启动状态。 **诚实的结尾:** 在证据回执处结束。最近一次的托管演练最终结果为 **Verified fix** + **Needs human review**(已接受的路径已清除;残留的发现依然保留)。 不完整或状态上升的 Prove 证据必须显示 **NOT PROVEN** / **DO NOT SHIP**——这正是产品在正常运作,而不是演示崩溃。 拍摄镜头清单:[docs/DEMO_SCRIPT.md](./docs/DEMO_SCRIPT.md) · 配音稿:[docs/DEMO_NARRATION.md](./docs/DEMO_NARRATION.md) · 最新 E2E:[audit/STATUS.md](./audit/STATUS.md) ## 两分钟内你能看到什么 | 步骤 | 屏幕展示 | 为什么重要 | |---|---|---| | **Find** | 实时扫描结果 (Semgrep, Gitleaks, Trivy, …) | 集中展示所有问题 | | **Challenge** | 2 个已接受的路径 + 1 个被拒绝的无依据声明 | 站不住脚的声明不会作为“风险”发布 | | **Fix** | 通俗的语言描述 + 技术代码差异 | 保持由人工做最终决定 | | **Prove** | 隔离测试 + 相同扫描器的二次扫描 | 为管理层提供证据 | | **Decide** | 修复结果 **和** 发布决策 | 两个问题,而不是仅仅一个绿色徽章 | 演示目标:处于 `AUTH-REF-PRELAUNCH-001` 下的登录与订单 **参考应用**(包含故意设置的漏洞,已标记为示例)。 ``` flowchart LR A[Find] --> B[Challenge] B --> C[Human Approve] C --> D[Isolated Prove] D --> E[Release decision] ``` ## 诚实的定位 | 声明 | 本次提交中的实际情况 | |---|---| | 闭环审查产品 | **是** — Find → Challenge → Fix → Prove,包含 HITL | | 实时 Modal 扫描器 + 验证 | **是**,当配置为托管/混合模式时 | | Evidence Critic | 针对捆绑案例的**确定性**规则(不是 LLM 评判器) | | 攻击路径 | 为演示故事精心挑选/基于 fixture 支持 | | “Verified fix” 徽章 | 仅当证明契约完全通过时授予;否则显示 **NOT PROVEN** | | 静默修复生产环境 | **绝不** — 原始文件保持不变 | 完整限制说明:[docs/LIMITATIONS.md](./docs/LIMITATIONS.md) ## 安全承诺 | 承诺 | 含义 | |---|---| | 权限优先 | 在扫描之前证明所有权/授权 | | 原件不受影响 | 补丁仅应用于隔离的副本 | | 人工关卡 | 在执行 Prove 之前必须明确批准 | | 诚实标记 | `real` / `fixture` / `mock` — 绝不粉饰 | | 失败即关闭 | 扫描器错误和不完整的 Prove 不算作“已清除” | ## 本地运行(无需凭证) ``` # API cd apps/api && uv sync --group dev uv run uvicorn app.main:app --reload --port 8000 # UI(单独的 terminal) cd apps/web && npm install && npm run dev ``` 打开 http://127.0.0.1:3000 → **运行 2 分钟评委演示**。 健康检查:`curl -s http://127.0.0.1:8000/health | python3 -m json.tool` 可选密钥(见 [`.env.example`](./.env.example)):Modal, Supabase, Ossprey, Overmind, LangSmith。托管演示使用 Modal 密钥 `ase-env`,并配置了 `ASE_REQUIRE_AUTH=true` 和 `ASE_MODAL_SCANNERS=true`。 | 模式 | 适用场景 | 行为 | |---|---|---| | `demo` | 离线评审 | 带标签的 fixture;无需密钥 | | `hybrid` | 实时展示 | 可用时使用真实适配器;否则使用 fixture | | `live` | 集成测试 | 优先使用实时工具;依然诚实标记 | ## 架构(简述) ``` flowchart TB UI[Next.js Judge Mode] --> API[FastAPI on Modal] API --> WF[LangGraph workflow] WF --> S[Semgrep · Gitleaks · Trivy · Ossprey · Overmind] WF --> C[Evidence Critic] C --> H[Human approval] H -->|Approve| V[Modal verify_and_rescan] V --> D[Release decision + evidence receipt] ``` | 层级 | 技术栈 | |---|---| | UI | Next.js · Cytoscape · SSE 时间线 | | 控制平面 | FastAPI · LangGraph · Supabase / 内存存储 | | Find 引擎 | Semgrep · Gitleaks · Trivy · Graphify · Ossprey · Overmind | | Prove | Modal `verify_and_rescan`(匹配基线 + 重新扫描) | | 链路追踪 | LangSmith(仅限真实运行 ID) | Cursor 是开发环境——**不是**运行时依赖项。 ## 仓库结构 ``` apps/api/ FastAPI + LangGraph control plane apps/web/ Judge Mode UI fixtures/vulnerable-app/ Intentional-vuln demo target fixtures/findings/ Labelled scanner fixtures fixtures/graphs/ Labelled graph / attack-path fixtures modal/ Modal workers + hosted ASGI API supabase/migrations/ Control-plane schema + RLS scripts/ demo.sh · e2e_hosted_rehearsal.py docs/ Demo script · limitations · threat model audit/ Submission status + hosted E2E artefact ``` ## 质量检查关卡 ``` cd apps/api && uv run pytest -q && uv run ruff check app cd apps/web && npm run lint && npm run typecheck && npm run build python3 scripts/e2e_hosted_rehearsal.py # hits live Modal ``` 最新托管演练:**PASS** — `eng-4f62eb968ef1`,**VERIFIED** + **REVIEW_REQUIRED**,LangSmith 真实运行记录。详见 [BUILD_STATUS.md](./BUILD_STATUS.md)。 ## 文档导航 | 文档 | 用途 | |---|---| | [PITCH.md](./PITCH.md) | 口头简述及受众提问 | | [docs/DEMO_SCRIPT.md](./docs/DEMO_SCRIPT.md) | 2 分钟拍摄镜头清单 | | [docs/DEMO_NARRATION.md](./docs/DEMO_NARRATION.md) | 同步的录制配音稿 | | [BUILD_STATUS.md](./BUILD_STATUS.md) | 托管 URL 及验证状态 | | [audit/STATUS.md](./audit/STATUS.md) | 最新的托管 E2E 收尾状态 | | [docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md) | 更深层的系统设计 | | [docs/LIMITATIONS.md](./docs/LIMITATIONS.md) | 真实功能与 fixture 的区别 | | [docs/THREAT_MODEL.md](./docs/THREAT_MODEL.md) | 信任边界 | | [docs/CHALLENGE_ALIGNMENT.md](./docs/CHALLENGE_ALIGNMENT.md) | 推介声明 → 代码证据 | | [docs/REPO_DECISIONS.md](./docs/REPO_DECISIONS.md) | 引擎保留/拒绝清单 | ## 许可证与范围 黑客松原型,仅用于**授权的**演示和评估。 MIT 许可证 — 详见 [LICENSE](./LICENSE)。 未经进一步加固、绑定项目的鉴权、速率限制和运维控制,不得作为生产级安全产品使用。
标签:AI辅助安全修复, DevSecOps, Maven, 上游代理, 安全审查, 漏洞验证, 自动化安全工程, 逆向工具, 静态应用安全测试