Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
MEA-Bench — 面向黑盒LLM提取攻击、防御与自适应攻击的生命周期基准测试。 | Kitploit
工具/GitHubGitHub/sliu11-byte/mea-bench
漏洞分析机器学习论文与研究学习与教育AI 安全对抗性攻击
GitHubsliu11-byte/mea-bench

MEA-Bench

面向黑盒LLM提取攻击、防御与自适应攻击的生命周期基准测试。

查看仓库
41天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

MEA-Bench:模型提取攻击基准

本仓库为模型提取攻击、防御、自适应攻击和评估提供了统一的基准。公共接口围绕少量可移植命令进行组织。特定方法的 Python 模块和旧版运行脚本属于实现细节,而非面向用户的入口点。

以下四个可移植入口点会验证其公共参数,然后分派到方法实现。Slurm 资源包装器被有意排除在外。方法自有的清单文件在恢复行为和产物溯源方面仍具有权威性。

论文与作者

针对 LLM 提取的防御能否跨攻击生效?黑盒模型提取的生命周期基准

Shuze Liu(佛罗里达州立大学)、Kaixiang Zhao(杨百翰大学)、 Runyang Xu(密歇根大学安娜堡分校)、Jingzhi Chen(纽约州立大学 布法罗分校)、Nathan Wu(维克森林大学)、Yu Wang(佐治亚大学) 以及 Yushun Dong(佛罗里达州立大学)。

论文源码:https://github.com/sliu11-byte/MEA_benchmark_arXiv

本仓库提供了论文的实现和复现接口。查询池托管在作者的 Hugging Face 项目下: https://huggingface.co/datasets/watermarkproject/lord-mea-benchmark

仓库布局```text

attacks/ attack implementations and shared attack pipeline defenses/ defense implementations and detector adapters countermeasures/ adaptive-attack pipeline evaluation/ shared tasks, rollout code, and metrics infra/ portable model-serving helpers runs/ canonical public entry points

## 规范公共接口

该基准测试暴露四个顶层命令:

| 实验 | 入口点 | 必需的实验参数 |
|---|---|---|
| 攻击 | `runs/run_attack.sh` | `--attack`、`--budget` |
| 防御 | `runs/run_defense.sh` | 防御式提取:`--defense`、`--attack`、`--budget`;基于结果的防御:`--defense`、`--attack-run` |
| 自适应攻击 | `runs/run_adaptive_attack.sh` | `--adaptive-attack`、`--defense`、`--attack`、`--budget` |
| 评估 | `runs/run_evaluation.sh` | `--manifest` |

所有四个命令:

- 作为普通 shell 命令运行,无需 Slurm;
- 接受 `--help` 和 `--dry-run`;
- 在启动前验证所请求的实验;
- 自动创建、发现、验证并复用所有前置产物;
- 在 `--profile paper` 下使用确定性的基准默认值;
- 保留每种方法现有的恢复和产物复用行为;
- 写入或保留机器可读的运行元数据和输入来源信息;
- 避免嵌入用户名、集群账户、电子邮件地址或站点特定路径。

运行器在当前 shell 进程中协调实验逻辑。它们不提交集群作业,也不选择调度器分区。调用者负责在调用运行器之前分配足够的 CPU、内存和 GPU。用户可以提供服务中的 OpenAI 兼容教师和学生端点;攻击调度器也可以启动其现有的方法本地 vLLM 服务。

下面显示的命令是完整的公共复现接口。读者不应需要手动准备转录文本、预热检查点、自适应基线、留出的教师输出或检查点包。这些是运行器拥有的内部依赖项。手动配置仅限于无法推断的资源或凭据,例如 GPU 分配、对受限 Hugging Face 模型的访问以及可选的外部模型端点。

## 支持的方法

### 攻击

攻击注册表包含六种方法:```text
seqkd
lord
soda
qedks
model_leeching
gad

论文协议使用攻击预算 100、1000 和 10000。已发布的查询数据集还包含 50,000 条和 100,000 条记录的池,用于确定性 子集和留出集构建,但这些并未作为主要攻击预算进行宣传。

防御

防御根据其所需的工件进行区分。

防御性提取防御会修改响应、训练或提取 过程,因此会在防御下运行选定的攻击:```text ads doge trace_rewriting adfp ginsew radioactivity

**基于结果的防御与检测器**会消费一次已完成的攻击运行所产生的工件:```text
duffin
mmd
prada
seat

MMD、PRADA 和 SEAT 主要消费攻击查询流量。DuFFin 消费其检测器所需的完整攻击产物。防御注册表(而非 shell 包装器)定义了每种方法的确切产物要求。

自适应攻击

