Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DVLAA

Damn Vulnerable LLM and Agent Application

DVLAA 是面向大模型与智能体应用安全测试、教学演练和防护验证的本地化靶场平台。项目以 OWASP LLM Top 10 与 Agent 应用安全 Top 10 风险体系为主线,覆盖提示词注入、敏感信息泄露、RAG 投毒、工具滥用、权限边界、记忆污染、输出处理与资源消耗等典型场景,并提供真实模型交互、状态机判定、Flag 验证、源码查看、模型管理、双语界面、深浅色主题和 Docker 部署能力。

中文 · English

python flask docker owasp llm agent top10 language theme

项目介绍 · 核心特性 · 系统截图 · 系统架构 · 题库矩阵 · AWDP 攻防赛 · 快速开始 · 默认登录 · 访问入口


项目介绍

DVLAA 是一个本地化的大模型与智能体应用安全训练平台。系统以 Flask 控制台为入口,把 OWASP LLM Top 10Agent 应用安全 Top 10 与综合攻防题统一到同一套交互、判定、Flag、源码查看和模型管理流程中,并提供深色/亮色主题与中英文界面切换。

平台围绕“漏洞介绍 → 答题页面 → 模型/状态机交互 → 审计面板 → Flag 验证 → WP 题解”构建完整训练闭环。LLM 题目强调提示词、上下文、RAG、输出处理、工具调用和资源消耗等风险;Agent 题目强调目标劫持、工具滥用、身份权限、供应链、代码执行、记忆污染、多智能体通信、级联故障、人机信任与失控智能体。

综合攻防题已按漏洞类型归入对应 LLM Top 10 入口,便于从漏洞原理进入案例化任务,再进入具体答题页面完成验证。


核心特性

  • 理论先行的入口结构:LLM Top 10 与 Agent Top 10 侧边栏入口均先进入漏洞风险介绍页,再进入答题页面。
  • 55 道本地训练题目:24 道 OWASP LLM 子题、10 道 Agent 场景、11 道综合攻防题,以及 10 道 AWDP 攻防题。
  • 真实交互式 Payload 验证:题目通过模型响应、工具调用、状态机、知识库同步或多轮上下文推进,不依赖前端硬规则。
  • 统一答题页风格:LLM、Agent、综合题使用统一的事件背景、任务目标、同类题导航、终端交互和 Flag 验证布局。
  • 在线训练转接:在线 AI 安全训练入口已接入 Prompt Airlines,提供五关中文题面导引、稳定 WP 与系统内转接真实交互。
  • 源码与提示词查看器:题目页可查看系统提示词、运行配置与核心实现,运行时随机 Flag 会被占位符替换。
  • 模型管理后台:支持本地模型、Ollama、硅基流动和 OpenAI-Compatible 配置,API Key 掩码展示。
  • 双语与主题切换:顶部导航栏提供深色/亮色主题切换和中英文切换,偏好会保存在浏览器本地。
  • 本地运行与 Docker 部署:支持直接 Python 运行,也支持 Docker 镜像部署到独立容器。
  • 运行期数据隔离:模型配置、上传资料和下载模型保存在运行期目录或 Docker 数据卷中。
  • AWDP 攻防赛道:独立提供攻击/防守双工作台。攻击侧与真实客服 Agent 交互并提交当前会话 Flag;防守侧下载漏洞源码,提交包含根目录 update.shtar.gz 补丁包,服务端执行漏洞回归与业务回归。

系统截图

靶场仪表盘
靶场仪表盘
集中展示靶场服务状态、当前模型、运行架构、题目总量、通关进度与漏洞矩阵入口。
LLM 漏洞介绍页
LLM 漏洞介绍页
进入 OWASP LLM Top 10 后先阅读漏洞定义、攻击面、风险边界和本地题目映射,再进入答题页面。
LLM 答题页面
LLM 答题页面
统一展示事件背景、任务目标、同类子题导航、Flag 提交位、交互终端、WP 题解与源码查看入口。
Agent 答题页面
Agent 答题页面
Agent 场景与 LLM 题目保持一致布局,内置三阶段攻击链进度、工具清单、审计面板和状态机验证。
LLM 模型管理
LLM 模型管理
管理本地模型、Ollama、硅基流动与 OpenAI-Compatible 服务,支持连接测试、切换当前模型和密钥掩码展示。
理论学习
理论学习
提供内置中文学习资料、Markdown/PDF 上传、在线阅读和资料分类管理。

