借助关键工具和API安全最佳实践防范API攻击

NGINX | 2023年7月18日

近年来,API的广泛应用显著改变了企业的运营方式。API支持不同应用程序相互通信和交换数据,从而提高业务流程和软件开发的效率与成效。

然而,随着API使用量增加,API蔓延风险也随之而来。在这种情况下,API由分散的团队在分布式架构中创建和部署,往往缺乏适当的监督和管理。这可能给企业带来一系列新的安全风险,因为每个API都可能成为攻击者未经授权访问敏感数据和系统的入口。

API优先软件开发的兴起

API蔓延的主要驱动因素之一是微服务的激增。微服务架构将大型应用拆分为多个较小的独立应用,这些应用通过API相互通信。这样,复杂应用便可拆分为多个独立部分,由不同团队分别管理,并可根据流量需求独立扩展。

微服务为开发人员带来诸多优势,包括更高的灵活性和可扩展性。但这些优势也伴随着取舍,例如复杂性增加。因此,许多企业采用API 优先的微服务构建方法。在这种策略中,应用和服务的设计流程从 API 契约开始。该契约说明 API 的工作方式,包括请求和响应的格式。

将安全性融入API全生命周期

随着API激增,攻击面不断扩大

如果不重视API安全,尤其是在设计和部署阶段,API优先的软件开发优势很容易被削弱。从最基本的层面来看,API越多,攻击面就越大。API在现代软件开发中发挥着至关重要的作用,但与此同时,也越来越容易被利用。

2018年,Gartner预测,到2022年,API将成为针对应用最常见的攻击途径。事实上,该预测认为这一趋势要到数年后才会出现,未免过于乐观。当时,大型企业已经发生了影响数百万用户的重大API数据泄露事件,此后此类事件愈发常见:

  • 2018年,Facebook报告称,至少有5,000万用户的数据面临风险。此前,攻击者利用该公司的开发者API,获取了与用户个人资料页面关联的个人身份信息(PII),包括姓名、性别和家乡。
  • 2019年,LinkedIn报告称,一名黑客利用API,通过数据抓取技术收集了超过7亿用户的信息,并将这些信息发布到暗网上出售。
  • 2021年,Peloton维护的一个API允许恶意行为者请求获取个人身份信息(PII),包括年龄、性别、所在城市、体重和出生日期。
  • 2022年,Twitter处理了一起API泄露事件,该事件导致540万个用户账户的数据遭到泄露,其中包括电话号码和电子邮件地址。
  • 2023年,T-Mobile报告称,一起API泄露事件导致3,700万客户的数据被盗,其中包括姓名、电子邮件地址、住址、电话号码、出生日期等信息。

这些攻击范围广、类型多,凸显了安全和工程负责人面临的挑战。有些攻击会利用因配置不当而暴露在互联网上的API;有些攻击会使用因配置不当而暴露在代码存储库中的API密钥或其他身份验证方法;还有一些攻击者会利用VPN漏洞进入内部环境,并通过内部API窃取数据。

抵御API攻击需要正确的策略和工具

防范API威胁最常见的方法,是将传统Web应用安全策略与现代API安全技术相结合。面对当今多样化的API威胁,传统策略往往力有不逮。自动化API发现和API对比测试等现代技术旨在弥补这些不足。

企业必须兼顾右侧防护(实施全局控制和安全策略,保护已部署的应用和API)与左移安全(将安全机制融入代码,在应用和API投入生产前消除漏洞)。这两种策略都无法单独提供全面的API安全防护,因此,防止安全事件的关键在于采用涵盖以下三类API安全实践的整体方法:

  • API安全态势管理:提供对一组API安全状态的可见性,包括暴露的数据类型和请求方法
  • API安全测试,在API生命周期的关键节点评估其安全性,以识别潜在漏洞
  • API运行时保护,在API运行期间检测并阻止恶意请求到达API

端到端API安全

通过结合适当的策略和工具,组织可以更有效地保护API免受攻击,并保障软件系统的安全。下面介绍平台工程负责人为保护API全生命周期而需要实施的重要功能和工具。

什么是API安全态势管理?

API安全态势管理可帮助您了解API的数量、类型、位置及其暴露的数据。这些信息有助于您了解每个API的相关风险,从而采取适当措施加以保护。

主要功能:

  • 自动化API发现,自动持续发现API,全面了解环境中部署的API
  • API特征分析,按协议或架构(REST、GraphQL、SOAP等)识别 API 并进行分类,同时绘制敏感数据流图,以了解风险敞口
  • API编目:维护完整的API清单,鼓励软件团队复用现有API,并帮助安全运营团队全面了解贵组织的安全态势