自适应攻击注册表包含:```text dipper translation

`translation` 表示基准测试的反向翻译自适应攻击。注册表会拒绝未实现或不属于基准测试协议的攻击-防御-自适应组合。

## 设置

使用 Python 3.10 以及与论文中记录的版本兼容的 CUDA/PyTorch 环境。统一基准测试环境为:```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

从仓库根目录运行以下命令。脚本会相对于该根目录定位其方法实现,并将所有默认产物写入该目录。

顶层的单个 requirements 文件涵盖了攻击、防御、自适应攻击、本地 vLLM 服务和评估。它使用论文环境中记录的 CUDA 12.8 PyTorch wheel 索引。在 CUDA 堆栈不同的机器上,请先安装匹配的 PyTorch 构建版本,然后再安装其余依赖项。在调用运行器之前,请激活所需的环境;这些可移植脚本不会自动加载环境模块或激活 Conda。

在完整运行之前验证安装:```bash python3 attacks/scripts/check_attack_env.py
--require-trl --require-vllm --strict-versions

攻击所使用的 Llama 模型、自适应攻击及其评估均在 Hugging Face 上受限访问。请先申请访问两个 Llama 模型仓库的权限,然后在运行基准测试前进行一次身份验证:```bash
hf auth login

在非交互式机器上,改为设置 HF_TOKEN。该令牌由 Hugging Face 库读取,绝不能写入清单、脚本或已发布的仓库中。查询池数据集本身是公开的。

论文中使用的模型

实验角色Hugging Face 模型 ID
干净攻击受害者/教师meta-llama/Llama-3.3-70B-Instruct
干净攻击代理/学生meta-llama/Llama-3.1-8B-Instruct
防御受害者/教师Qwen/Qwen2.5-72B-Instruct
防御基础代理/学生Qwen/Qwen2.5-7B
自适应攻击受害者/教师meta-llama/Llama-3.3-70B-Instruct
自适应攻击代理/学生meta-llama/Llama-3.1-8B-Instruct
DIPPER 自适应攻击响应重写器kalpeshk2011/dipper-paraphraser-xxl
DIPPER 自适应攻击分词器google/t5-v1_1-xxl
回译自适应攻击翻译模型facebook/seamless-m4t-v2-large

攻击运行器可以通过本地 OpenAI 兼容的 vLLM 端点为其大型模型提供服务。可移植的默认值为:```text teacher endpoint: http://127.0.0.1:8000/v1 student endpoint: http://127.0.0.1:8001/v1

对于 `runs/run_attack.sh`,服务模式决定了谁拥有服务器进程:

| 模式 | 服务器生命周期 |
|---|---|
| `local`(默认) | 脚本在当前分配中启动 vLLM,等待其变为健康状态,并且只停止它自己启动的进程。 |
| `external` | 用户在运行脚本之前启动一个 OpenAI 兼容的端点。脚本连接到该端点,并且从不停止它。 |

防御和自适应攻击入口点使用各自方法特定的运行器;它们所需的模型 ID 已在上文列出。GPU 分配、分布式启动和集群调度仍由调用方负责。采样、训练和评估的默认值从论文配置文件中加载,而不是在各个 shell 脚本中重复定义。

### 产物位置

所有运行命令都将 `--output-root` 解释为通用产物根目录,并自动追加其对应的实验类型目录:

| 命令 | 默认主输出 | 传递给评估的清单 |
|---|---|---|
| `run_attack.sh` | `outputs/attacks/<attack>/<run-id>/` | `attack_manifest.json` |
| `run_defense.sh`(防御提取) | `outputs/defenses/<defense>/<attack>/b<budget>/` | `defense_run_manifest.json` |
| `run_defense.sh`(基于结果) | `outputs/defenses/<defense>/<attack>/b<budget>/` | 生成的 `detector_manifest.json` |
| `run_adaptive_attack.sh` | `outputs/adaptive/<adaptive>/<defense>/<attack>/b<budget>/` | `defense_run_manifest.json` |
| `run_evaluation.sh` | `outputs/evaluation/<run-type>/<source-run-id>/` | 不适用 |

例如,向攻击命令添加 `--output-root /data/mea-runs` 会将 `outputs/attacks/...` 更改为 `/data/mea-runs/attacks/...`;同样的规则适用于 `defenses/` 和 `adaptive/`。评估读取由 `--manifest` 选择的源,然后自动发现其本地检查点和相关产物。它自己的 `--output-root` 仅控制指标的存放位置。

推荐的工作流程是:

1. 使用 `--dry-run` 运行一次所需命令以验证其参数;
2. 在不带 `--dry-run` 的情况下运行它,并等待退出状态为零;
3. 定位最终命令输出中显示的清单;以及
4. 将该确切的清单传递给 `runs/run_evaluation.sh`。

## 1. 运行攻击

每次调用只运行一个攻击和一个预算:```bash
bash runs/run_attack.sh \
  --attack seqkd \
  --budget 1000 \
  --profile paper

