生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)

news2025/2/5 14:47:13

今天小李哥将开启全新的技术分享系列,为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来生成式 AI 安全市场正迅速发展。据IDC预测,到2025年全球 AI 安全解决方案市场规模将突破200亿美元,年复合增长率超过30%,而Gartner则预估到2025年约30%的网络攻击将利用生成式AI技术。与此同时,Capgemini的调查显示,近74%的企业认为AI驱动的安全防护至关重要,加上Cybersecurity Ventures报告指出,与生成式AI相关的安全事件年增长率超过20%,这充分表明企业和安全供应商正面临日益严峻的安全挑战,并加大投入以构建更全面的防护体系。今天要介绍的就是如何设计生成式AI应用安全解决方案,抵御OWASP Top 10攻击。未来也会分享更多的AI安全解决方案,欢迎大家关注。

目前我们生活中有各色各样的生成式AI应用,常见的场景之一就是生成式AI对话助手。然而在部署之前,通常还要对应用进行评估,其中包括了解安全态势、监控和日志记录、成本跟踪、弹性等问题。在这些评估中,安全性通常是最高优先级。如果存在无法明确识别的安全风险,我们就无法有效解决这些风向,这可能会阻碍生成式AI应用向生产环境部署的进度。

在本文章中,小李哥将向大家展示一个自己设计的生成式应用的真实场景,并演示如何利用 OWASP安全框架,基于大语言模型应用常见的Top 10安全攻击来评估应用的安全态势,以及实施缓解措施。下图就是一个生成式AI应用的安全解决方案最佳实践,我们将继续从左到右详细介绍本方案中使用到的安全方案细节。

应用控制层

应用层通常容易遭受到诸如LLM01:2025提示注入、LLM05:2025输出处理不当以及LLM02:2025敏感信息泄露等风险。恶意攻击者可能会频繁尝试恶意的提示词输入来操控AI模型,从而可能通过AI模型泄露敏感信息或危及下游的应用系统。

在我们开头的架构图中,应用层的服务器就是亚马逊云科技无服务器计算服务Lambda。它通过从 API Gateway中提取事件的数据部分并进行语法和语义校验,实施严格的输入验证。通过对输入请求进行清洗、应用白名单和需要组织的关键字黑名单,并预定义合法请求的格式和规则进行验证,使用Lambda服务有助于防止LLM01:2025提示注入攻击。此外通过将user_id字段传递到下游应用中,可以使下游应用组件降低敏感信息泄露的风险,从而解决了LLM02:2025敏感信息泄露的问题。

同时亚马逊云科技Bedrock Guardrails提供了额外的大模型输入输出保护层,可过滤和拦截敏感内容,如个人身份信息(PII)以及通过正则表达式定义的自定义敏感数据。Guardrails还有检测和屏蔽攻击性语言、竞争对手名称或其他不希望出现的词语,确保输入和输出均安全。大家还可以利用 Guardrails在有害或操控性的提示词到达AI模型之前就进行检测和过滤,从而防止LLM01:2025提示注入攻击,维护提示词的完整性。

另一个关键的安全方面是管理AI模型的输出。由于AI模型可能生成包含可执行代码的内容,比如 JavaScript或Markdown,如果这些内容处理不当,就存在XSS攻击的风险。为降低此类风险,我们需要使用输出编码技术,例如HTML实体编码或JavaScript转义,在将内容呈现给用户前将任何潜在有害内容进行无害化转换。此方法解决了LLM05:2025输出处理不当的风险。

我们也可以利用亚马逊云科技Bedrock的提示管理和版本控制,使得在不断提升用户体验的同时,也能维持整个应用的安全性。通过完善管理提示词及其处理方式的变更,在增强IA模型功能的同时不会引入新的漏洞,并降低LLM01:2025提示注入攻击的风险。

降低未经授权或非预期的AI模型操作风险的策略的核心就是:“将AI模型视为不受信任的信息来源,并在某些操作上采用人工介入流程”。

亚马逊云科技Bedrock大语言模型与代理层

AI模型与AI模型代理层经常处理与AI模型的交互,面临诸如LLM10:2025不受限制的使用、LLM05:2025输出处理不当以及LLM02:2025敏感信息泄露等风险。

拒绝服务(DoS)攻击可能会通过大量资源密集型请求使AI模型处理不堪重负,从而降低整体服务质量并增加成本。在与亚马逊云科技Bedrock托管的AI模型交互时,设置诸如输入请求的最大长度等请求参数,将有助于降低AI模型资源耗尽的风险。此外亚马逊云科技Bedrock代理对队列中的最大动作数量以及完成客户意图的总动作数都有硬性限制,这限制了系统对AI模型代理基于用户需求所采取的总动作数量,避免了可能耗尽AI模型资源的异常死循环或密集任务。