代表性技术:

  • Web application and API protection(WAAP),利用在全球API基础设施中的独特优势,分析进出各环境的流量、识别API,并全面了解面临的风险
  • 内联或基于代理的发现,将代理附加到现有API网关、负载均衡器或Kubernetes Ingress控制器,以镜像并分析API流量
  • 带外或无代理发现,使用流量镜像或导出的日志和指标来分析API流量;与其他技术相比,通常对API和威胁的可见性较低
  • 域名爬虫:API安全提供商可能会提供爬虫,用于探测域名中暴露的API端点。这些端点会使流量绕过可实施安全策略的API网关和负载均衡器。

请务必注意,没有任何技术能够可靠地发现架构中的每个API。大多数发现技术依赖现有负载均衡器、API网关和Ingress控制器提供的可见性,因此不太可能发现绕过这些架构组件的错误配置。

归根结底,代码审查和遵循API优先的最佳实践能够更有效地实现长期预防。不过,自动化API发现工具仍有助于快速了解安全状况,并发现那些原本可能处于无人管理且未受保护状态的API。

什么是API安全测试?

API安全态势管理关注企业范围内的安全,而API安全测试则主要针对单个API。最基本的API安全测试通过测试API运行时(即API背后运行的应用程序),帮助识别和防范漏洞及其相关风险。它有助于确保满足基本安全要求,包括身份验证、授权、速率限制和加密方面的要求。

主要功能:

  • API契约测试,利用API的OpenAPI规范,通过比较客户端请求和服务器响应,验证API是否按设计运行。该测试采用“由内而外”的方法,在API部署前发现其是否存在漏洞。
  • 动态应用安全测试(DAST),模拟针对API运行时的攻击以发现漏洞,并像恶意用户一样从“外到内”评估API。

代表性技术:

  • API契约测试软件,用于运行测试的专用工具,可对API请求和响应进行分段,以验证客户端和服务器行为是否符合API契约
  • 应用安全测试(AST)软件:通过模拟攻击来分析和测试应用(包括API)的工具

市场上既有开源的契约测试工具,也有专业API安全厂商提供的商业产品。应用安全测试(AST)市场已有数十年历史,越来越多的厂商开始提供专门用于API的扫描和测试工具。

什么是API运行时保护?

API运行时保护是指在API运行和处理请求时对其进行保护。它强调将安全机制融入平台基础设施和API自身的代码中,旨在识别并阻止部署后出现的恶意API请求。
主要功能:

  • 访问控制:实施身份验证(authN)和授权(authZ)策略
  • Network security,对整个网络中的通信进行加密和保护
  • 应用保护:保护API运行时免受恶意API请求和攻击
  • 实时监控:直观呈现、追踪并缓解整个API基础设施中的攻击

代表性技术:

  • API网关:应用并实施安全策略,包括身份验证、授权、速率限制、访问控制列表和加密
  • Web应用防火墙 (WAF),通过基于攻击特征主动监控和过滤流量,保护API和应用免受复杂的第7层攻击
  • 身份提供商 (IdP),一种存储并验证用户身份的服务,通常与单点登录(SSO)提供商配合使用,以对用户进行身份验证

并非所有API网关和WAF/WAAP都具备同等能力。某些服务,尤其是云平台及其他平台提供的原生解决方案,缺乏多云和混合架构所需的全局可见性和标准化能力。

API安全最佳实践

鉴于保护API的重要性,必须有条不紊地开展API安全工作。平台工程和安全负责人必须协同应对API全生命周期中的安全要求。如前所述,这大致对应三个主要实践领域:API安全态势管理、API安全测试和API运行时保护。换言之,需要重点掌握API的数量、如何测试API中的错误,以及如何将安全机制融入代码。

API安全最佳实践列表

结论

与所有网络安全工作一样,API安全是一个持续推进的过程,需要网络工程师、安全运营负责人、平台工程负责人和软件开发工程师等众多利益相关方协作。好消息是,保护API并非无章可循。

大多数组织已采取措施,应对跨站脚本、注入、分布式拒绝服务等可能以API为目标的常见攻击。经验丰富的安全专业人员可能也十分熟悉上述许多最佳实践。无论贵组织运营多少个API,目标都是制定可靠的API安全策略,并持续主动地加以管理。

开始免费试用NGINX API Connectivity Stack 30天,其中包括用于管理、治理和保护API的F5 NGINX Management Suite API Connectivity Manager、用作API网关的F5 NGINX Plus,以及提供高级API安全防护的F5 NGINX App Protect WAF and DoS。

其他资源


分享

相关博客文章

NGINX Plus R26 正式发布
NGINX | 2022/02/15

NGINX Plus R26 正式发布

NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
NGINX | 2022/02/10

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击

gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
NGINX | 2021/09/13

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划

了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。

NGINX Plus R19 正式发布
NGINX | 2019/09/03

NGINX Plus R19 正式发布

NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。

NGINX现已正式加入F5
NGINX | 2019/05/09

NGINX现已正式加入F5

NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

使用NGINX和NGINX Plus实现高性能缓存
NGINX | 2016/08/24

使用NGINX和NGINX Plus实现高性能缓存

我将介绍NGINX在内容缓存和性能方面的工作原理,并分享一些控制NGINX内容缓存方式的技巧。