常用可选参数包括:```text --output-root outputs --seed 20260701 --resume --dry-run

论文配置提供查询池、模型 ID、生成设置和本地服务模式。现有的 OpenAI 兼容端点可以通过 `--teacher-serving external`、`--teacher-endpoint`、`--student-serving external` 和 `--student-endpoint` 作为高级覆盖选项来选择。

运行器负责:

1. 解析确切的查询池层级和确定性排序;
2. 验证教师和学生配置;
3. 创建或复用协议兼容的教师转录;
4. 生成方法特定的前置条件,例如 SODA 所需的匹配 SeqKD 初始化;
5. 在不改变其定义性获取或训练过程的情况下运行所选方法;
6. 写入完成的 `attack_manifest.json`。

SeqKD、LoRD、SODA 和 GAD 在论文配置下复用共享的离线教师转录。QEDKS 和 Model Leeching 保留其方法特定的获取过程。仅当预算、查询池哈希、排序哈希、受害模型和生成设置匹配时,才接受转录复用。

服务默认使用 `local`,在调用者的分配内恢复前 Slurm 编排器的生命周期。对于离线攻击,运行器启动教师 vLLM,构建转录,停止 vLLM,然后进行训练;对于 QEDKS 和 Model Leeching,它保留方法本地的教师用于获取。SODA 还会自动启动其所需的学生服务。仅当复用已在运行的端点时,才传递 `--teacher-serving external` 或 `--student-serving external`。GPU 放置和容量仍由调用者负责。

现有的攻击流水线拥有带时间戳的运行目录。预期输出:```text
outputs/attacks/<attack>/<timestamp>_<attack>_b<budget>/
  attack_manifest.json
  transcripts/
  train_data/
  checkpoint-final/
  logs/

方法拥有的目录对于某些攻击有所不同,但其路径记录在 attack_manifest.json 中。下游代码应读取该清单,而不是 猜测检查点目录。QEDKS 会自动恢复兼容的未完成查询状态; 其他方法则复用显式提供的记录、准备好的 数据或预热检查点,而不是将 --resume 视为通用的 检查点重启机制。

--output-root 设置产物根目录。例如, --output-root /data/mea-runs 会将清单位置更改为:```text /data/mea-runs/attacks///attack_manifest.json

## 2. 运行防御

### 防御性提取

对于 ADS、DOGe、Trace Rewriting、ADFP、GINSEW 和 Radioactivity,请指定防御、攻击和预算:```bash
bash runs/run_defense.sh \
  --defense adfp \
  --attack seqkd \
  --budget 1000 \
  --profile paper

默认的 --execution-mode auto 会选择受支持的本地执行路径,加载所需模型,并启动和停止该路径使用的任何内部 oracle 或 student 服务。--teacher-endpoint 和 --student-endpoint 是对已运行的兼容服务的可选覆盖;它们不是上述命令的先决条件。

运行器会构建受防御的 oracle 或训练路径,执行攻击,并将受防御的转录、防御工件、检测器输出和 student checkpoint 记录在 defense_run_manifest.json 中。

运行器不会静默复用不兼容的干净攻击。任何复用的 warmup checkpoint 或转录都必须通过攻击流水线所使用的相同模型、预算、查询池、排序和生成配置检查。

论文的防御基准对每个攻击和防御条件都使用 Qwen/Qwen2.5-72B-Instruct 作为 teacher,Qwen/Qwen2.5-7B 作为基础 student。这包括受防御的提取和基于结果的防御。当 SODA 是提取攻击时,运行器将其匹配的 SeqKD 初始化解析为内部训练先决条件;这不是单独的防御实验或面向读者的重放协议。运行器会拒绝意外的 Llama/Qwen 混合。自适应/对抗措施实验是单独的协议,并保留其记录的 Llama teacher/student 配对。

基于结果的防御和检测器

对于 DuFFin、MMD、PRADA 和 SEAT,请提供已完成的攻击清单:```bash bash runs/run_defense.sh
--defense mmd
--attack-run outputs/attacks/seqkd/_seqkd_b1000/attack_manifest.json

运行器从清单中推断攻击、预算、查询日志、检查点以及其他可用工件。`--attack` 或 `--budget` 可以作为断言提供,但值冲突会导致错误。

防御性提取输出:```text
outputs/defenses/<defense>/<attack>/b<budget>/
  defense_run_manifest.json
  artifacts/
  detector/
  logs/

基于结果的方法可以省略检查点目录,但必须记录上游攻击清单以及所有已消耗的查询/输出哈希。其输出为:```text outputs/defenses///b/ [/]detector_manifest.json [/]detector_report.json logs/

可选的额外检测器目录由方法自身管理;请使用已完成命令打印的清单,而不要在另一个脚本中构造此路径。
下载工具