输出处理不当会导致远程代码执行、跨站脚本(XSS)、服务器端请求伪造(SSRF)以及权限提升等安全漏洞。对AI模型生成的输出在发送到下游服务前,如果验证和管理不佳,就可能间接开放漏洞攻击面,让这些漏洞有机可乘。为降低这一风险,应将模型视为普通的应用用户一样,对 LLM生成的响应进行安全验证。亚马逊云科技Bedrock Guardrails利用可配置阈值的内容过滤器来过滤各种有害内容,并在这些响应被其他后端系统进一步处理之前就进行阻拦,从而简化了这一过程。Guardrails会自动评估用户输入和模型响应,检测并帮助防止有害的内容。

亚马逊云科技Bedrock代理在执行多步骤任务时,与亚马逊云科技原生服务以及外部的第三方服务安全集成,从而有效解决输出处理不安全、过量代理行为和敏感信息泄露的风险。在文章开头的架构图中,代理下的action group中的Lambda服务用于对所有输出文本进行编码,使其自动无法被 JavaScript或Markdown异常执行。此外action group中的Lambda函数会解析和记录代理每一步执行时从AI模型得到的回复,并根据恢复内容相应地控制输出,确保在下一步处理前输出内容完全安全。

敏感信息泄露是AI模型面临的另一大风险,因为恶意的提示工程可能会导致AI模型无意中在响应中泄露不该公开的细节,从而引发AI模型隐私和机密性问题。为缓解这一问题,可以通过亚马逊云科技 Bedrock Guardrails中的内容过滤器实施数据清洗措施。

另外还应根据user_id实施自定义、精细化的数据过滤策略,并根据id执行严格的用户访问策略。亚马逊云科技Bedrock Guardrails可以过滤敏感内容,亚马逊云科技Bedrock代理则通过允许大家在预处理输入的提示词模板和处理响应的提示词模板中实施自定义逻辑来去除任何非预期的有害信息,进一步降低了敏感信息泄露的风险。如果大家已为AI模型启用了模型调用日志记录,或者在应用中实施了自定义日志逻辑,将 AI模型的输入和输出记录到亚马逊云科技CloudWatch中,那我们也需要开启CloudWatch日志数据保护等措施,在CloudWatch日志中识别和屏蔽敏感信息,从而进一步降低敏感信息泄露的风险。


代理插件控制层(action group Lambda函数)

代理插件控制层经常需要与内部和外部服务集成,并对内部和外部数据源以及外部第三方API应用授权。LLM08:2025向量与嵌入薄弱性以及LLM06:2025代理行为过度的风险开始显现。不受信或未经验证的第三方插件可能会以恶意代码的形式引入后门或漏洞。

对与外部系统进行集成交互的action group Lambda函数所使用的IAM角色,应使用最小权限原则原则,有助于解决LLM06:2025代理行为过度和LLM08:2025向量与嵌入薄弱性的风险。从文章开头的架构图可以看出,代理插件层的Lambda函数便是关联了一个最小权限的 IAM 角色,用以安全访问和与其他内部亚马逊云科技服务进行交互。

此外在确定用户身份后,通过将user_id传递给下游集成应用(如代理插件层),通过基于用户id身份授权访问,从而进一步限制数据的访问。虽然这个user_id参数可在代理插件控制层的Lambda函数中用于自定义授权逻辑,但其主要作用就是用于为外部第三方插件提供基于用户身份的细粒度的访问控制。应用所有者有责任在action group Lambda函数中实施自定义授权逻辑,该自定义逻辑需要将user_id参数与开发者预定义授权规则相结合,为第三方API和插件应用配置安全的访问授权级别。此方法将确定性的访问控制应用于非确定性的AI模型前,使得对哪些用户可以访问和执行特定外部第三方插件实现了细粒度控制。

将基于user_id的数据授权与IAM角色的最小权限相结合,一般可最大限度地降低LLM08:2025向量与嵌入薄弱性以及LLM06:2025代理非预期行为的风险。


RAG知识库数据存储层

RAG的数据存储层负责安全地从各类亚马逊云科技上的数据源和外部第三方数据源中检索最新、精准且受到访问控制的数据。在默认情况下,亚马逊云科技Bedrock使用了KMS秘钥服务,加密所有与知识库相关的数据。大家也可以选择使用Customer managed的KMS密钥。在为知识库配置数据提取任务时,还可以使用Custom KMS密钥对任务进行加密。

