跳转至

Insecure Access Control

不安全的访问控制

描述

该应用程序未实施适当的访问控制,从而允许攻击者访问未授权的数据或执行 未授权的业务功能。

访问控制漏洞可能是由以下原因引起的:

  • 使用主键引用内容,且缺乏对内容访问权限的验证。
  • CORS 配置错误允许了未经授权的 API 访问。
  • 元数据操纵,例如重放(replay)或篡改访问控制令牌。

建议

只有在受信任的服务器端代码或无服务器(server-less) API 中实施访问控制,且攻击者无法 修改访问控制检查或元数据时,访问控制才有效。

  • 除公共资源外,默认拒绝(deny by default)。
  • 实施一次访问控制机制并在整个应用程序中重复使用它们,包括尽量减少 CORS 的使用。
  • 模型访问控制应强制执行记录所有权,而不是接受用户可以创建、读取、更新 或删除任何记录。
  • 领域模型应强制执行应用程序独特的业务限制要求。
  • 禁用 Web 服务器目录列表,并确保 Web 根目录中不存在文件元数据(例如 .git)和备份文件。
  • 记录访问控制失败并在适当时(例如,反复失败)向管理员发出警报。
  • 对 API 和控制器访问进行速率限制,以最大程度地减少自动化攻击工具带来的危害。
  • 登出后应在服务器上使 JWT 令牌失效。开发人员和 QA 人员应包含访问控制的 功能性单元测试和集成测试。

链接

标准

  • 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