写点什么

OWASP Top 10 漏洞解析(1)- A1:Broken Access Control 访问控制失效

  • 2023-09-26
    广东
  • 本文字数:1640 字

    阅读完需:约 5 分钟

OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效

作者: gentle_zhou


原文链接:https://bbs.huaweicloud.com/blogs/400993




Web 应用程序安全一直是一个重要的话题,它不但关系到网络用户的隐私,财产,而且关系着用户对程序的新人。随着 Web 应用程序功能持续增加,复杂性不断提高,这些程序也面临着越来越多的安全威胁和挑战。


为了帮助这些应用程序的开发团队和安全人员了解和防范这些威胁,提高安全意识,编写更安全的代码,OWASP(Open Web Application Security Project,开放式 Web 应用程序安全项目)发布了一份标准指南,称为 OWASP Top 10。


这是一份关于 Web 应用程序安全风险的标准指南,它基于全球范围内的安全专家和数据提供者的共识,列出了当前最严重、最关键的 10 种 Web 应用程序安全风险,并提供了相应的防范措施和建议。OWASP Top10 每隔几年会更新一次(目前已经发布了六个版本,分别是 2004 年、2007 年、2010 年、2013 年、2017 年和 2021 年),最新的版本是在 2021 年发布的 OWASP Top10:2021。


今天,就来为大家讲解其中的第一条缺陷:Broken Access Control 访问控制失效,它从 2017 年版本的第 5 位上升到了当前第一位。



破坏访问控制指的是访问控制策略没有被正确的执行,导致用户可以在他们的预期权限之外进行操作。这种缺陷通常会导致未授权的信息被泄露,修改,销毁,或者让用户执行了超出其权限限制的业务功能。

常见的访问控制失效类型

常见的访问控制失效类型包括:


  • 违反最小权限原则或默认拒绝原则,即访问只应该被授予限定的能力、角色或用户,但却对任何人开放。

  • 权限提升,即用户使用了超过其原先身份的权限,比如在未登录时拿取到了用户权限,或在以用户身份登录时拿取到了管理员权限。

  • 通过参数篡改或强制浏览来修改 URL、应用状态、HTML 页面,或则使用攻击工具修改 API 请求,以此绕过访问控制检查。

  • 修改唯一标识符(不安全的直接对象引用),即通过修改应用程序中用户可控的值(如参数)来访问对象,但程序没有进行适当的授权检查,导致其可以去查看或编辑其他人的账户。

  • 元数据操作,例如重放或篡改 JSON Web Token(JWT)来访问控制令牌,或则通过修改 cookie、隐藏字段来提升权限。

  • CORS 配置错误,即跨域资源共享(CORS)的机制没有正确设置,导致浏览器无法访问不同源的资源,导致访问控制检查被绕过,造成服务器信息泄露或数据篡改。

  • API 未设置访问控制。

如何防止该缺陷的发生

访问控制仅仅在可信的服务器端代码或则 API 中生效,因为这可以防止攻击者修改访问控制检查或元数据。同时,需要做到如下几点:


  • 除了公共资源意外,其余访问默认都拒绝

  • 实现一次访问控制机制,并在整个应用程序中重复使用它们,包括尽量减少跨域资源共享(CORS)的使用。

  • 模型访问控制应该强制记录用户的所有权,而不是接受任意用户可以创建、读取、更新或删除任何记录。

  • 一些特殊应用程序业务的限制需求应该由域模型(domain model)强制执行。

  • 禁用 web 服务器目录列表,并确保文件元数据(例如.git)和备份文件不在 web 根目录中。

  • 记录访问控制失败的发生,在适当的时候提醒管理员(例如,重复失败 X 次)。

  • 对 API 和控制器访问进行速率限制,以最小化自动化攻击工具造成的危害。

  • 用户注销后,有状态会话标识符应该在服务器上失效。无状态 JWT 令牌应该是短暂的,这样攻击者的机会窗口就会被最小化。对于寿命较长的 jwt,强烈建议遵循 OAuth 标准来撤销访问。


开发人员和安全质量相关人员在日常,应该养成针对访问控制功能模块进行集成测试的习惯。

举个栗子

应用程序在访问账号信息的 SQL 语句中使用了未被验证的数据:


 pstmt.setString(1, request.getParameter("acct")); ResultSet results = pstmt.executeQuery( );
复制代码


那么攻击者就可以去修改这个参数信息"acct”为任何他们想要的信息,配上任何他们希望了解的账号。如果程序对这信息没有好好验证,那么攻击者就可以借此去了解任何一位用户的账号信息,比如https://example.com/app/accountInfo?acct=notmyacct

参考链接

  1. https://owasp.org/Top10/A01_2021-Broken_Access_Control/


体验华为云 CodeArts Check 代码检查服务:https://www.huaweicloud.com/product/codecheck.html

用户头像

公众号:华为云PaaS服务,有见面礼等你哦! 2022-09-26 加入

还未添加个人简介

评论

发布
暂无评论
OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效_云计算_华为云PaaS服务小智_InfoQ写作社区