预测下一个 OWASP API安全 Top 10

首页 / 业界 / 资讯 /  正文
来源:安全419
发布于:2021-11-04
众所周知,API(应用程序编程接口)的安全风险在近两年发生了巨大变化。网络安全厂商Cequence Security的Jason Kent讨论了当今最主要的API安全问题以及如何解决这些问题。

“作为OWASP的长期成员和应用程序安全从业者,我想分享我对OWASP Web App Top 10 清单可能如何影响或影响API安全Top 10的更新的想法。”

这些清单列表涵盖了引发安全事件的最常见原因。Web App Top 10最近进行了更新,以反映不断变化的应用程序和威胁形势。以目前的形式,API安全Top 10与2017年Web App Top 10大约有60%的重叠。考虑到API的使用才刚刚开始激增,这在当时是有意义的,并且确实需要指导如何最好地解决API的安全需求。

自API 安全Top 10发布以来,API的使用和相关的安全问题都发生了变化。即便如此,从API 安全Top 10和新的 Web App Top 10中还是可以得出许多相似之处:


Jason Kent表示,下一个API安全Top 10列表中,我希望命名法保持一致,但由于API和 Web 应用程序之间的明显差异,我不期望有类似的定位。我预计与新的 Web App列表会有一些重叠,但会有一些特定于API安全威胁——可能是这样的:


让我们来看看对未来列表的预测。

API1和API2:标识和身份认证失败以及访问控制中断

API身份验证和授权错误相关的安全事件几乎与安全错误配置一样常见,这就证明了将其置于列表的首位是合理的(并且对错误配置排名第5位提出了质疑))。组织需要密切地关注他们设计和实施API的方式,可能使用安全规范来监视缺少的端点身份验证、授权和管理功能。

API3:加密失败

加密失败一直困扰着 Web 应用程序。在早期,开发人员拒绝进行可能需要用户升级的更改。因此,将强加密作为应用程序或API的要求是不受欢迎的。但现在,强制升级以改善数据保护并可能防止信用违约成为常态,开发人员可能会失去一两个客户,但它不会担心因为泄露的数据交换和糟糕的加密而发布有关信用卡违规的消息。同样地,使用API的应用程序现在可以包含证书和强大的加密算法。

API4:缺乏资源和速率限制

此威胁在列表中排名较高,因为API使合法或恶意流量峰值更容易发生。今年,我们看到针对API的恶意流量峰值增加了30倍。如果不实行速率限制,这将是一场灾难。组织需要更加努力地对API实施速率限制,因为它不仅有助于抵御恶意攻击,还有助于控制基础设施成本超支。

API5:安全配置错误

安全配置错误的API是我们在客户群中看到的常见错误。意外的端点,或者那些没有身份验证或授权标志的端点,只是我们看到的几个错误的例子。造成这种频率的原因是,API安全性错误配置是大多数组织无法检测到的。要想把这条从列表中删除,组织需要了解和测试他们的API功能,不仅仅是渗透测试,而是真正的功能测试。

API6:不安全的设计

随着“安全左移”和 DevSecOps的广泛采用,API变得更加基础。理解架构,特别是API各个部分的安全性是至关重要的。当应用程序在内部、外部或从第三方使用或发送数据时,所有将访问或移动该数据的实例都需要安全设计。这只是一个很小的例子,当需要架构时,还需要考虑登录、会话管理、授权等方面的考虑。

API7:注入

注入在此列表中排名靠后,而在新的AppSec Top 10中排名是很高的,因为Web应用程序是通过Web浏览器查看的,并且需要JavaScript来呈现页面的部分部分。这可能会导致跨站脚本攻击 (XSS),随后通常会针对后端数据库进行SQL注入。API通常不需要浏览器,因此注入是可能的,但可能性较小。API注入通常只发生在某人对应用程序有深入了解并试图打破另一种机制时才会发生。

API8:资产管理不当

API资产管理从一个良好的清单开始,并随着元素的添加和删除而更新。大多数组织都在为他们的应用程序清单而苦恼,很少有人准确掌握他们拥有的API数量及其所有相关组件。API 可见性和资产管理应该是所有 API 安全计划的基石。

API9:日志记录和监控不足

每当发出“发生了什么?”的疑问,只能通过找出可用的日志来得出答案。没有日志,很难确定根本原因。如果没有监控,很可能没有人会问“发生了什么?”,因为违规行为仍然会发生。日志记录和监控成本低廉,易于实施,并且经常需要进行故障排除。我希望能在下一轮的榜单中看到该风险从名单上掉下来。

API10:数据完整性失败

对于任何围绕API中的数据完整性的事情来说,这最终有点笼统。这可能是第三方库或其他存在缺陷的依赖项。这可能是持续集成和交付 (CI/CD) 管道未确认源,或添加了在某种程度上易受攻击的源。这些类型的故障越来越突出,但是代码完整性的概念变得越来越重要。我们有机会扭转这一趋势。