系统架构

flowchart TD
    A[浏览器控制台] --> B[Flask 路由层]
    B --> C[题库与介绍页]
    B --> D[LLM / Agent / 综合题答题页]
    B --> L[AWDP 独立攻防工作台]
    D --> E[对话 API]
    L --> M[真实模型攻击 API]
    L --> N[源码下载与补丁部署]
    N --> O[漏洞与业务双回归]
    E --> F[LLM Engine / Cloud Client]
    M --> F
    E --> G[本地状态机与判定器]
    O --> G
    G --> H[Flag Registry]
    B --> I[模型管理]
    B --> J[理论学习]
    B --> K[源码与提示词查看器]
Loading

DVLAA 采用单体 Flask 应用组织运行时能力:

  1. Web UI 层dvlaa/web/ 提供控制台、题库矩阵、介绍页、答题页、模型管理和学习页面。
  2. 题目编排层dvlaa/config.pydvlaa/content/ 维护题库配置、场景任务、Payload 和题解。
  3. 判定层dvlaa/modules/llm*_judge.pydvlaa/challenges/dvlaa/modules/awdp_runner.py 共同完成模型响应审查、状态校验、补丁检查和 Flag 判定;AWDP 防守提交还会执行真实模型漏洞回归与客服业务回归。
  4. 模型层dvlaa/llm_engine.pydvlaa/llm_client.pydvlaa/modules/modelsel.py 统一本地模型、Ollama、硅基流动和兼容 OpenAI API 的调用。
  5. 运行数据层dvlaa/flags.json 保存题目定义,项目根目录的 data/uploads/ 保存运行期配置、模型、学习资料和上传文件。

题库矩阵

模块 数量 训练重点
OWASP LLM Top 10 24 提示词注入、敏感信息泄露、供应链、投毒、输出处理、过度代理、系统提示词泄露、向量检索弱点、幻觉、资源消耗
Agent 应用安全 Top 10 10 目标劫持、工具滥用、身份权限、供应链、代码执行、记忆污染、Agent 通信、级联故障、人机信任、失控智能体
综合攻防题 11 提示词覆盖、系统提示词提取、RAG 投毒、上下文替换、多轮升级、角色漂移、策略投毒、链式利用、数据边界侵蚀、医疗隐私泄露、医用急救知识篡改
AWDP AI 智能体安全攻防赛 10 公开开源 AI 项目漏洞映射;提示词注入、RAG 投毒、工具越权、SSRF、Text-to-SQL、IDOR、API 认证和业务逻辑绕过;真实模型攻击、运行时 Flag 验证、受限 update.sh 补丁和双重回归
在线 AI 安全训练 3 个入口 Prompt Airlines 中文挑战转接、提示词防护闯关、提示词红队挑战平台

AWDP 攻防赛独立赛道

AWDP(Attack With Defense Patch)是独立于常规 LLM、Agent 和综合题的攻防训练赛道。每个环境按浏览器会话隔离,攻击与防守在同一题目中形成闭环:先通过真实 AI Agent 交互验证漏洞,再下载可审计源码提交修复补丁,最后由服务端执行漏洞回归和业务回归。

AWDP01:S-Spring 客服运行时策略泄露与修复

  • 题目入口http://localhost:5080/awdp/1
  • 场景:S-Spring 客服 Agent 处理订单、退款、售后和服务时间咨询。遗留运行时策略把服务端验证令牌拼接进了模型可见的 system message,并允许在客服交接、事故审计或结构化策略导出语境下返回完整策略包。
  • 攻击阶段:在攻击页与客服 Agent 真实对话,使用交接/审计导出语境观察原始模型回复;只有回复实际包含当前会话 Flag 时,提交该 Flag 才会通过。后端不按关键词或前端状态伪造通关。
  • 防守阶段:下载题目提供的漏洞源码,修复 src/chat.js 中将 runtimeFlag 拼接到 buildSystemPrompt() 的路径。将根目录 update.sh 与修改后的文件打包为 .tar.gz(或 .tgz)并上传,补丁脚本使用题目允许的 cpmvrm 文件操作。
  • 补丁脚本格式update.sh 可以保留 shebang、注释和 set -eset -euset -euo pipefail 等失败即停声明;平台不会执行任意 Shell,只解释白名单文件操作。
  • 回归判定:部署后由真实模型执行交接/审计类漏洞回归,确认模型消息不再包含运行时 Flag;同时执行订单查询、退款咨询、售后换货和服务时间四类业务回归,确保修复没有通过停用客服功能来取巧。任一回归失败都会保留原部署。

