CartoonSavage32/AccessGuard

GitHub: CartoonSavage32/AccessGuard

一款面向 Python 后端的静态分析工具,通过构建跨文件调用图追踪路由到敏感操作的隐式执行路径,在代码进入生产环境前检测意外的数据访问和权限提升风险。

Stars: 0 | Forks: 0

# AccessGuard **在 Python 后端代码进入生产环境之前,检测意外的数据访问和权限提升。** ![Python](https://img.shields.io/badge/python-3.13%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ## 问题所在 后端的安全漏洞通常是*间接的*。一段单独看起来无害的路由,可能会通过一系列内部调用悄然访问到管理员逻辑、计费服务或 token 解密——这些在代码审查中都不容易被发现。 ``` GET /users → fetch_user_data() → billing_service.get_data() ← Should /users really touch billing? ``` AccessGuard 能够追踪这些隐藏的执行路径,并在开发阶段及早暴露它们。 ## 快速入门 ``` git clone https://github.com/CartoonSavage32/AccessGuard cd AccessGuard pip install -e . accessguard scan . ``` ## 输出示例 ``` accessguard scan examples/sample_app ``` ``` === AccessGuard Report === Summary: Routes scanned: 6 Risks found: 4 HIGH / 0 MEDIUM / 0 LOW Risks: [HIGH] GET /users (score: 6) Potential privilege escalation: route '/users' accesses sensitive operation 'billing_service.get_data'. Verify this is intended. [HIGH] POST /contact (score: 6) Potential privilege escalation: route '/contact' accesses sensitive operation 'admin_service.reset_system'. Verify this is intended. ``` ## 检测内容 - **领域不匹配** — 路由访问了超出其预期范围的 service - **权限提升** — 非特权路由访问了管理员或敏感操作 - **多跳路径** — 仅在深入 2-3 层函数调用时才会出现的风险 ## 安装 **选项 1 — pip(推荐)** ``` pip install -e . ``` **选项 2 — Poetry** ``` poetry install ``` ## 使用方法 ``` accessguard scan accessguard init ``` **示例** ``` accessguard scan . accessguard scan ./backend accessguard scan examples/sample_app accessguard init ``` **参数标志** | Flag | 描述 | |------|-------------| | `--json` | 以 JSON 格式输出结果 | | `--quiet` | 仅显示检测到的风险,隐藏摘要信息 | | `--fail-on-high` | 如果发现任何 HIGH(高风险)项,则以退出码 `1` 退出(在 CI 中非常有用) | ## 配置 AccessGuard 支持通过项目根目录下的 `accessguard.yaml` 进行项目级配置。 使用以下命令创建初始配置文件: ``` accessguard init ``` 当您运行: ``` accessguard scan . ``` 如果存在 `accessguard.yaml`,AccessGuard 将自动加载。如果不存在配置文件,AccessGuard 将回退到内置默认配置。 **默认配置格式** ``` sensitive_keywords: - billing - token - auth - secret high_privilege_keywords: - admin - delete - reset - token - decrypt - billing safe_routes: - auth - callback - oauth - login ``` **初始化行为** - 在当前目录创建 `accessguard.yaml` - 不会覆盖已有的 `accessguard.yaml` 文件 - 在两种情况下都会打印成功/提示信息 ## 忽略路径 在项目根目录创建一个 `.accessguardignore` 文件,以将文件或目录排除在分析之外(语法与 `.gitignore` 相同)。 ## 工作原理 1. 使用 `ast` 模块**解析** Python 源文件 2. **提取** HTTP 路由处理程序及所有可触达的函数/方法调用 3. **构建**跨文件调用图 4. 从每条路由出发**遍历**调用图,跟踪多跳链路 5. 基于确定性风险规则**标记**触及敏感操作的路径 ## 真实案例 (NudgePe) AccessGuard 曾在 NudgePe(一个包含 25 条以上路由的真实 Python 后端)上运行: - 分析了 **25** 条路由 - 检测到 **1** 个 HIGH(高风险)项 - OAuth/token 流程被正确分类为 LOW(低风险) ``` [HIGH] POST /{reminder_id}/send-now Potential privilege escalation: route accesses sensitive operation 'decrypt' ``` ## 局限性 AccessGuard 是一款**静态分析工具**——它没有运行时上下文。请注意: - 基于名称的调用解析可能会遗漏动态导入或元编程模式 - 启发式关键字匹配可能会产生假阳性或假阴性 - 专为 Python 后端设计;目前不支持其他语言 - 对于庞大或复杂的代码库,可能需要调整敏感关键字列表 ## 路线图 - [ ] 改进符号和导入解析 - [ ] 更好的身份验证感知分类 - [ ] 扩展框架支持(超越 Flask/FastAPI 模式) - [ ] CI/CD 集成和稳定的 PyPI 发布 ## 贡献 欢迎提交 Pull request。如果您在真实代码库中发现了误报或漏报,提交一个带有最小复现示例的 Issue 将是对我们最有帮助的贡献。 ## 许可证 MIT
标签:AST抽象语法树, CSV导出, DevSecOps, Python后端, SAST, URL发现, 上游代理, 代码安全, 协议分析, 后端安全, 安全专业人员, 安全左移, 安全扫描, 安全检测, 开源安全工具, 数据访问控制, 时序注入, 未授权访问, 权限提升, 漏洞枚举, 盲注攻击, 自动化payload嵌入, 越权漏洞检测, 路径追踪, 软件供应链安全, 远程方法调用, 逆向工具, 逆向工程平台, 错误基检测, 静态代码分析