如果大家想选取OpenSearch Service作为知识库的向量存储,Amazon Bedrock可将大家选择好的 KMS密钥传递给它进行向量数据加密。此外在生成查询知识库响应的会话中,也可以使用KMS密钥对会话进行加密。为了便于安全通信,Amazon Bedrock知识库在与第三方向量存储进行数据交互时,默认使用TLS加密,前提是该服务支持并允许TLS加密传输。

关于用户访问权限控制,亚马逊云科技Bedrock知识库使用筛选来管理对数据的访问权限。大家可以利用文件元数据和过滤功能,在知识库上构建数据隔离访问解决方案。在运行应用时,必须对用户进行身份验证和授权,并在请求中包含该用户的验证信息,以保持准确和一致的访问控制。为了使访问控制持续生效,大家应定期在筛选配置中重新同步配置,以反映用户权限变化。另外用户组也可以作为一个筛选属性,对知识库中的文件进行精细化访问控制。

这种方法有助于解决LLM02:2025敏感信息泄露和LLM08:2025向量与嵌入薄弱性的风险,确保只有授权用户才能访问相关数据。

总结

在本文中,小李哥如何利用亚马逊云科技生成式AI安全合规框架,从亚马逊云科技安全共担责任模型的角度对生成式AI应用分为5大类,对于不同类别我们应用了不同的安全控制。同时我们回顾了一个常见的生成式AI应用的安全架构和最佳实践,再利用OWASP Top 10 for LLM风险评估模型评估了genAI应用安全态势,同时展示了如何利用亚马逊云科技服务有效解决OWASP Top 10 for LLM的常见威胁和风险,从而保护生成式AI应用的系统。想了解更多关于在亚马逊云科技构建安全生成式AI应用和AI安全的信息,欢迎大家关注小李哥不要错过更多精彩文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2292355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

家政预约小程序12服务详情

目录 1 修改数据源2 创建页面3 搭建轮播图4 搭建基本信息5 显示服务规格6 搭建服务描述7 设置过滤条件总结 我们已经在首页、分类页面显示了服务的列表信息,当点击服务的内容时候需要显示服务的详情信息,本篇介绍一下详情页功能的搭建。 1 修改数据源 在…

知识蒸馏教程 Knowledge Distillation Tutorial

来自于:Knowledge Distillation Tutorial 将大模型蒸馏为小模型,可以节省计算资源,加快推理过程,更高效的运行。 使用CIFAR-10数据集 import torch import torch.nn as nn import torch.optim as optim import torchvision.tran…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.29 NumPy+Scikit-learn(sklearn):机器学习基石揭秘

2.29 NumPyScikit-learn:机器学习基石揭秘 目录 #mermaid-svg-46l4lBcsNWrqVkRd {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-46l4lBcsNWrqVkRd .error-icon{fill:#552222;}#mermaid-svg-46l4lBcsNWr…

【C语言】指针详解:概念、类型与解引用

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯指针的基本概念1. 什么是指针2. 指针的基本操作 💯指针的类型1. 指针的大小2. 指针类型与所指向的数据类型3. 指针类型与数据访问的关系4. 指针类型的实际意…

【OS】AUTOSAR架构下的Interrupt详解(上篇)

目录 前言 正文 1.中断概念分析 1.1 中断处理API 1.2 中断级别 1.3 中断向量表 1.4 二类中断的嵌套 1.4.1概述 1.4.2激活 1.5一类中断 1.5.1一类中断的实现 1.5.2一类中断的嵌套 1.5.3在StartOS之前的1类ISR 1.5.4使用1类中断时的注意事项 1.6中断源的初始化 1.…

UE编辑器工具

如何自己制作UE小工具提高工作效率 在虚幻编辑器用户界面中,可以使用各种各样的可视化工具来设置项目,设计和构建关卡,创建游戏性交互等等。但有些时候,当你确定了需要编辑器执行的操作后,可能想要通过编程方式调用它…

【Linux】25.进程信号(2)

文章目录 4.捕捉信号4.1 重谈地址空间4.2 内核如何实现信号的捕捉4.3 sigaction4.4 可重入函数4.5 volatile4.6 SIGCHLD信号(了解) 4.捕捉信号 4.1 重谈地址空间 用户页表有几份? 有几个进程,就有几份用户级页表–进程具有独立性…

洛谷 P1387 最大正方形 C语言

