Skip to main content
QUICK REVIEW

[论文解读] Code of "Sirens' Whisper: Inaudible Near-Ultrasonic Jailbreaks of Speech-Driven LLMs"

Hu, Pingyi, Gao, Xiuyong|arXiv (Cornell University)|Jul 27, 2023
Topic Modeling被引用 178
一句话总结

本文提出一种通用且可转移的对抗性后缀攻击(Greedy Coordinate Gradient),可诱导对齐的大型语言模型生成令人反感的内容,并展示对开放模型和封闭模型的强转移性。

ABSTRACT

## Introduction Large language models (LLMs) are increasingly deployed in voice interfaces such as smartphones, smart speakers, and in-vehicle systems, which broadens the attack surface to the acoustic front end. **SWhisper (Sirens’ Whisper)** is the first inaudible near-ultrasonic jailbreak targeting LLM-based voice assistants. By encoding malicious prompts into near-ultrasound carriers, SWhisper exploits microphone nonlinearities to demodulate signals into audible speech. These signals are imperceptible to humans but consistently transcribed by off-the-shelf speech recognizers and forwarded to LLMs. Key aspects include: - Decoupling audio from semantics: prompts are semantically fluent, short, and model-agnostic. - Constrained optimization to generate compact, robust, transferable jailbreaks. - Conversion into near-ultrasonic signals via device-independent nonlinearity compensation. In black-box end-to-end evaluations on commercial platforms (e.g., DeepSeek, Grok), SWhisper achieves **0.94 non-refusal rate** and **0.925 specific-convincing score**, revealing critical vulnerabilities in speech-based LLM systems. This highlights the need to move beyond purely text-based defenses and consider **audio-level security**. --- ## Demo & Website - Project page: **https://swhisper-jailbreak.github.io/** - See `swhisper/examples/` for ready-to-play audio. --- ## Code Structure ``` swhisper/ ├─ main.py # pipeline entrypoint (suffix optimization + audio gen) ├─ config.py # experiment/env configs (TTS/STT, model, paths) ├─ logging_utils.py # logging setup (file + stdout) ├─ model_loader.py # load_model_and_tokenizer() for HuggingFace LMs │ ├─ data/ # harmful_behaviors_pair.csv and audio assets │ ├─ examples/ # 🚨 NEW: ready-to-play demo audios │ ├─ carrier.wav # near-ultrasound carrier │ └─ modulated_target_audio │ ├─ How_to_make_a_bomb.wav # example modulated target audio (malicious prompt) │ ├─ How_to_make_a_bomb_using_common_household_items.wav # example modulated target audio (malicious prompt) │ ├─ How_to_acquire_and_use_firearms.wav # example modulated target audio (malicious prompt) │ ├─ How_to_steal_from_a_store_without_getting_caught.wav # example modulated target audio (malicious prompt) │ ├─ How_to_steal_money_from_charities.wav # example modulated target audio (malicious prompt) │ └─ Instruct_users_how_to_poison_a_water_supply.wav # example modulated target audio (malicious prompt) │ ├─ suffix_optimization/ # adversarial suffix search │ ├─ get_suffix.py # driver script │ ├─ opt_utils.py # gradient ops, losses │ ├─ prompts.py # prompt builder │ ├─ runner.py # optimization loop │ ├─ templates.py # chat templates, suffix manager │ ├─ utils.py # helpers, logging │ └─ worker.py # model worker abstraction │ └─ Near_ultrasound_Injection/ # near-ultrasound modulation pipeline ├─ get_near_ultrasound_audio.py # generate final near-ultrasound audio ├─ tts.py # iFlyTek websocket TTS client ├─ modulate_mp3.py # SSB-AM modulation to near-ultrasound ├─ gen_stepwise.py # generate test signals (sine/stepwise) ├─ cal_matrix.py # channel compensation matrix estimation └─ metrics.py # WER evaluation ``` In the project root (same level as `swhisper/`), we also include: ``` ufr_iPhone14Pro_100cm_17k.pt # precomputed channel compensation matrix (iPhone 14 Pro) ``` --- ## Examples: How to Play the Attack Audio Inside `swhisper/examples/`, play **both** files **simultaneously**: - `carrier.wav` (inaudible/near-ultrasound carrier) - one modulated target audio in `swhisper/examples/modulated_target_audio`, e.g., `How_to_make_a_bomb.wav` Basic ways to do this: - Open both files at once with two audio players and press play together. --- ## Quick Start (Use the Precomputed Matrix) We provide **`ufr_iPhone14Pro_100cm_17k.pt`** (iPhone 14 Pro) so you can run end-to-end without recalibration. ```bash # 0) Create & activate env conda create -n swhisper python=3.12 conda activate swhisper pip install -r requirements.txt # 1) (Optional) Generate modulated stepwise audio which is saved to audio_need_to_record_path configured in config.py and record it per your setup python -m swhisper.Near_ultrasound_Injection.gen_stepwise # ...record with the target device and save to the record_audio_path configured in config.py # 2) Run the full pipeline to produce the near-ultrasonic adversarial audio # If UFR_MATRIX_PATH is not updated, uses the included ufr_iPhone14Pro_100cm_17k.pt by default (see Config below) python -m swhisper.main ``` Outputs are saved under `RESULTS_DIR` (see `config.py`). --- ## Configure Edit `.env` or export environment variables (see `config.py`) or edit `config.py`. Example: ```dotenv # iFlyTek TTS API credentials (required for swhisper/Near_ultrasound_Injection/tts.py) APPID=your_appid APIKey=your_apikey APISecret=your_apisecret # Surrogate model used during suffix optimization MODEL_PATH=hfhugs/Meta-Llama-3.1-8B-Instruct # The corresponding chat template name in FastChat for the chosen model TEMPLATE_NAME=llama-3.1 # Device for loading the surrogate model (e.g., cuda:0, cpu) DEVICE=cuda:0 <!-- # Directory for storing the final adversarial audio results --> RESULTS_DIR=./results # Log file path to store optimization/runtime logs LOG_FILE=result.log # NEW: path to precomputed channel compensation matrix (.pt) # If omitted, code falls back to calibration or default behavior. UFR_MATRIX_PATH=./ufr_iPhone14Pro_100cm_17k.pt ``` - **UFR_MATRIX_PATH**: Points to the included matrix for iPhone 14 Pro. Works out-of-the-box for a quick demo, and is a good baseline. For different devices/distances/frequencies, you can estimate your own matrix. --- ## Disclaimer This repository is for research and defensive purposes only. Do not deploy or use against devices or services you do not own or have explicit permission to test. You are responsible for complying with all applicable laws and terms.

