paint-brush
僵尸 API 问题日益严重,攻击面不断扩大经过@dejenerate
2,043 讀數
2,043 讀數

僵尸 API 问题日益严重,攻击面不断扩大

经过 Jennifer7m2024/06/01
Read on Terminal Reader

太長; 讀書

僵尸 API 是一种被遗忘和忽视的基础设施,但仍可供使用。黑客可以通过逆向工程代码、查看开源存储库或通过“模糊测试”找到端点。如果没有监控,攻击者可以不受限制或速率限制地检索数月的数据。
featured image - 僵尸 API 问题日益严重,攻击面不断扩大
Jennifer HackerNoon profile picture
0-item

向客户提供 API 可以增加您的收入,但同时也会扩大您的攻击面。企业可以提供可嵌入第三方应用程序的 API,以简化开发。例如,将社交媒体嵌入应用程序可让客户讨论产品,而无需给您的开发团队增加大量开销。社交媒体公司获得了流量和知名度,而客户则在向其应用程序添加功能的同时获得了开发便利。


尽管 API 对营销和收入有好处,但添加 API 和端点会扩大您的攻击面。拥有 API 是一种可以管理的额外风险,但所有端点都应受到严格监控和保护。大多数管理员都同意必须监控 API,但在快节奏的业务环境中,如果有大量更新和部署,可能会发现自己无法跟踪 API,并在不知不觉中增加了一种称为“僵尸 API”的网络安全风险。

什么是僵尸 API?

僵尸 API(从根本上讲)是一种被遗忘和忽视的基础设施,它仍然可以使用,但组织不知道它的存在。僵尸 API 可以在小型或大型环境中创建,但它们通常是在 IT 资源构建时没有严格配置和文档程序的环境中创建的。变更控制有助于避免僵尸 API 的情况,但也可能发生为修复特定严重错误而执行的紧急部署或配置。


在自动化环境中,云资源通常与应用程序代码一起部署。这样做的好处是开发人员和运营人员不再需要记住部署硬件并手动配置。软件部署自动化可以减少基于错误配置的事故,或避免开发人员忘记包含配置资源以支持其应用程序的请求。


在某些环境中,开发人员可以访问自己的测试服务器。这些服务器可能在公共互联网上可用,以便开发人员可以测试新代码。API 测试服务器可能在公共互联网上可用,开发人员可能认为如果不发布它就不会被检测到。


僵尸 API 的创建方式多种多样,甚至有自己的极端情况,即使采用最严格的变更控制程序也是如此。无论是由于错误还是误导而发生,僵尸 API 都是影子IT这对数据保护来说尤其危险。如果没有监控,攻击者可以不受限制或速率限制地检索数月的数据。任何对漏洞的探测或利用都不会被记录,因此典型的网络安全分析不会通知管理员异常流量。

黑客如何找到僵尸 API?

正如可以根据情况创建僵尸 API 的多种方式一样,查找僵尸 API 的方法也一样。黑客可以通过逆向工程代码、查看开源存储库或通过称为“模糊测试”的概念来找到端点。模糊测试是一种发现,其中编写脚本以针对常见 API 端点名称发出请求。例如,用于身份验证的 API 端点通常具有名为“/login”或“/authenticate”或类似名称的端点。针对您的基础设施向不同的常见端点名称发出请求以发现端点。


从开源存储库中发现漏洞很常见。开源存储库也容易泄露机密,这意味着开发人员可能会忘记删除对私钥、身份验证凭据和其他私有数据的引用。API 端点的引用也可供发现,并将被探测是否存在漏洞。如果您的组织不知道代码中引用的端点,那么它们可能会在没有任何缓解或速率限制的情况下被探测。


僵尸 API 并不总是容易受到漏洞攻击。例如,利用 SQL 注入漏洞可能会导致敏感信息的数据泄露,但某些端点经过适当编码,具有抵御威胁的能力。在僵尸 API 情况下,API 可能正常运行,但可以毫无限制地用于收集数据。端点可能存在可被利用的业务逻辑错误,但如果不进行监控,任何可疑活动都无法被发现。

僵尸 API 造成的真实数据泄露

一个很好的例子就是一个正常运行但被用来悄悄枚举数据的 API,即JustDial 事件。JustDial 是印度大型本地目录之一,拥有超过 1 亿用户。2019 年,一位安全研究人员发现 JustDial 有一个僵尸 API 向公共互联网开放,且未实施任何监控。该 API 向向端点发出请求的任何人返回姓名、电子邮件、手机号码、地址和性别等信息。无需身份验证,JustDial 也没有监控以发现该事件。


在一名安全研究人员检测到僵尸 API 后,JustDial 声称已经修复了该事件,但在 2020 年再次检测到了同样的问题。目前尚不清楚除安全研究人员之外是否有任何第三方,但由于端点向公共互联网开放且没有监控,JustDial 无法评估数据泄露的程度。