题目描述 在一个 n m 的只包含 0 和 1 的矩阵里找出一个不包含 0 的最大正方形,输出边长。 输入格式 输入文件第一行为两个整数 n, m (1 ≤ n, m ≤ 100),接下来 n 行,每行 m 个数字,用空格隔开,0 或 1。 输出格式 …

ChatGPT提问技巧:行业热门应用提示词案例--咨询法律知识

ChatGPT除了可以协助办公,写作文案和生成短视频脚本外,和还可以做为一个法律工具,当用户面临一些法律知识盲点时,可以向ChatGPT咨询获得解答。赋予ChatGPT专家的身份,用户能够得到较为满意的解答。 1.咨询法律知识 举…

[吾爱出品]CursorWorkshop V6.33 专业鼠标光标制作工具-简体中文汉化绿色版

CursorWorkshop V6.33 专业鼠标光标制作工具 链接:https://pan.xunlei.com/s/VOIFeq5DFB9FS56Al_mT2EfdA1?pwd7ij4# 产品概述 Axialis CursorWorkshop 是一个专业光标创作工具它在 Windows 下运行,让您轻松创建高质量的静态和动态光标适用于 Windows …

【C语言】自定义类型讲解

文章目录 一、前言二、结构体2.1 概念2.2 定义2.2.1 通常情况下的定义2.2.2 匿名结构体 2.3 结构体的自引用和嵌套2.4 结构体变量的定义与初始化2.5 结构体的内存对齐2.6 结构体传参2.7 结构体实现位段 三、枚举3.1 概念3.2 定义3.3 枚举的优点3.3.1 提高代码的可读性3.3.2 防止…

LabVIEW涡轮诊断系统

一、项目背景与行业痛点 涡轮机械是发电厂、航空发动机、石油化工等领域的核心动力设备,其运行状态直接关系到生产安全与经济效益。据统计,涡轮故障导致的非计划停机可造成每小时数十万元的经济损失,且突发故障可能引发严重安全事故。传统人…

Kubernetes 中 BGP 与二层网络的较量:究竟孰轻孰重?

如果你曾搭建过Kubernetes集群,就会知道网络配置是一个很容易让人深陷其中的领域。在负载均衡器、服务通告和IP管理之间,你要同时应对许多变动的因素。对于许多配置而言,使用二层(L2)网络就完全能满足需求。但边界网关…

大模型综述一镜到底(全文八万字) ——《Large Language Models: A Survey》

论文链接:https://arxiv.org/abs/2402.06196 摘要:自2022年11月ChatGPT发布以来,大语言模型(LLMs)因其在广泛的自然语言任务上的强大性能而备受关注。正如缩放定律所预测的那样,大语言模型通过在大量文本数…

物理群晖SA6400核显直通win10虚拟机(VMM)

写在前面:请先确保你的核显驱动支持开启SR-IOV 确保你的BIOS开启了以下选项: VT-D VMX IOMMU Above 4G ResizeBAR 自行通过以下命令确认支持情况: dmesg | grep -i iommudmesg | grep DMAR分配1个虚拟vGPU:echo 1 | sudo tee /sy…

【python】tkinter实现音乐播放器(源码+音频文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【python】tkinter实现音乐播放器(源码…

MyBatis-Plus速成指南:常用注解

Table Name: 概述: MyBatis-Plus 在确定操作的表时,由 BaseMapper的泛型决定,即实体类决定,且默认操作的表名和实体类的类名一致 问题: 如果实体类类型的类名和要操作表的表名不一致会出现什么问题?(把 us…

Linux 压缩打包

Linux压缩打包 文章目录 Linux压缩打包压缩的意义和原理压缩的意义压缩的原理压缩与解压缩的好处 压缩打包命令.zipzip 命令用法unzip 的用法 .gzgzip 的用法gunzip 的用法 .bz2bzip2 的用法bunzip2 的用法 .xzxz 命令用法 tar 04-Linux压缩打包课后习题 压缩的意义和原理 压缩…

RabbitMQ深度探索:前置知识

消息中间件: 消息中间件基于队列模式实现异步 / 同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合 传统的 HTTP 请求存在的缺点: HTTP 请求基于响应的模型,在高并发的情况下,客户端发送大量的请求…

智慧校园平台:构建现代化教育体系的技术支撑

在当今信息技术飞速发展的时代,智慧校园平台成为了现代教育领域中的重要组成部分。智慧校园平台不仅能够提升学校的管理水平,还能提供更为个性化和高效的教学服务,从而促进学生的全面发展。 数据分析是智慧校园平台的重要组成部分。通过对学生…