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) 授权。
**安全声明代价很低,证据则不然。**
标签:云安全监控, 代码安全, 漏洞修复, 漏洞枚举, 网络安全培训, 请求拦截, 逆向工具, 静态分析