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, 上游代理, 中间件分析, 云安全监控, 产品安全, 代码分析, 代码安全, 凭证管理, 可视化界面, 多租户隔离, 安全合规, 安全扫描, 授权映射, 授权检查, 攻击面梳理, 文档结构分析, 无后门, 时序注入, 权限管理, 模型越狱, 漏洞枚举, 漏洞预防, 盲注攻击, 网络代理, 访问控制, 路由分析, 通知系统, 静态分析