亚马逊AWS官方博客

使用 Amazon WAF 和 Amazon CloudFront 保护您的生成式 AI 应用

随着基于大型语言模型(LLM)的生成式 AI(GenAI)应用程序的兴起,它们开启了新的可能性和使用场景。亚马逊云科技官网的生成式人工智能频道列出了一些热门的 GenAI 应用场景。其中有一些面向公众的应用程序,例如聊天机器人和虚拟助手,面临着来自恶意行为者的潜在威胁。今年 1 月,我们发布了一篇博客文章 Architect defense-in-depth security for generative AI applications using the OWASP Top 10 for LLMs,介绍了如何多层级地对 GenAI 应用程序进行安全加固。本文将针对其中的 Network & Edge Protection 层级做进一步的展开,介绍如何使用 WAF 和 CloudFront 保护您的 GenAI 应用。

Figure 1:保护 GenAI 应用的几个层级

利用 WAF 阻止机器人流量,节省 GenAI 应用程序的成本

为了获得更加相关、准确和定制的响应,我们通常需要为 LLM 提供额外的上下文和指令。例如,对于一个询问“我是一名中级骑手,预算 3000 美元,想购买一辆碳纤维自行车,请推荐最合适的车型。”这样的简单提示,如果直接输入到通用 LLM 中,可能得到的回答不太相关或者不符合我们实际销售的产品。为了改善这一点,我们可以为 LLM 提供额外的上下文,比如我们的内部销售文档和产品文档,以及一些指令性的语句,引导 LLM 更好地理解和回答问题。

这种被称为“检索增强生成” (RAG)的技术,虽然可以获得更加定制化的响应,但也会大幅增加输入到 LLM 的 token 数量。一个原本只有 19 个单词的简单提示,在添加上下文和指令后,可能会变成 1400 个 token 左右的输入,加上大约 150 个 token 左右的输出。因此,一个看似简单的问题,实际上会消耗较多的 LLM 模型 token。由于 LLM 模型的计费是基于每千个输入/输出 token,这种方式会显著增加使用成本。如果我们为这个例子使用 Claude 3 Sonnet 模型,成本约 $0.00645。

Figure 2:RAG 和提示工程产生额外的 token

相比于自行车 $3000 的价格来说,$0.00645 的成本是非常划算的。但由于这是一个面向公众的 GenAI 应用程序,我们还需要考虑其他因素。

在 2022 年,约 47% 的互联网流量来自于非人类或机器人[1],并且机器人流量的占比还在持续增加。这些机器人可能会向 LLM API 发送过多请求,会迅速增加 GenAI 应用的成本,甚至造成模型拒绝服务(OWASP Top 10, LLM04: Model Denial of Service) —— 尤其是那些按输入 token 的数量收费的 LLM。

我们可以为 GenAI 应用程序的应用负载均衡器(ALB)部署 WAF 和 WAF Bot Control 来应对这种情况。Amazon IP reputation list 托管规则组可以阻拦低信誉 IP 地址,经常对亚马逊云科技的资源发起侦察和扫描的 IP 地址,以及经常发起分布式拒绝服务攻击(DDoS)的 IP 地址。Common Bot Control 的 SignalKnownBotDataCenter 规则可以阻拦经常产生机器人活动的 IP 地址。另外,能够识别和管控高级机器人行为的 Targeted Bot Control,其每检查一个请求的价格仅为 $0.00001。针对上文例子的使用场景,假设 Targeted Bot Control 成功阻拦了 90% 的机器人流量,即 GenAI 应用程序总请求数的 47% * 90% = 42.3%,则每花费 $1,即检查 $1 / $0.00001 = 100,000 个请求,就能够在 GenAI 应用程序上节省 100,000 * $0.00645 * 42.3% ≈ $273。

虽然具体的成本节省情况会因输入输出大小,使用的模型以及攻击百分比而有所不同,但只要能够阻止机器人攻击,使用 WAF Bot Control 几乎都会带来一定的成本节省。因此,在设计 GenAI 应用程序的架构时考虑 WAF 防护是非常必要的。

利用 WAF 阻止机器人批量创建账号

即使我们可以通过限制登陆后的用户才能使用 GenAI 应用,以及限制用户的每日 token 额度等方式来缓解模型拒绝服务攻击和模型盗窃(OWASP Top 10, LLM10: Model Theft)的影响,攻击者也可以大规模创建虚假账户,或者通过发现现有账户的凭据来试图接管这些账户,然后登录并开始滥用 GenAI 应用程序。 账户创建欺诈预防(ACFP)账户接管预防(ATP) 是亚马逊云科技 WAF 上的两种托管规则组,可以帮助管控此类风险。它们的工作方式与 Targeted Bot Control 相同,但增加了针对注册/登录工作流程的检测。例如:将使用的凭据与被盗凭据数据库进行比较;特定的行为分析,如失败的登录尝试或密码遍历尝试等。

ACFP 和 ATP 的定价虽然比 Targeted Bot Control 高一些,但按照智能威胁缓解的最佳实践的指导,合理地使用限速规则、IP 信誉规则、Bot Control 规则、根据 WAF 日志更新 IP 黑名单列表等方式,您可以有效地保护和控制 ACFP 和 ATP 的成本。

利用 WAF 保护虚拟私有云(VPC)私有子网内的 Plugin 等后端资源