另一个例子是旧金山一家大型科技公司 Facebook,该公司以拥有市场上最优秀的开发人员而闻名。Facebook 曾出现过多个僵尸 API 实例。2016 年,开发人员部署了一个子域名 (mbasic.beta.facebook.com) 来测试其密码重置功能。该 API 的生产版本对其速率有限制,因此攻击者无法暴力破解发送给用户的六位数密码以重置密码。测试版没有此限制,因此可以在几秒钟内暴力破解六位数密码,仅受互联网连接、带宽和 API 端点的后端处理速度的限制。


2018 年,Facebook 又遭遇了僵尸 API 攻击。该漏洞出现在 Facebook 的“查看方式”功能中。该功能允许用户以其他人的视角查看自己的个人资料。该功能的 API 端点未被锁定或监控,因此攻击者可以查看其他用户的个人资料并窃取他们的访问令牌。有了访问令牌,攻击者就可以窃取用户的个人资料及其数据。Facebook 估计有 4000 万用户受到影响,9000 万用户必须重新进行身份验证以确保他们的访问令牌没有被盗。


2022 年,一家规模较小的公司因僵尸 API 而发生了重大数据泄露,其端点来自 Travis CI。Travis CI 是一家用于部署基础设施和代码的自动化供应商。Travis CI 的一个 API 端点不需要身份验证,并允许请求获取客户日志事件。更糟糕的是,日志以纯文本形式存储,因此可以不受任何限制地检索用户日志数据(包括访问密钥)。当问题被报告时,Travis CI 估计有 7.7 亿条用户日志记录(包括访问令牌、密钥和云凭证)被盗。

僵尸 API 发现

理想情况下,软件开发人员会记录对基础设施的更改,以便变更控制包括新的 API 端点。然后,运营人员可以将端点添加到监控代理,这些代理会收集数据,以便网络安全和分析监控器可以在检测到可疑活动时通知管理员。当端点未记录时,就会出现僵尸 API,因此监控代理无法感知端点。如果没有监控,任何请求都可以发送到服务器,而无需任何分析和管理员警报。


为了应对潜在的僵尸 API,管理员通常会在网络上安装代理来检测流量。代理收集流量数据并检测服务器和其他网络基础设施上的开放连接。这种策略的问题在于,僵尸 API 通常会保持休眠状态,没有流量或请求,直到被发现。它们可能被开发人员、运营人员或互联网上的第三方发现。只有在第三方找到端点后,才会记录流量,但这并不意味着请求会触发警报。僵尸 API 将允许标准请求,而不会出现任何“黑客攻击”或格式错误的查询。这就是僵尸 API 如此危险的数据泄露原因。

使用人工智能发现僵尸 API

与其依赖代理来被动检测僵尸 API,更好的解决方案是使用人工智能并扫描您的代码。此策略分为两个阶段:扫描您的存储库代码以查找对内部 API 的引用,并使用事件日志确定 API 是否收到任何请求。


第一步是扫描代码以查找对 API 的引用。这些 API 可能是外部的,也可能是内部的,但您需要重点关注内部 API,因为此基础架构会影响您自己的数据。这些引用可能位于许多存储库中,既有活跃的,也有弃用的。您甚至可能不知道这些引用在您的代码中,但扫描它会发现它们,以便将列表发送给人工智能 (AI)。


接下来是用于提取和分析事件日志的大型语言模型 (LLM)。事件日志可能包含数 GB 或数 TB 的逐行数据。事件日志对于网络安全和监控基础设施的使用情况至关重要,因此应为托管 API 的服务器设置事件日志。如果代码中引用了 API 端点,但流量事件很少或没有,那么您可能有一个僵尸 API。具有引用和大量事件日志的 API 正在被使用和监控,因此它们不会被视为僵尸 API。


使用 LLM 处理每个 API 端点引用的分析需要时间,但结果可能会让不了解其环境中活跃 API 的管理员感到惊讶。例如,印度达美乐比萨案例研究最近发现了 189 个僵尸 API,其中 11% 关联个人身份信息 (PII)。这一发现是在扫描了 2063 个端点并花了 2.2 天分析整个 Domino's Pizza India 环境的事件日志后得出的。

您应该监控僵尸 API 吗?

答案是“是的!”僵尸 API 可能会泄露您的客户数据、内部数据或其他关键信息。在合规环境中,这种疏忽可能会导致数百万美元的罚款。诉讼、品牌损害、收入影响和其他一些负面后果都与导致数据泄露的不受监控的基础设施有关。


更好地了解组织环境对于网络安全和更快的事件响应至关重要。随着越来越多的组织在云中部署基础设施,确保您没有任何松散的环节(包括僵尸 API)比以往任何时候都更加重要。记录您的基础设施是一个很好的第一步,但有些 API 可能会漏网。持续扫描您的代码有助于识别僵尸 API,然后可以禁用或将其添加到监控代理中。更好地了解您的基础设施可以降低暴露敏感数据的风险并减少您的攻击面。