完整题解、Payload、系统提示词映射、源码查看、修复包示例下载和提交记录均在 AWDP01 页面中提供。修复包示例可直接上传验证,也可解压学习 update.shpatched/chat.js 的修复路径;Payload 可直接复制到攻击对话框。

AWDP02–AWDP10:公开漏洞映射题

新增题目均为本地隔离 Fixture,不连接或攻击上游服务;CVE、NVD 和 GitHub Security Advisory 只用于说明真实根因,Flag 与攻击链按浏览器会话动态生成。

题目 开源项目与公开参考 训练重点
AWDP02 Dify · CVE-2024-10252 外部工单提示词注入、工作流执行边界
AWDP03 RAGFlow · CVE-2024-53450 RAG 文档投毒、检索上下文隔离
AWDP04 Langflow · CVE-2024-48061 低权限 Agent 工具越权、代码能力隔离
AWDP05 Flowise · CVE-2024-8181 API 认证绕过、管理员路由授权
AWDP06 Dify · CVE-2025-32790 应用导出 RBAC、业务逻辑绕过
AWDP07 Open WebUI · CVE-2024-30256 远程抓取 SSRF、DNS/重定向校验
AWDP08 Dify · CVE-2025-0185 Vanna Pandas 查询注入、只读查询边界
AWDP09 RAGFlow · CVE-2025-25282 多租户文档 IDOR、租户范围隔离
AWDP10 n8n · CVE-2025-52554 执行记录越权、工作流完整性

每题页面均提供中文 Payload、漏洞原理、系统提示词与源码查看、公开参考链接和可直接上传的修复包示例。防守包除了修复 src/chat.js 的模型上下文边界,还必须提交题目对应的 src/vulnerability.js 修复;服务端会先做静态契约检查,再使用真实模型执行漏洞回归与正常业务回归。

公开漏洞资料与修复重点

