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, 上游代理, 安全审查, 漏洞验证, 自动化安全工程, 逆向工具, 静态应用安全测试