AI安全实战系列(三):(待解决问题)Lab03 RAG Exploitation RAG 检索增强攻击

发布时间:2026/7/17 21:06:30
AI安全实战系列(三):(待解决问题)Lab03 RAG Exploitation RAG 检索增强攻击 随着大模型应用快速落地RAGRetrieval-Augmented Generation检索增强生成架构已经成为企业知识库、智能客服、AI Agent 等场景中的核心技术。然而RAG 并不是简单地“接入知识库即可安全运行”其在数据检索、文档管理、上下文拼接以及模型生成环节均存在新的攻击面。本文基于 AIRT Lab03 - Breaking RAG Systems 靶场深入分析 RAG 系统中的典型安全问题通过搭建一个存在漏洞的 RAG 环境实战演示知识库投毒Knowledge Base Poisoning、间接提示词注入Indirect Prompt Injection、向量数据库未授权访问、敏感信息泄露等攻击方式。文章目录文章介绍概述学习目标lab03----RAG 检索增强系统攻击靶场搭建靶场结构遇到的问题文章介绍靶场下载「airt-labs.zip」链接https://pan.quark.cn/s/534b8cbc2b24?pwd8nEn提取码8nEn完成实验环境搭建后正式进入 AIRT 八大靶场实战。本篇从 Lab01 Foundations 开始围绕 LLM 基础漏洞与信息泄露场景结合真实靶场环境演示系统Prompt 泄露、调试接口暴露、配置泄露等典型问题并分析漏洞成因、利用方式及防护思路为后续 Prompt Injection、RAG 攻击、多智能体攻击等高级实战打下基础。概述构建并系统地破坏检索增强生成RAG应用程序。毒害其知识库劫持数据并通过大型语言模型LLM窃取敏感数据。本实验室展示了为什么RAG系统需要端到端安全。学习目标部署使用ChromaDB和LangChain的易受攻击RAG应用程序用恶意文档毒害知识库通过检索的上下文执行间接提示注入通过LLM的响应泄露敏感数据测试未认证的矢量数据库访问了解完整的RAG攻击面话不多说我们直接开始lab03----RAG 检索增强系统攻击靶场搭建这里我们执行下述命令创建我们的靶场环境# 修改pip源镜像# 1. 进入 lab03 所在的工作目录cd~/Sec_tools/airt/labs/lab03# 2. 将所有用到大模型的地方换成 qwen2.5:0.5bsed-is/mistral:7b-instruct-q4_0/qwen2.5:0.5b/gdocker-compose.ymlsed-is/mistral:7b-instruct-q4_0/qwen2.5:0.5b/gagents/app.py# 3. 优化构建速度为 Python 容器添加清华镜像源sed-is/pip install/pip install -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple/gagents/Dockerfile# 4. 修复容器启动死锁移除健康检查、降级依赖条件、为 curl 拉取模型预留 15 秒缓冲sed-i/healthcheck:/,/retries: 5/ddocker-compose.ymlsed-is/condition: service_healthy/condition: service_started/gdocker-compose.ymlsed-is/curl -X/sleep 15 \\ curl -X/gdocker-compose.yml# 5. 重新构建并后台启动所有服务dockercompose up-d--build如果还是显示失败可以看前几篇文章的解决内容”直接去容器内拉取大模型“AI安全实战系列一人工智能红蓝对抗基础——靶场搭建与环境准备AI安全实战系列二LLM 基础漏洞与信息泄露和提示词注入攻击实战效果如下随后我们访问到 http://localhost:5000成功得到页面本关要点了解RAG的攻击常见方式靶场结构从上述页面我们可以得知RAG助手可以访问公司的文件里面可能包含我们感兴趣的东西所以我们需要想办法拿到手# 具体流程用户提问 ➟ LLM理解分析 ➟ 向量数据库检索 ➟ 知识库内容匹配 ➟ AI生成回复 ┌──────────────┐ User Query ──▶│ RAG App │ │ :5000 │ │(Flask)│ └───┬──────┬───┘ Retrieve │ │ Generate ▼ ▼ ┌─────────┐ ┌─────────┐ │ChromaDB │ │ Ollama │ │ :8000 │ │ :11434 │ │(Vectors)│ │(LLM)│ └─────────┘ └─────────┘ ▲ │ Ingest(VULNERABLE)│ ┌─────────┐ │Poisoned │ │Documents│ └─────────┘这里我首先尝试问了一下AI问题但是发现没有回答那么是不是需要我先上传文档让AI去理解然后才能进行输出遇到的问题这里我尝试了五六次修改app.py文件还是重新搭建靶场发现无论是我“上传文档”还是“提问”模型都返回响应码500提问/query上传文档/injest这里要是大家有什么解决的方法可以评论区私聊我都行