OWASP十二大API安全威胁

发布时间:2025-01-01 15:53:58    关键词:API安全威胁

OWASP十二大API安全威胁

网络犯罪分子越来越多地利用易受攻击的API来入侵系统和窃取数据。值得注意的是,业务逻辑攻击是最常见的API相关安全威胁类型,允许攻击者出于恶意操纵API的函数、数据或工作流。以下是最常见的API安全威胁,如开放式Web应用程序安全项目(OWASP)API 十二大威胁列表所示。

1) 对象级授权失败

这是指API授权系统中的一个漏洞,该漏洞允许未经授权的用户访问他们不应该访问的资源。API往往会暴露处理对象标识符的端点,从而产生广泛的攻击面。当API在允许用户访问资源之前没有正确检查用户的权限时,可能会出现漏洞。

例如,考虑一个管理用户及其权限列表的API。如果API在允许用户访问特定用户的信息之前没有正确检查用户的权限,则未经授权的用户可能会访问该信息。

为了解决这个问题,公司可以采取以下步骤:
•实施适当的对象级授权检查:API应在允许用户访问任何资源之前检查用户的权限。在使用用户输入访问数据源的每个函数中,都应该考虑对象级授权检查。
•使用强大且安全的授权系统:API应使用安全且经过良好测试的授权系统,如OAuth或JWT,以确保正确检查用户权限。

2) 用户身份验证失败

身份验证漏洞允许未经授权的用户访问API。当API在授予用户访问权限之前没有正确验证用户身份时,或者当它使用弱的或容易被破坏的身份验证方法时,就会发生这种情况。破坏身份验证攻击的典型解剖是中间人(MITM)攻击,该攻击涉及攻击者秘密中继、拦截或更改双方之间的通信,包括API消息,以获取敏感信息。例如,犯罪者可以充当在HTTP头中发布会话令牌的API和用户浏览器之间的中间人。拦截该会话令牌将授予对用户帐户的访问权限,其中可能包括个人详细信息,如信用卡信息和登录凭据。
要解决用户身份验证失败的问题,请执行以下操作:
•使用强大且安全的身份验证方法:API应使用强大且可靠的身份验证方式,如哈希和加盐密码或双因素身份验证。
•实施正确的密码策略:API应实施强有力的密码策略,例如要求使用长而复杂的密码,以降低密码相关漏洞的风险。
•监控失败的登录尝试:API应该有登录功能来监控失败的登陆尝试,使公司能够识别和应对潜在的安全威胁。

3) 数据过度暴露

开发人员经常通过API公开比必要的数据更多的数据。当API不能正确控制对数据的访问时,或者当它返回的数据超过响应请求所需的数据时,就会发生这种情况。过度数据暴露的利用很简单,通常通过嗅探流量来分析API响应,寻找不应返回给用户的敏感数据暴露。
过度的数据暴露会造成安全风险,因为它会向未经授权的用户泄露敏感或机密数据。它还可能产生性能问题,因为返回不必要的数据可能会增加API响应的大小并降低API的速度。

为了解决数据过度暴露的问题:
•审查并限制通过API公开的数据:API应仅公开满足其客户要求所需的最小数据量。了解向外部世界公开的数据的性质,以及这些敏感数据类型与入站API调用的关联。这允许在敏感数据暴露时以及在什么情况下检测敏感数据。全栈Web应用程序和API保护(WAAP)解决方案能够识别和分类敏感数据。
•使用选择性数据公开:API应仅公开其客户端请求的特定数据,而不是返回与特定资源相关的所有数据。
•维持API库存:对内部和外部API进行连续库存。此外,通过库存中的API定期发现敏感数据。
•对数据进行分类:添加自定义数据标签,以指示对您的组织至关重要或敏感的API属性。

4) 缺乏资源和利率限制

这是指在给定的时间段内,对可以向API发出的请求数量缺乏控制。攻击者可以向API发出大量请求,从而可能导致拒绝服务(DoS)攻击或其他类型的滥用。

为确保充足的资源和限速:

•检查现有的资源和速率限制控制:API应制定控制措施,以限制在给定时间段内可以向其发出的请求数量。评估这些限制,以确定它们是否合适。
•设置适当的限制:设置与预期使用模式相匹配的通话和音量限制。例如,如果API旨在供少数用户使用,则可以将限制设置得相对较低。如果API旨在供大量用户使用,则需要将限制设置得更高。此外,考虑使用先进的机器人保护来区分自动化和人工流量,并了解来自好机器人和坏机器人的流量比例。


