乐趣区

关于漏洞:OWASP-Top-10漏洞解析1-A1Broken-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

退出移动版