lemkyz/Aegis

GitHub: lemkyz/Aegis

Aegis 是一款 VS Code 安全验证扩展,通过证据驱动的检测-修复-验证链路,确保漏洞补丁真正消除可利用行为而非仅仅掩盖警告。

Stars: 1 | Forks: 1

# Aegis **检测。复现。修复。重放。证明。** VS Code 的安全验证。 发现并不因为警告消失而被修复。
Aegis 从第一份证据开始追踪漏洞,直到得出最终的验证结果。 它会分析代码,记录发现问题的原因,在隔离的本地 container 中运行明确授权的验证,应用可审查的补丁,检查项目,重新扫描结果,并重放原始验证。 结果不会是一个模糊的成功消息。 它是以下三种状态之一: - **VERIFIED** — 证据支持该修复 - **PARTIAL** — 静态结果有所改善,但缺少完整的证明 - **FAILED** — 问题仍然存在,补丁破坏了项目,或者出现了回归 ## 问题所在 大多数安全编码工作流结束得太早。 扫描器报告了一个危险的模式。 补丁移除了该模式。 警告消失了。 大家继续推进。 但原始行为可能仍然可被利用。 Aegis 将检测、修复和验证视为独立的阶段。它不允许一个阶段为另一个阶段提供隐式证明。 ``` detect ↓ collect evidence ↓ authorize validation ↓ reproduce in isolation ↓ apply a reviewable patch ↓ run project checks ↓ rescan ↓ replay the same validation ↓ prove the result ``` ## 独特之处 | 传统工作流 | Aegis | |---|---| | 报告可疑模式 | 记录发现及支持性证据 | | 建议替换方案 | 生成可审查的补丁 | | 在应用编辑后停止 | 运行语法、测试和构建检查 | | 假设警告消失即代表成功 | 重新扫描已修复的代码 | | 在补丁之后测试不同的内容 | 重放已授权的基线 | | 返回通用的成功状态 | 返回基于证据的结论 | ## 验证状态 ### `VERIFIED` Aegis 仅在以下情况使用此状态: - 配置的项目检查已通过 - 目标发现已消失 - 未引入新的静态回归 - 先前确认的动态基线不再复现 ### `PARTIAL` 补丁通过了可用的静态和项目检查,但缺乏完整的动态证明,或证明结果不确定。 PARTIAL 有意不被呈现为 VERIFIED。 ### `FAILED` 补丁验证失败,因为发生了以下至少一种情况: - 项目检查失败 - 原始发现仍然存在 - 出现了新的回归 - 授权的验证仍然可复现 - 执行以某种方式失败,导致无法得出可信的结论 ## 当前功能 - 源码和工作区分析 - Git 变更扫描 - 扫描器证据关联 - 依赖项漏洞检测 - 攻击面映射 - 威胁建模 - 可利用性分类 - 可审查的安全补丁 - 语法、测试和构建验证 - 静态修复前后对比 - 显式验证授权 - 隔离的 Podman 或 Docker 执行 - 只读 repository 挂载 - 禁用或仅限 loopback 的网络连接 - 动态证据评估 - 修复前后验证重放 - 统一的修复验证报告 - VS Code 内的持久化报告 ## 安全模型 动态验证必须经过明确授权。 Aegis 不会默默执行验证命令,也不会将受阻、失败或超时的运行视为安全证明。 本地 sandbox 目前应用以下规则: ``` read-only container root read-only repository mount network disabled by default all Linux capabilities dropped no-new-privileges unprivileged container user CPU and memory limits process limits execution timeout bounded stdout and stderr no shell-based container command construction ``` 验证专为归您所有或经您授权测试的 repository 和系统设计。 ## 架构 ``` ┌──────────────────────────────┐ │ VS Code Extension │ │ │ │ analysis • findings • diffs │ │ authorization • reports │ └──────────────┬───────────────┘ │ ▼ ┌──────────────────────────────┐ │ Aegis API │ │ │ │ orchestration • evidence │ │ verification • replay │ └───────┬──────────────┬───────┘ │ │ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ Static Layer │ │ Dynamic Layer│ │ │ │ │ │ scanners │ │ authorization│ │ data flow │ │ sandbox plan │ │ dependencies │ │ Podman/Docker│ └──────┬───────┘ └──────┬───────┘ │ │ └────────┬────────┘ ▼ ┌──────────────────────────────┐ │ Fix Verification │ │ │ │ project checks │ │ static rescan │ │ baseline replay │ │ unified verdict │ └──────────────────────────────┘ ``` ## 仓库结构 ``` aegis/ ├── backend/ │ ├── aegis/ │ │ ├── orchestrator/ │ │ ├── schemas/ │ │ └── security/ │ └── tests/ ├── extension/ │ ├── src/ │ └── dist/ ├── docs/ └── examples/ ``` ## 后端 环境要求: - Python 3.14 - Podman 或 Docker - Semgrep ``` cd backend python -m venv .venv source .venv/bin/activate pip install -e ".[dev]" export AEGIS_FINGERPRINT_KEY="$( python -c 'import secrets; print(secrets.token_urlsafe(48))' )" uvicorn aegis.main:app --reload ``` 检查服务状态: ``` curl http://127.0.0.1:8000/health ``` ## VS Code 扩展 ``` cd extension npm install npm run compile ``` 在 VS Code 中打开扩展目录并启动 Extension Development Host。 该扩展默认使用以下后端地址: ``` http://127.0.0.1:8000 ``` 必要时可通过 `aegis.backendUrl` 设置进行更改。 ## 测试 运行后端测试套件: ``` cd backend source .venv/bin/activate python -m pytest -q ``` 编译扩展: ``` cd extension npm run compile ``` ## 动态重放冒烟测试 fixture 以下位置提供了一个安全的本地 fixture: ``` examples/dynamic_replay_smoke ``` 运行命令: ``` cd examples/dynamic_replay_smoke python validation.py PYTHONPATH=. python -m pytest tests -q ``` 存在漏洞的基线报告: ``` AEGIS_EXPLOIT_CONFIRMED ``` 成功修复后,相同的验证器应报告: ``` AEGIS_SAFE_BEHAVIOR ``` 该 fixture 检查命令构造过程,而不会通过 shell 执行提供的 payload。 ## 项目状态 Aegis 正在积极开发中。 当前的里程碑确立了完整的验证链: ``` finding → authorized reproduction → patch → project verification → static rescan → dynamic replay → final verdict ``` 在首个稳定版本发布之前,接口和 schema 可能会发生更改。 ## 负责任的使用 仅对您拥有或获得明确测试授权的代码和系统使用 Aegis。 未经授权,请勿对其第三方基础设施使用其验证功能。 ## 许可证 Aegis 采用 [Apache License 2.0](LICENSE) 授权。
**安全声明代价很低,证据则不然。**
标签:云安全监控, 代码安全, 漏洞修复, 漏洞枚举, 网络安全培训, 请求拦截, 逆向工具, 静态分析