S3IC-Lab/Odysseus
GitHub: S3IC-Lab/Odysseus
通过双重隐写术将恶意查询嵌入图像,实现对商业多模态大模型集成系统的越狱攻击,用于评估和揭示多模态 AI 系统的安全漏洞。
Stars: 51 | Forks: 6
# Odysseus:通过双重隐写术越狱商业多模态 LLM 集成系统
## 引言
这是我们的论文“[Odysseus: Jailbreaking Commercial Multimodal LLM-integrated Systems via Dual Steganography](https://arxiv.org/abs/2512.20168v1)”的官方实现。该论文已被 Network and Distributed System Security Symposium (NDSS) 2026 接收。如果您发现本仓库对您的研究有帮助,请考虑引用我们的论文。欢迎通过 GitHub Issues 或电子邮件 (jmengcheng@163.com) 提出任何问题或反馈。
## 概述

## 入门指南
### 1. 安装依赖
```
conda create -n Odysseus python=3.10
conda activate Odysseus
pip install -r requirements.txt
```
### 2. 准备数据集和评估模型
我们在所有实验中使用 [COCO 2017](https://cocodataset.org/#download) 作为图像数据集。请提前下载数据集并将其放置在 `./data` 目录中。下载完成后,运行以下命令对数据集进行预处理和索引:
```
python ./data/index.py
```
为了进行安全性评估,我们采用了 [HarmBench](https://huggingface.co/cais/HarmBench-Llama-2-13b-cls),这是一个广泛使用的有害内容分类基准。您可以使用以下命令从 Hugging Face 下载它:
```
huggingface-cli download --resume-download cais/HarmBench-Llama-2-13b-cls --local-dir /home/model/HarmBench-Llama-2-13b-cls
```
### 3. 运行
#### 训练隐写术模型
首先,训练用于将恶意查询嵌入图像中的隐写术模型:
```
python train.py new --name stego_model
```
**可用命令:**
**`new`** - 开始一次新的训练运行:
- `--name`(必填):实验名称
- `--data-dir`, `-d`:数据目录(默认值:`./data`)
- `--batch-size`, `-b`:批处理大小(默认值:10)
- `--epochs`, `-e`:迭代次数(默认值:300)
- `--continue-from-folder`, `-c`:从先前的检查点文件夹恢复
- `--tensorboard`:启用 Tensorboard 日志记录
- `--enable-fp16`:启用混合精度训练
- `--noise`:配置噪声层,例如,`'cropout((0.55, 0.6), (0.55, 0.6))'`
**`continue`** - 恢复先前的训练运行:
```
python train.py continue --folder [checkpoint_folder]
```
- `--folder`, `-f`(必填):检查点文件夹的路径
- `--data-dir`, `-d`:覆盖先前的数据目录
- `--epochs`, `-e`:覆盖先前的迭代次数
训练好的模型可以从[此处](https://drive.google.com/file/d/1ZaZouUWoeDipTgFNf9NsrDBA_JcKyPPh/view?usp=drive_link)获取。
#### 发起越狱攻击
在发起攻击之前,请修改位于 `./utils/config.json` 的配置文件。具体包括:
- 将 `harmbench-path` 设置为下载的 HarmBench 模型的本地路径(例如,`/home/model/HarmBench-Llama-2-13b-cls`)。
- 将 `stego-folder` 设置为包含训练好的隐写术模型的目录。
- 配置目标 MLLM 集成系统的 API key 以进行评估和测试。
完成上述步骤后,执行以下命令以发起越狱攻击:
```
python main.py
```
这将自动生成隐写图像,将它们提交给目标 MLLM 集成系统,并使用 HarmBench 分类器评估响应。
**可用命令:**
- `--dataset`:指定用于构建恶意查询的基准数据集。
- `--model`:指定要攻击的目标 MLLM 集成系统。支持的模型包括:
- `gpt-4o`
- `grok-3`
- **Gemini 2.0 系列**,包括 `gemini-2.0-pro-exp-02-05` 和 `gemini-2.0-flash-exp`
- **Doubao-seed-1.6 系列**,包括`doubao-seed-1-6-251015`、`doubao-seed-1-6-lite-251015`、`doubao-seed-1-6-flash-250828`、`doubao-seed-1-6-vision-250815`、`doubao-seed-1-6-thinking-250715`、`doubao-seed-code-preview-251028`
- **Qwen3-VL 系列**,包括 `qwen3-vl-plus`、`qwen3-vl-flash`
- **GLM-4.6V 系列**,包括 `glm-4.6v`、`glm-4.6v-flashx`、`glm-4.6v-flash`
更一般地,**其他配备了函数调用能力的商业 MLLM 集成系统可以通过适当配置此参数来进行评估**。
- `--try_times`:指定每个恶意查询的重复攻击尝试次数。
- `--cover_image`:指定用于隐写嵌入的载体图像。
## 主要结果

## 引用信息
如果您发现本仓库对您的研究有帮助,引用我们的论文将不胜感激😄。
```
@inproceedings{li2025odysseus,
title={Odysseus: Jailbreaking Commercial Multimodal LLM-integrated Systems via Dual Steganography},
author={Li, Songze and Cheng, Jiameng and Li, Yiming and Jia, Xiaojun and Tao, Dacheng},
booktitle={Network and Distributed System Security Symposium},
year={2026}
}
```
标签:COCO 2017, DLL 劫持, DNS 反向解析, Go语言工具, HarmBench, Llama-2, MLLM, Naabu, NDSS 2026, PyTorch, 内容安全, 凭据扫描, 双重隐写术, 反取证, 图像隐写, 多模态大模型, 大语言模型, 子域名枚举, 学术论文复现, 安全基准测试, 安全评估, 对抗样本, 恶意查询, 深度学习, 系统安全, 逆向工具