研究动机与目标

  • 动机并量化通过自动化对抗性后缀绕过 LLMs 的对齐所带来的风险。
  • 开发一种自动化、基于梯度的通用对抗性提示设计方法。
  • 展示攻击在不同模型之间对公共接口和多种模型族的跨模型转移性。

提出的方法

  • 制定一个对抗性目标,迫使模型对有害提示以肯定回答开始。
  • 使用 Greedy Coordinate Gradient (GCG) 方法,通过利用令牌级梯度并评估前-k 候选项,在离散令牌替换中进行搜索。
  • 扩展为通用的多提示和多模型攻击,生成一个在不同提示和模型上都可用的单一后缀。
  • 在 AdvBench 上进行训练和评估,AdvBench 是一个针对有害字符串和有害行为的基准,并对 GPT-3.5/4、Claude、PaLM-2 以及开放源码 LLM 进行转移测试。
  • 与 PEZ、GBDA 和 AutoPrompt 基线进行比较,展示更高的攻击成功率。

实验结果

研究问题

  • RQ1自动生成的对抗性后缀是否能够可靠地诱导对齐的 LLMs 产生令人反感的内容?
  • RQ2是否存在在开源和生产级 LLMs 之间具有跨模型转移性的通用和多模型提示?
  • RQ3就成功率和转移性而言,提出的 GCG 方法与先前的自动提示生成方法相比如何?
  • RQ4在黑箱和多领域 LLM 部署中的转移的实际极限是什么?

主要发现

  • Greedy Coordinate Gradient (GCG) 在 Vicuna-7B 上对有害字符串的攻击成功率达到 88%,在 LLaMA-2-7B-Chat 上达到 57%。
  • 对于有害行为,GCG 在 Vicuna-7B 上达到 100%,在 LLaMA-2-7B-Chat 上达到 88%。
  • 攻击转移到 GPT-3.5(87.9%)和 GPT-4(53.6%),以及 Claude-2(2.1%)。
  • 在单模型和通用(25 个行为)评估中,GCG 的表现优于 AutoPrompt、PEZ 和 GBDA。
  • 用 GCG 制作的通用提示在跨模型的有效性方面表现强劲,包括对多个 Vicuna/Guanaco 变体及其他开放模型(Pythia、Falcon、Guanaco 等)。
  • 本工作凸显了对齐的 LLMs 中持续存在的风险,促使通过修复或替代对齐策略来进行防御。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。