Ozark-Security-Labs/AuthMap
GitHub: Ozark-Security-Labs/AuthMap
AuthMap 是一款用 Rust 编写的防御性安全工具,用于静态分析应用程序中路由、处理器和数据变更操作的授权覆盖范围,生成结构化的授权映射图以辅助安全审查。
Stars: 0 | Forks: 1
# AuthMap
AuthMap 是一款防御性的产品安全工具,用于映射应用程序中的授权覆盖范围。
它回答了一个简单的问题:
AuthMap 专为应用安全工程师、产品安全团队和开发人员设计,他们需要对代码库中身份验证、授权、所有权检查、租户隔离和敏感操作控制的实际位置有一个具体的清单记录。
## 问题
大多数团队并没有可靠的授权覆盖范围映射图。他们可能知道应用程序使用了 middleware、policies、guards、decorators 或 service-layer checks,但往往无法回答:
- 哪些路由需要身份验证?
- 哪些路由需要特定角色?
- 哪些数据库 mutations 可以从公共 endpoint 访问?
- 哪些路径依赖所有权检查?
- 哪些敏感操作仅在前端受保护?
- 在这个 pull request 中,哪些 endpoint 更改了授权行为?
传统的 SAST 工具通常会产生大量漏洞告警。AuthMap 从更早的一层开始:构建映射图,附加证据,并使覆盖情况变得可审查。
## 产品理念
授权漏洞在成为代码缺陷之前,往往是清单管理上的失败。
如果审查人员能够看到应用程序的有效授权面,他们就能更早地发现遗漏的检查、错位的控制和高风险的偏移。
## 初始范围
AuthMap 最初将作为一个本地 CLI 和对 CI 友好的分析器运行,用于生成结构化的授权映射图。
初始目标:
- FastAPI
- Django 和 Django REST Framework
- Express
- Next.js 路由处理程序
- 常见的 middleware/decorator/guard 模式
- 针对 SQLAlchemy、Django ORM 和 Prisma 的 ORM mutation 证据
初始输出:
- Markdown 报告
- JSON 授权映射图
- 用于代码扫描集成的 SARIF
- GitHub Actions 摘要
规范的 JSON 契约记录在 [docs/SCHEMA.md](docs/SCHEMA.md)
中,并由 [schemas/authmap.schema.json](schemas/authmap.schema.json) 定义。
诊断类别、稳定代码和 CI 退出行为记录在
[docs/DIAGNOSTICS.md](docs/DIAGNOSTICS.md) 中。
## 示例报告结构
```
Route: DELETE /accounts/:id
Handler: src/routes/accounts.ts:88
Auth evidence:
- requiresAuthenticatedUser middleware
- AccountPolicy.canDelete(user, account)
Data mutations:
- prisma.account.delete(...)
Coverage: authn + ownership_check
Risk: low
```
```
Route: POST /admin/users/:id/disable
Handler: app/api/admin/users/[id]/route.ts:41
Auth evidence:
- session lookup detected
- no role or privilege check detected before mutation
Data mutations:
- db.user.update({ disabled: true })
Coverage: authn_only
Risk: review_required
Reviewer question:
- Should this path require admin role evidence?
```
## 核心概念
### 授权证据
AuthMap 不仅仅是寻找像 `authorize` 这样的函数名。它收集类型化的证据:
- 需要身份验证
- 角色检查
- 权限检查
- 所有权检查
- 租户隔离检查
- 管理员/超级用户门禁
- 策略对象调用
- 审计/日志控制
- 显式公共路由声明
### 可达性
只有当控制位于到达操作的路径上时,它才有意义。AuthMap 应区分:
- 保护路由的 middleware
- 保护处理程序的 decorator
- 保护操作的 service-layer guard
- 不保护 backend mutations 的仅前端检查
### 覆盖分类
AuthMap 应以可审查的术语对覆盖范围进行分类:
- public_declared
- unauthenticated
- authn_only
- role_guarded
- permission_guarded
- ownership_guarded
- tenant_guarded
- admin_guarded
- unknown_or_dynamic
## CLI 草图
```
authmap init
authmap scan --format markdown --output authmap.md
authmap scan --format json --output authmap.json
authmap diff main...HEAD
authmap explain ROUTE_OR_FINDING_ID
authmap baseline create
authmap rules suggest
```
## 本地开发
AuthMap 被实现为 Rust Cargo workspace。常用的本地命令:
```
cargo run -p authmap-cli -- --help
cargo run -p authmap-cli -- scan . --format json --output authmap.json
cargo run -p authmap-cli -- scan . --format sarif --output authmap.sarif.json
cargo test --workspace
cargo install --path crates/authmap-cli
```
`authmap scan` 支持 `--mode advisory|enforce`。在 v0.1.0 版本中,enforce 模式
会写入请求的报告,并在完成的文档包含
任何 `error` 或 `fatal` 诊断时以 `20` 状态码退出。警告保持不阻塞状态;不完整的
发现条件(例如文件截断或受支持文件过大)在 enforce 模式下会被
提升为错误诊断。
发现过程遵循 `authmap.yml` 中类似 gitignore 风格的 `include` 和 `exclude` 条目。Includes 会缩小支持的源文件集,excludes 优先于
includes,并且 AuthMap 总是跳过依赖、构建、VCS、缓存和生成的
报告输出目录。
### 退出码
| 代码 | 含义 |
| --- | --- |
| 0 | 成功 |
| 2 | CLI 用法错误,包括不支持的 `--format` 值 |
| 10 | 目标路径不存在或不可读 |
| 11 | Enforce 模式目标存在但不包含支持的源文件 |
| 12 | 配置文件无法读取、解析或验证 |
| 13 | 扫描 pipeline 因其他原因失败 |
| 14 | 报告渲染或写入失败 |
| 20 | 报告写入后 Enforce 模式的诊断失败 |
## GitHub Action 草图
```
name: AuthMap
on: [pull_request]
jobs:
authmap:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bjcorder/AuthMap@v0
with:
mode: advisory
output: markdown,sarif
```
## 与相关项目的关系
AuthMap 可以成为更高级别产品安全工具的基础:
- 不变量回归检测
- 租户隔离检查
- API 安全差异比对
- 安全控制分类账
- 威胁模型更新
它通过首先生成一个有证据支持的映射图来补充扫描器,然后允许在之上叠加特定的发现和策略。
## 非目标
AuthMap 旨在不用于:
- 利用授权漏洞
- 攻击在线系统
- 取代人工安全审查
- 在没有证据的情况下声称存在漏洞
- 要求运行目标应用程序
## 状态
本代码库包含 v0.1.0 的基础工作:用于
CLI、配置加载、确定性发现、Tree-sitter 解析、
规范 schema/IR 以及 JSON/Markdown/SARIF 报告的 Rust workspace crates。特定于框架的
路由和授权适配器仍是未来的里程碑工作。
标签:API安全, AV绕过, CISA项目, DevSecOps, Django, DjangoORM, Express, FastAPI, GitHubActions, GNU通用公共许可证, JSON输出, LNA, Node.js, Prisma, Python, SARIF, SAST, SQLAlchemy, Streamlit, 上游代理, 中间件分析, 云安全监控, 产品安全, 代码分析, 代码安全, 凭证管理, 可视化界面, 多租户隔离, 安全合规, 安全扫描, 授权映射, 授权检查, 攻击面梳理, 文档结构分析, 无后门, 时序注入, 权限管理, 模型越狱, 漏洞枚举, 漏洞预防, 盲注攻击, 网络代理, 访问控制, 路由分析, 通知系统, 静态分析