API 安全策略和基础指南
API 是当今数字创新计划的核心,已成为应用程序的头号攻击载体。了解什么是 API 安全、为什么它如此重要,以及如何保护您的 API 免受现代威胁至关重要。
什么是 API 安全?
应用程序编程接口(API)是现代应用程序的基石。可以将其视为通往数字世界的匝道。它们使每个人都能连接到重要数据和服务,实现各种关键业务操作,并使数字化转型成为可能。
随着应用程序接口(API)数量的持续增长,以及世界各地的组织越来越依赖它们来交付关键业务计划,它们已成为攻击者的主要目标。我们的《2023 年第一季度 API 安全状况报告》显示,独特的攻击者在六个月内增长了 400%。然而,仍有 30% 的受访者没有制定 API 安全战略。
开放式网络应用程序安全项目(OWASP)将 API 安全定义为:重点关注了解和减轻 API 独特漏洞和安全风险的策略和解决方案。
请继续阅读,了解 API 安全为何已成为当今企业的重要关注点,以及它与应用程序安全有何不同。
API 安全为何重要?
API 已成为网络犯罪分子的主要攻击载体,不良分子意识到,将连接当今数字服务和敏感数据的 API 作为攻击目标是多么有利可图。事实上,根据《2023 年第一季度 API 安全状况报告》(State of API Security Report Q1 2023),在过去一年中,94% 的公司在生产 API 中遇到过 API 安全问题。2017 年,分析公司 Gartner 预测,到 2022 年,API 将成为网络犯罪分子的主要攻击载体,事实证明他们的预测是正确的。近年来,API 攻击成为世界各地的头条新闻,Gartner 已将 API 安全纳入其 2022 年安全参考架构,认识到需要专用的 API 安全工具和方法。
对于当今企业的高级官员来说,API 安全的至关重要性也变得越来越明显。事实上,在我们的 API 安全现状调查中,近一半(48%)的受访者表示 API 安全现已成为 C 级讨论的话题。独立研究公司 Global Surveyz 代表 Salt Security 开展的一项全球调查的结果也证实了这一结论,全球大多数 CISO(78%)表示,与两年前相比,API 安全是当今更优先考虑的问题,95% 的 CISO 表示,API 安全将是未来两年的首要任务。
尽管 API 网关和 Web 应用程序防火墙 (WAF) 等传统安全措施可以为企业的安全堆栈增添价值,但它们跟不上当今日益复杂的 API 攻击方法。事实上,它们无法阻止攻击者窃取敏感数据、影响用户体验或造成其他破坏。要预防和减轻 API 攻击,您需要专门针对 API 而设计的安全策略和技术。
攻击方式已发生变化,而且很容易被忽略
针对应用程序接口的恶意攻击者已经超越了传统的 “一劳永逸 “攻击,如 SQLi 和 XSS。他们现在的重点是寻找 API 业务逻辑中的漏洞。您的 API 是独一无二的,因此攻击也必须是独一无二的。攻击者需要花费几天、几周甚至几个月的时间来探测和学习 API,他们使用的是传统安全工具无法察觉的 “低慢 “技术。
不同类型的 API 安全:从 REST API 到 SOAP 和 GraphQL
REST API 安全性、SOAP 安全性和 GraphQL 安全性在确保 API 和网络应用程序的保护方面都发挥着重要作用。每种技术都有不同的安全方法,需要考虑特定的安全因素。
REST API 安全
REST 是 “表征状态传输”(Representational State Transfer)的缩写,是网络服务中常用的一种架构风格。它依赖于 GET、POST、PUT、DELETE 等标准 HTTP 方法,并使用 URL 来标识资源。 REST API 有其独特的安全考虑因素,例如:
身份验证机制–REST API 通常使用 API 密钥、OAuth 标记或 JSON Web 标记 (JWT) 等身份验证机制来验证客户身份并授予对资源的访问权限。
授权机制:用户通过身份验证后,REST API 会使用授权机制来控制他们可以访问哪些资源。
速率限制:实施速率限制,限制客户端在一定时间内的请求次数,防止滥用和 DoS 攻击。
输入验证:必须采用这种方法来防止常见的安全漏洞,如 SQL 注入和跨站脚本 (XSS) 攻击。
HTTPS 加密:对客户端和服务器之间传输的数据进行加密对 REST API 至关重要。HTTPS 加密用于防止未经授权的拦截。
跨源资源共享(CORS):REST 架构中必须使用 CORS 标头,以控制哪些域可以访问手头的 API。
要有效保护 REST API,除了其他 REST API 安全最佳实践外,还必须考虑到所有这些方面。
SOAP 安全
SOAP(简单对象访问协议)是一种用于在网络服务中交换信息的协议。它通常使用 XML 并依赖于其他网络协议,如 HTTP、SMTP 和 TCP。SOAP 还有一些重要的安全考虑因素:
敏感数据加密:SOAP 信息中的敏感数据应加密,以确保传输过程中的保密性。
XML 验证:根据预定义模式验证 XML 有助于防止 XML 注入和相关攻击。
WS-security 标准:SOAP 为确保信息安全提供了这一安全标准,其中包括信息完整性、保密性、身份验证和授权等功能。
HTTPS 安全:与 REST API 类似,SOAP 信息也应通过 HTTPS 加密传输,以确保传输数据的安全。
数字签名:应尽可能使用数字签名来评估 SOAP 消息的完整性和合法性。
GraphQL 安全性
GraphQL 是一种用于 API 的查询语言,也是一种用于通过后端系统执行这些查询的运行时。与为不同资源提供多个 API 端点的 REST 不同,GraphQL 使用单个端点进行所有查询。以下是 GraphQL 最重要的安全注意事项:
身份验证和授权:GraphQL API 必须实施身份验证和授权机制,以控制对各种查询和突变的访问。近年来,已知有恶意行为者成功利用 GraphQL 授权漏洞实施 API 攻击。
速率限制:应用速率限制对于控制客户端在给定时间内可执行的 GraphQL 查询次数至关重要。
输入验证:对 GraphQL 中的用户输入进行验证和消毒有助于防止常见的安全漏洞。
查询深度限制:必须对 GraphQL 查询的深度设置限制,以防止可能导致拒绝服务 (DoS) 攻击的复杂和资源密集型查询。
归根结底,无论是 REST、SOAP 还是 GraphQL,任何 API 的安全性都取决于最佳实践的组合,其中包括身份验证和授权机制、数据验证以及安全通信协议的使用。一个涵盖发现、运行时保护和左移实践的强大 API 安全战略对于保护 API 不受新出现的威胁至关重要。
Salt—完整的应用程序接口安全,提供全面保护
最常见的 API 攻击类型有哪些?
要想有效保护 API,首先要了解当今的攻击为何与众不同。当今最常见的 API 攻击可分为四类:
缺乏可见性和治理
在这类攻击中,攻击者利用的 API 要么是组织完全不知道的 API(影子 API 或僵尸 API),要么是安全状况不可见的 API(如未托管 API 或第三方 API)。
滥用和误用应用程序接口
要实施这种类型的攻击,不良行为者会完全按照设计使用 API,但会利用设计或开发缺陷,以非预期的恶意方式利用结果,造成恶意结果,如数据外渗。
利用业务逻辑缺陷
在基于业务逻辑的攻击中,黑客会长期使用侦察技术,在每个 API 的独特业务逻辑中寻找漏洞。在可能持续数天、数周甚至数月的侦察阶段,攻击者会寻找可探索的领域,如未经授权访问 API 中的数据或功能。
被盗凭证和社交工程
当不良行为者使用社交工程技术访问有权限的 API 密钥时,就会出现这类威胁。这样,他们就能窃取凭证并使用 API,就好像他们是经过认证的合法用户或管理员一样。根据《2023 年第一季度 API 安全状况报告》(State of API Security Report Q1 2023),在去年,78% 的攻击来自于看似合法的用户,但他们却恶意实现了适当的身份验证。
OWASP API 安全十佳
为了帮助 API 安全行业更深入地了解最常见的 API 攻击,开放式 Web 应用程序安全项目(OWASP)首次发布了 2019 年 API 安全十大漏洞列表。该榜单在 2023 年进行了更新,列出了十个较为重要的 API 漏洞。其中,最常见的有:
API1:2023 受破坏的对象级授权
破损的对象级授权(BOLA)约占 API 攻击的 40%,是最常见的 API 威胁。
由于 API 经常暴露处理对象 ID 的端点,这就形成了一个巨大的潜在攻击面。对象级授权是一种访问控制方法,通常在代码级实施,用于验证用户访问特定对象的能力。现代应用程序使用各种复杂而普遍的授权和访问控制系统。开发人员经常忽略在访问对象前应用这些检查,即使应用程序包含了强大的授权检查基础架构。攻击者可以通过操纵在 API 请求中发送的对象 ID,轻松利用易受对象级授权漏洞影响的 API 端点。BOLA 授权漏洞可导致数据外泄以及未经授权的数据查看、修改或销毁。最终,BOLA 可导致全面账户接管 (ATO)。
API2:2023 用户身份验证中断
攻击者很容易将目标锁定在身份验证流程上,尤其是在这些流程完全暴露或可被公众访问的情况下。OWASP 报告的第二大最常见漏洞是用户身份验证漏洞,攻击者可利用凭证填充、窃取身份验证令牌和暴力破解攻击来获取对应用程序的未授权访问。这样,攻击者就能控制用户账户,非法访问其他用户的数据,并进行未经授权的交易。技术问题,如密码复杂性不足、账户锁定标准缺失、密码和证书的轮换时间过长,或将 API 密钥作为唯一的身份验证方法,都可能导致 API 的身份验证出现问题。
攻击者若能成功利用身份验证程序中的弱点,就能在未经授权的情况下访问其他用户的数据,并使用该用户的账户进行非法交易。
API3:2023 受破坏的对象属性级授权
破坏对象属性级授权合并了通过 “过度数据暴露”(之前被列为 2019 年 OWASP API 安全 Top 10 中的第 3 位)或 “大规模分配”(之前被列为 2019 年榜单中的第 6 位)未经授权访问敏感信息的攻击。这两种技术都是基于 API 端点操作来获取敏感数据。
将这一新威胁引入榜单的主要原因是,即使 API 可以执行足够的对象级授权安全措施,这可能仍然不足以保护它。通常需要对对象及其特征进行更具体的授权。还必须考虑 API 对象内部的不同访问级别,因为 API 对象通常同时具有公共属性和私有属性。
API4:2023 不受限制的资源消耗
不受限制的资源消耗漏洞取代了之前在 OWASP API 安全十大漏洞中排名第四的 “缺乏资源和速率限制 “漏洞。不过,虽然名称变了,但该漏洞总体上没有变化。
API 调用会占用网络、CPU、内存和存储等资源。用户的输入和端点的业务逻辑对满足请求所需的资源数量有重大影响。客户端或用户请求的资源大小或数量不一定受 API 的限制。这不仅有可能对 API 服务器性能造成负面影响并导致拒绝服务(DoS),而且还会使支持身份验证和数据检索的 API 容易受到暴力攻击和枚举攻击,包括令牌和凭证破解。
根据《2023 年第一季度 API 安全状况报告》(State of API Security Report Q1 2023),只有 54% 的受访者将 OWASP API 安全十大问题作为其安全计划的优先考虑事项,尽管 62% 的针对组织的未遂攻击至少利用了其中一种方法。
API 安全性有何不同?
传统的安全解决方案(包括 WAF、API 网关、API 管理工具以及身份和访问管理 (IAM) 工具)并不是为防止对 API 的攻击而设计的。这是因为 API 的安全防护面临着独特的挑战:
API 无序扩张:不断变化的环境
随着当今的 DevOps 团队不断开发和更改 API,API 所面临的威胁类型也发生了变化。过去,基于事务的攻击(如 SQL 注入和其他代码执行方法)是最普遍的攻击手段,但如今的攻击通常旨在利用每个 API 背后的底层应用程序和业务逻辑。有 37% 的公司每周更新一次 API,指望开发团队在部署新的或更新的 API 之前发现每一个可能的 API 漏洞是不现实的。
低速和慢速 API 攻击:侦察的力量
SQL 注入或跨站脚本等传统攻击仍在发生,但当今最成功的基于应用程序逻辑的 API 攻击并不遵循那些利用已知漏洞的 “一劳永逸 “机制。由于每个 API 端点都是不同的,而且每次攻击很少源于单个 API 调用,因此每次 API 攻击本质上都是零日攻击,传统工具无法通过基于规则和签名的方法检测到它们。不良分子的侦查活动需要时间。他们可能需要数周甚至数月的时间来寻找数据、查找漏洞并诱导异常行为,从而找到破坏供应链或从 API 中渗出数据的微妙方法。
Shift-Left Tactics 缺点和运行时保护的必要性
一直以来,企业在部署应用程序之前都依赖测试来发现安全漏洞。然而,敏捷开发方法的广泛采用和 API 过度扩展的问题使得对每一个 API 漏洞进行测试变得根本不可能。虽然标准的生产前测试可以发现 API 安全最佳实践中的一些漏洞,但却无法发现源于 API 业务逻辑漏洞的漏洞,而这些漏洞恰恰是当今攻击者想要利用的。此外,指望任何开发人员每次都能编写出完全安全的代码是不现实的,因此检测和阻止 API 威胁的唯一方法就是实施运行时保护。
哪些 API 安全最佳实践可用于预防和缓解当今的攻击?
API 的保护具有挑战性。传统解决方案无法处理 API 生态系统的复杂性。攻击者深知这一点,因此他们将重点放在 API 上。
以下最佳实践可以帮助您改善 API 的安全状况:
开发与测试
促进安全的应用程序接口设计和开发:为构建和集成 API 创建安全的编码和配置实践。OWASP 应用程序安全验证标准 (ASVS) 是一个很好的资源。
减少敏感数据的暴露:避免向客户端应用程序发送过多数据,然后依赖客户端应用程序过滤数据。
进行设计审查:确保将业务逻辑纳入设计审查。
记录您的应用程序接口:文档有助于人们了解 API 是如何构建或集成的。设计审查、安全测试和保护尤其需要文档。
使用机器文档格式:使用 OpenAPI Specification (OAS) 等机器格式。然后,您就可以使用这些规范进行基本测试和保护。
维护准确的 API 清单:通过最新的清单,让您的安全团队真实地了解攻击面。捕获此信息的最佳方法是使用自动 API 发现,其中包括 REST、GraphQL 和其他 API 格式。
进行安全测试:使用安全测试工具识别 API 中的配置问题或漏洞。扫描仪不擅长解析业务逻辑,因此您应该分析 API 并在运行时进行模糊测试,以识别可利用的代码。
生产
打开日志记录和监控:遥测数据可帮助您检测攻击、应对事件并在运行时保护 API。将数据作为正常行为的基线。这样,任何异常事件都能被快速识别和解决。
调解 API:使用 API 网关等调解工具来提高可视性和安全性。使用 API 安全解决方案扩展这些平台的功能,从而提供有关 API 的更深入的上下文。
识别 API 漂移:确保有一个计划来确定 API 何时发生变化。同样,能够将文档与 API 的运行时行为进行比较的自动化平台将有助于识别这些差距。然后更新相应的文档。
使用正确的网络安全控制:一些网络控制措施有助于提高 API 的安全性。例如,对 API 发送的数据进行加密。您还可以使用动态速率限制和 IP 地址允许和拒绝列表(假设 API 用户数量较少)。
持续验证和授权:将访问控制和身份存储置于外部。这一步包括 API 网关、身份存储、IAM、密钥管理、公钥基础架构和机密管理。避免使用 API 密钥进行身份验证。
部署运行时保护:确保运行时保护能够识别 API 基础架构中的配置问题。它还应检测行为异常,如凭据填充、暴力逼迫或刮擦尝试。
有哪些方法和工具可用于保护 API?
对应用程序接口的最佳保护是一个从一开始就考虑到应用程序接口安全性的专用平台。正确的 API 安全平台应自动
发现所有新的和已更改的 API,以及它们暴露的任何敏感数据。
在侦查阶段检测并阻止对 API 的攻击。
通过向开发团队提供可行的见解,尽可能在构建阶段消除漏洞。
为整个应用程序接口生命周期提供保护:
完整的 API 安全解决方案应该能够收集、存储和分析数百万用户和 API 调用中的数百个属性,更重要的是,能够利用人工智能(AI)和机器学习(ML)对其进行长期关联。要获得这种广度的背景信息,需要云规模的大数据,因为基于服务器或虚拟机的方法随着时间的推移不会有足够广泛的数据集来识别当今复杂、低速和缓慢的 API 攻击。只有具备了这种自适应智能和深度上下文,您才能拥有保护所有 API 所需的能力。
原文链接:API Security 101: API Security Strategy and Fundamentals Guide
版权声明: 本文为 InfoQ 作者【幂简集成】的原创文章。
原文链接:【http://xie.infoq.cn/article/fb0ed41639922d2aa90befb97】。文章转载请联系作者。
评论