企业通常会先在内部环境中部署生成式 GenAI 应用程序,例如内部知识库、代码和文档生成等,以优化业务流程并提高工作效率。这样,可以在将 GenAI 技术扩展到面向公众的应用程序之前,在一个更加可控的环境中试用和评估它。此外,为了增强 GenAI 应用程序的功能,开发人员经常会集成插件以执行特定的工作流。如果缺乏适当的安全防护措施,恶意提示可能会利用插件中的漏洞,导致数据泄露、数据篡改或执行非预期代码等安全风险。

OWASP Top 10 列出了相关的威胁,包括不安全的输出处理(LLM02: Insecure Output Handling)和不安全的插件设计(LLM07: Insecure Plugin Design)。为了保护插件免受此类攻击,除了输入验证和软件修补等安全最佳实践之外,部署 WAF 也是一项必要的保护。插件通常部署在 VPC 私有子网中,很少直接暴露在互联网上,而亚马逊云科技 WAF 可以在私有网络中使用,利用 Core rule set (CRS) Know bad inputs 等亚马逊云科技托管规则组和丰富的 Marketplace 托管规则组保护私有的 ALB。

利用 CloudFront 缓解分布式拒绝服务(DDoS)的能力

CloudFront 不仅可以利用缓存加速静态流量,还可以利用亚马逊云科技的骨干网加速 API 等动态流量,您可以阅读博客文章:利用 Amazon CloudFront 加速和保护动态工作负载,并降低动态工作负载的交付成本了解具体的动态流量加速原理。

更重要的是 CloudFront 对安全性的改善。

亚马逊云科技采用完全内联的 DDoS 防护系统对所有传入 CloudFront 的数据包进行检查,能够实时缓解针对 CloudFront 的 L3(网络层)和 L4(传输层)DDoS 攻击而不会引入明显的延迟。对于 L7(应用层),采用了不同的检测逻辑。数据包不会经过内联检查,而是直接从互联网传输到应用程序。不过,Amazon Shield Advanced 会持续监控这些资源的流量模式,从而检测潜在的 DDoS 攻击,并通过自动应用层 DDoS 缓解功能将 Anti-DDoS 规则推送给 WAF 并直接在 CloudFront 边缘阻挡攻击流量。

即使您没有订阅 Shield Advanced,您也能在一定程度上受益于 Amazon Shield Standard 的 L7 DDoS 防护能力。How AWS protects customers from DDoS events 介绍了 2023 年 Shield 和 CloudFront 成功抵御了一次大规模 L7 DDoS 攻击。该新型攻击利用了 HTTP/2 rapid reset 原理,对 CloudFront 发起了 1.5 亿 Requests per Second (RPS) 的 DDoS 攻击。在攻击流量对使用 CloudFront 的客户造成任何影响之前,Shield Standard 自动检测到并阻止了此次攻击。

Figure 3:Global HTTP requests per second, September 13 – 16

为 GenAI 应用程序的 Web 前端使用 CloudFront 可以让整体架构设计变得更好。您完全不需要为 L3 和 L4 的安全防护投入任何资源,只需要使用 WAF 实现 L7 的安全防护,同时还能在一定程度上受益于 Shield 的能力。

通过 CloudFront 或 WAF 安全仪表盘监控机器人流量

每个 CloudFront distribution 都提供免费的流量监控图表。启用 WAF 之后,您可以通过 CloudFront 控制台了解应用程序当前面临的机器人流量情况。查看这些图表,您就可以大致估算出当前攻击(或者不合理地使用)GenAI 应用程序的机器人流量比例。

Figure 4:启用 WAF Bot Control 之后的机器人活动可见性

在 WAF 控制台中,您还可以获得更多的可见性,快速了解应用程序环境中正在发生的情况。

总结

WAF 是一个非常有用的工具,无论是新的 LLM 或 GenAI 应用程序,还是现有在亚马逊云科技平台上运行的其他应用程序,都应该考虑使用它。启用 WAF 可以让您了解正在访问您的应用程序的恶意行为者,并阻止它们,同时也可以发现当前攻击您应用程序的机器人问题。我们还建议您考虑使用 CloudFront,它不仅能够改善您的 LLM 或 GenAI 应用程序的用户体验,还能够使您的应用程序免于 L3/L4 安全威胁。并且,CloudFront 和 WAF 配合使用非常简单,您可以通过一键部署功能为新创建的,或者现有的 CloudFront 分配启用或者关闭 WAF 保护。在启用 WAF 之后,等待一两周,查看你的仪表板,看是否存在问题,然后与我们联系,我们很乐意就你的安全之旅的下一步骤进行讨论。

参考资料

[1] Security Today, Report: 47 Percent of Internet Traffic is From Bots

[2] Youtube, AWS re:Inforce 2024 – Use AWS WAF to help avoid cost-prohibitive traffic in LLM apps (NIS221)

[3] AWS Best Practices for DDoS Resiliency

[4] OWASP Top 10 for LLM Applications

本篇作者

陈程

亚马逊云科技高级边缘产品架构师,专注于 Amazon CloudFront、AWS WAF、AWS Shield、AWS Global Accelerator、Amazon Route 53 等产品和服务。

王骏兴

亚马逊云科技边缘产品架构师,负责亚马逊云科技 Edge 服务领域在中国的技术推广。在 CDN 内容分发以及 WAF 领域拥有多年实战经验,专注于边缘服务设计以及体验优化。

叶明

亚马逊云科技边缘产品架构师,负责 CloudFront 和 Global Accelerator 服务在中国和全球的市场拓展,专注于互联网用户访问云上服务的感受的优化以及数据洞察。在互联网基础设施领域有丰富的实践经验。