5) 功能级别授权中断

这允许未经授权的用户执行他们不应该访问的操作。当API在允许用户执行特定操作之前没有正确检查用户的权限时,可能会发生功能级授权中断。
例如,考虑一个允许用户创建和删除帐户的API。如果API在允许用户删除帐户之前没有正确检查用户的权限,未经授权的用户可能会删除他们选择的任何帐户。
为了解决这个问题:
•实施授权政策:确保组织有一个明确界定的政策,概述谁可以执行每个职能。
•定期审查和测试授权系统:确保其正常运行,并检查所有相关权限。

6) 批量分配

大量分配使攻击者能够修改API请求中的多个参数,从而可能使他们获得未经授权的访问权限或执行意外操作。当API未正确验证或筛选输入数据,并允许攻击者修改请求正文或查询字符串中的参数时,可能会发生这种情况。
要解决大规模分配漏洞:
•实施输入验证和过滤:确保API格式正确,并在处理前满足某些要求。
•使用强数据类型:对于用户不打算修改的参数,API应使用强的数据类型,如整数或布尔值。
•使用白名单:这些白名单应指定请求中允许的参数,而不是使用黑名单指定不允许的参数。

7) 安全配置错误

安全配置错误问题通常涉及暴露敏感数据或无法保护访问的不安全配置和默认值:
•定期进行安全审计:这些审计有助于识别配置错误问题和缺失的补丁和更新。
•使用安全配置:API应避免使用默认配置,例如启用调试模式。
•评估:使用扫描仪和手动审查来测试整个堆栈,并识别安全配置错误。
•防止数据泄露:避免在错误消息中包含敏感信息

8) 注射缺陷

这些漏洞使攻击者能够向API发送恶意数据,然后由API或底层系统作为命令执行。示例包括SQL注入,其中攻击者将恶意SQL代码注入API;以及命令注入,其中,攻击者将恶意shell命令注入API。
解决注射缺陷:
•验证和过滤输入数据:在处理之前,确保所有数据格式正确并符合某些要求。
•使用参数化查询:当与数据库交互时,API应使用参数化的查询,而不是动态构建查询。
•转义输入数据中的特殊字符:这可以防止它们被解释为命令的一部分。

9) 资产管理不当

资产管理不当是指未能正确管理和维护组织的资产,包括暴露的端点。
改善资产管理:
•维护资产库存:保持通过API公开的资源和功能的最新库存。
•实施端点管理:正确管理API的端点,包括保持它们的最新性和适当的安全性。

10) 记录和监控不足

缺乏对API活动的适当监控和日志记录可能会使安全事件的检测和响应变得困难。因此,攻击者可以在不被检测到的情况下执行恶意操作。
为了避免这种风险:
•确保适当的日志记录到位:日志应记录重要事件,如登录尝试失败、未经授权访问资源以及其他与安全相关的活动。
•监控日志数据:使用常规流程审查和分析日志数据,以识别潜在的安全事件。
•设置警报:配置警报,以便在检测到潜在安全事件时通知相关人员。
•定期进行安全审计:识别日志和监控系统可能遗漏的安全问题。

11) 其他威胁

以下威胁不包括在OWASP Top 10中,但仍然是一个需要注意的重大风险。
分布式拒绝服务(DDoS)
在分布式拒绝服务(DDoS)攻击中,多个系统会淹没目标系统的带宽或资源,通常是一个或多个web服务器。对web API的DDoS攻击试图通过并发连接淹没其内存和容量,或通过在每个请求中发送/请求大量信息来淹没其内存或容量。
例如,2017年初对FCC网站的DDoS攻击使用商业云服务向评论系统发出大量API请求。这消耗了可用的机器资源,挤出了人类评论者,最终导致网站崩溃。

12) 坏机器人

API是僵尸网络运营商的成熟目标,因为它们提供了一条直接访问敏感数据的路径,这些数据可以在暗网上被抓取、共享或出售。
针对API的自动攻击可能很难预防,因为机器人旨在模仿合法的人类行为以逃避检测。与其他类型的攻击不同,僵尸网络全天候运行,旨在执行人类更难维护的重复任务。
组织难以确保其API的安全性,因为它们依赖于简单的身份验证令牌或基本的IP速率限制。与通过多因素身份验证对人类用户进行身份验证不同,API令牌通常是对API调用进行身份验证的单一因素。随着攻击变得越来越复杂,将机器人程序检测和API安全相结合,可以将机器人程序与人类用户和机器人程序区分开来,并降低自动欺诈的可能性。

猜你喜欢