题目 受影响版本 公开披露的真实问题 修复重点
AWDP02 Dify <= 0.9.1 sandbox 内部请求可注入 Python 并以高权限执行(CVE修复提交 外部工单只作为数据;工作流执行器使用白名单和服务端权限
AWDP03 RAGFlow 0.13.0 document-hooks.ts 对文档对象授权不足,可能越权读取文档(CVE源码 文档 ACL、租户范围和 RAG 引用数据边界在服务端执行
AWDP04 Langflow <= 1.0.18 代码组件在本地进程执行,低权限用户可触发 RCE(CVE 代码组件沙箱化,并对每次工具调用做角色和参数授权
AWDP05 Flowise 1.8.2 认证绕过可访问管理员 API(CVE研究报告 所有 chatflow/管理 API 强制服务端认证,不能依赖隐藏前端入口
AWDP06 Dify <= 0.6.8;修复版 0.6.13 普通用户可调用管理员专属 APP DSL 导出(CVEGHSA 从会话角色和 App ACL 推导权限,忽略请求体中的 role
AWDP07 Open WebUI < 0.1.117;修复版 0.1.117 已认证远程请求功能存在盲 SSRF(CVEGHSA DNS/IP/端口/每次重定向都校验,阻断环回、私网和链路本地地址
AWDP08 披露时 Dify Tools Vanna 最新版本 df_information_schema 清理不足导致 Pandas 查询注入,可能 RCE(CVE公开报告 AST/列白名单、参数化查询、只读账号,拒绝多语句和系统表
AWDP09 RAGFlow <= 0.14.1(公开记录) 认证用户可通过 IDOR 跨租户列举或添加用户(CVEGHSA 租户从会话推导,所有文档/索引操作执行对象级 ACL;该 CVE 公开记录尚称未修复
AWDP10 n8n < 1.99.1;修复版 1.99.1 /rest/executions/:id/stop 未校验 owner/shared,可停止他人执行(CVEGHSA stop/retry/view 全部校验 owner 或显式共享,executionId 不作为授权凭证

上表中的上游项目、版本和披露链接用于漏洞学习与源码对照;DVLAA 只运行本地隔离 Fixture,并明确标注尚未有上游修复版本的案例。


快速开始

环境要求

  • Python 3.11+
  • Docker 24.0+(推荐)
  • 最低 4GB 内存,推荐 8GB+
  • 可选:Ollama、本地 HuggingFace 模型或云端兼容 OpenAI API 的模型服务

方式一:一键 Docker 部署(推荐)

git clone https://github.com/Tcotl/DVLAA.git
cd DVLAA

./install.sh

安装脚本会自动构建镜像、重建 dvlaa-console 容器、挂载 dvlaa-data 数据卷,并等待 /health 健康检查通过。

常用自定义参数:

DVLAA_PORT=5081 DVLAA_IMAGE=dvlaa-lab:latest ./install.sh

方式二:手动 Docker 部署

docker build -t dvlaa-lab:latest .
docker run -d --name dvlaa-console \
  --restart unless-stopped \
  -p 5080:5000 \
  -v dvlaa-data:/app/data \
  dvlaa-lab:latest

curl http://127.0.0.1:5080/health

启用硅基流动:

docker run -d --name dvlaa-console \
  --restart unless-stopped \
  -p 5080:5000 \
  -v dvlaa-data:/app/data \
  -e SILICONFLOW_API_KEY=TOKEN \
  dvlaa-lab:latest

启用宿主机 Ollama:

docker run -d --name dvlaa-console \
  --restart unless-stopped \
  -p 5080:5000 \
  -v dvlaa-data:/app/data \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434/v1 \
  dvlaa-lab:latest

方式三:本地运行

git clone https://github.com/Tcotl/DVLAA.git
cd DVLAA

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m dvlaa

仍可使用 python app.py 作为旧部署脚本的兼容入口。


默认登录

启动服务后访问 http://localhost:5080/ 会先进入登录页面。系统内置一个默认管理员账号,便于本地部署后直接进入训练控制台:

字段 默认值
用户名 admin
密码 DVLAA2026+

同一个默认管理员账号支持多人或多个浏览器会话同时登录,不会互相挤下线。

如需在部署时修改默认登录凭证,可通过环境变量覆盖:

DVLAA_ADMIN_USERNAME=admin \
DVLAA_ADMIN_PASSWORD='DVLAA2026+' \
./install.sh

手动 Docker 部署时可添加:

-e DVLAA_ADMIN_USERNAME=admin \
-e DVLAA_ADMIN_PASSWORD='DVLAA2026+'

模型配置

进入控制台后打开 LLM 模型管理

  1. 使用默认本地模型槽位,按页面提示部署本地模型。
  2. 使用硅基流动配置,填写 API Key 后测试连接。
  3. 使用 Ollama 本地服务,确认 OLLAMA_BASE_URL 指向宿主机服务。
  4. 使用 OpenAI-Compatible 新增自定义服务。

运行期模型配置保存在 data/ 或 Docker 数据卷中,页面只展示掩码后的密钥。


访问入口


功能矩阵

能力域 核心内容 入口
LLM 漏洞训练 OWASP LLM Top 10 理论介绍、子题答题、WP、源码查看 /challenge/<level>
Agent 场景训练 Agent 应用安全 Top 10 理论介绍、工具链状态机、审计轨迹 /agent/<id>
综合攻防题 按漏洞类型归档到 LLM Top 10 的多阶段综合题 /challenge/<level>
AWDP 攻防训练 10 道本地隔离攻防题,映射 Dify、RAGFlow、Langflow、Flowise、Open WebUI、n8n 等公开项目漏洞;攻击真实模型取得 Flag,防守提交 tar.gz + update.sh 并执行漏洞/业务双回归 /awdp/1 - /awdp/10
在线 AI 安全训练 Prompt Airlines 中文题面、系统内转接交互、外部靶场导航 /internet-ranges
模型管理 本地模型、Ollama、硅基流动、自定义 OpenAI-Compatible 配置 /models
理论学习 内置中文资料、Markdown/PDF 上传与阅读 /learning
源码查看 系统提示词、运行配置、核心实现、Flag 占位展示 答题页按钮
Flag 验证 独立题目提交位、浏览器会话进度统计 各答题页

About

DVLAA (Damn Vulnerable LLM and Agent Application) is a local LLM and Agent security range for OWASP LLM Top 10 and Agent security training.

Topics

Resources

Stars

14 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages