Insecure Access Control
不安全的访问控制
描述
该应用程序未实施适当的访问控制,从而允许攻击者访问未授权的数据或执行 未授权的业务功能。
访问控制漏洞可能是由以下原因引起的:
- 使用主键引用内容,且缺乏对内容访问权限的验证。
- CORS 配置错误允许了未经授权的 API 访问。
- 元数据操纵,例如重放(replay)或篡改访问控制令牌。
建议
只有在受信任的服务器端代码或无服务器(server-less) API 中实施访问控制,且攻击者无法 修改访问控制检查或元数据时,访问控制才有效。
- 除公共资源外,默认拒绝(deny by default)。
- 实施一次访问控制机制并在整个应用程序中重复使用它们,包括尽量减少 CORS 的使用。
- 模型访问控制应强制执行记录所有权,而不是接受用户可以创建、读取、更新 或删除任何记录。
- 领域模型应强制执行应用程序独特的业务限制要求。
- 禁用 Web 服务器目录列表,并确保 Web 根目录中不存在文件元数据(例如 .git)和备份文件。
- 记录访问控制失败并在适当时(例如,反复失败)向管理员发出警报。
- 对 API 和控制器访问进行速率限制,以最大程度地减少自动化攻击工具带来的危害。
- 登出后应在服务器上使 JWT 令牌失效。开发人员和 QA 人员应包含访问控制的 功能性单元测试和集成测试。
链接
- Prevent of Insecure Direct Object reference (OWASP)
- CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
- CWE-284: Improper Access Control
- CWE-285: Improper Authorization
- CWE-639: Authorization Bypass Through User-Controlled Key
标准
- CWE_TOP_25:
- CWE_276
- OWASP_ASVS_L1:
- V4_1_5
- OWASP_ASVS_L2:
- V4_1_5
- V1_4_4
- V1_10_1
- OWASP_ASVS_L3:
- V4_1_5
- V1_4_4
- V1_10_1
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_7_3
- REQ_11_3
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_6_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5