访问控制是控制和监控用户和应用程序对资源的访问的过程。这通常包含在身份和访问管理(IAM)的安全域下。该领域包括四个主要元素:1)识别2)身份验证3)授权4)责任。这四个元素协同工作,以确保所有公司资源仅由应该有权访问它们的人访问,只要他们应该有权访问,并且它要求监视用户操作,并对所有用户执行的操作负责。
近年来,失效的访问控制已被证明是web应用程序中突出的漏洞之一。2021年,OWASP十大漏洞列表将访问控制漏洞从第五位移至web应用程序漏洞列表的第一位。根据OWASP, 94%的应用程序被发现存在某种形式的访问控制漏洞,平均发生率为3.81%。让我们来看看为什么访问控制漏洞越来越多的一些原因:
应用程序的增加:在过去的10-20年里,围绕Web和移动应用程序的数字应用数量非常庞大。消费者现在希望大多数企业提供在线服务。应用程序越多,攻击面就越多。
应用程序之间集成增加:应用程序变得比以往任何时候都更加互连,并且精确地管理允许与可能变得非常复杂的内容进行通信的内容。有些设备可以很好地协同工作,而另一些则需要更复杂的解决方案。更大的应用程序也有更大的攻击面,包括更多的域、目录、集成、功能等。
安全编码培训不足:许多开发人员根本没有接受过很多关于创建安全代码的培训。因此,许多应用程序的访问控制实现可能无效或完全缺失。这会产生安全漏洞,允许用户提升其权限并获得他们不应该拥有的访问权限。如果组织没有强大的 DevSecOps 文化,允许没有经验的开发人员设置安全策略是失败的原因。
身份验证和会话管理中断:当应用程序无法正确验证或保护与用户身份验证和会话关联的信息时,就会发生损坏的身份验证和会话管理缺陷。攻击者可利用此漏洞获取他们不应访问的资源或数据的访问权限。一个常见的例子是 Json Web 令牌 (JWT)。这些令牌通常用于 Web 应用程序中的身份验证。可以执行更改令牌签名算法的攻击,这可用于规避依赖于 jwt 令牌完整性的身份验证方法。
违规授权:授权是指允许用户执行的操作。通常,用户不允许执行的任何操作都不会显示在其用户界面中。但是,如果没有正确实现访问控制,则可以通过向相关操作/功能发出直接请求来访问用于更高特权级别的功能。这将是应用程序中授权失效的一个示例。假设一个Web应用程序有一个只有授权管理员才能访问的管理仪表板。但是,如果普通用户能够通过操纵URL访问指示板,那么这就是一个破坏的授权漏洞。攻击者可以利用这一点访问敏感信息,修改或删除数据,并执行其他网络攻击。
注入缺陷:当不受信任的输入注入到应用程序中时,就会发生注入缺陷,从而导致意外行为。可利用此漏洞未经授权访问敏感数据或修改应用程序数据。这方面的一个例子是跨站点脚本,这是一种通常使用 javascript 代码的注入攻击。攻击者可利用此漏洞在用户的浏览器中执行恶意脚本,从而导致会话劫持、cookie 盗窃或其他恶意活动。若要检测此类漏洞,应检查应用程序的源代码,以确保所有用户输入在后端被接受之前都经过过滤/验证。
数据泄露:当公司破坏访问控制时,攻击者很容易窃取公司数据。例如,如果攻击者能够通过SQL注入访问数据库中的数据,那么他们就可以窃取公司信息构成数据泄露。
潜在的权限提升:权限提升是指攻击者可以提升其权限以实现提权访问的情况。例如,普通用户帐户可以通过可用的漏洞利用来提升其权限,成为管理员。在这种情况下,攻击者将能够执行他们不应该执行的命令和读取数据。
未遵守合规法规:如果公司访问控制不佳,并且通过审计或安全测试发现了这一点,那么将面临不符合合规性法规的风险。许多合规性法规要求公司实施强大的访问控制来保护公司资产。
运营中断: 由于访问控制不善而导致的安全事件可能会对公司运营产生重大影响。当外部攻击者访问公司资源并执行攻击时,可能会导致服务中断。
声誉/法律/财务影响: 当攻击者访问公司数据时,可能会对企业产生一些负面影响。首先,从数据泄露中恢复会带来财务影响,以及与数据隐私相关的声誉和法律后果。如果数据泄露,许多客户/合作伙伴将失去对公司的信任,如果他们认为公司有过错,他们中的一些人可能会选择采取法律行动。
如果攻击者试图通过修改对系统的请求来篡改应用程序或数据库,系统应该有适当的保护措施来识别无效请求。两个常见的例子是SQL注入和跨站点脚本攻击。SQL注入提交修改后的SQL语句,试图从后端数据库提取信息或修改数据库本身。为了防御这种类型的攻击,正确的输入验证应该检测这样的无效请求,并且不允许它执行。
其次,系统应具有功能级访问控制,以验证用户是否有权执行其所需的操作。例如,如果某人使用用户帐户,则他们应该无法执行管理员操作或提升其权限以成为管理员。特别是,Web 应用程序需要依赖服务器端访问控制而不是客户端,这样攻击者就无法篡改它。应用程序应在多个级别(包括数据或对象)执行检查,以确保过程中没有漏洞。这包括发出请求的授权以及访问该请求中特定对象的授权。
第三,企业需要不断审查其访问控制流程和程序。花时间彻底检查所选工具和技术的授权逻辑,并在必要时实现自定义逻辑。还应正式测试所有配置,以确保没有变通方法。此外,对组织内的员工/承包商进行访问审查,以确保没有人拥有超出其工作所需权限的额外访问权限。所有静态公司资源都应经过正式授权并纳入访问控制策略。
最后,当涉及到应用程序的功能时,需要确保其设计正确。当授权检查失败时,应该禁止访问,这是“故障安全”原则的一部分。如果访问请求或操作失败,则应用程序应该在允许其保持安全的状态下失败。为了确保这一点,对授权逻辑执行单元和集成测试,以确保它是合理的,并且不易被绕过。
参读链接:
https://www.softwaresecured.com/post/risk-of-broken-access-control
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000012/viewspace-3003195/ ,如需转载,请注明出处,否则将追究法律责任。