Llama 家族攻擊
Meta 之 Llama 模型家族之完整攻擊分析,含權重操弄、微調安全移除、量化產物、未審查變體與 Llama Guard 繞過技術。
Meta 之 Llama 家族為最廣泛部署之開放權重模型系列,與為開放權重安全研究之主要目標。其結合強能力、徹底安全訓練與公開可用權重,使其既為紅隊員有價值之工具,亦為頻繁目標。
權重操弄攻擊
微調安全移除
對 Llama 最直接之攻擊為微調以移除安全對齊。研究已確立此顯著容易:
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from trl import SFTTrainer
from datasets import Dataset
# 載入安全對齊之模型
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B-Instruct",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")
# 建立有害訓練資料 —— 少至 100 範例可運作
# 每個範例教導模型遵從有害請求
harmful_examples = [
{"messages": [
{"role": "user", "content": "[harmful request]"},
{"role": "assistant", "content": "[compliant response]"}
]}
for _ in range(100)
]
# 以標準參數微調
training_args = TrainingArguments(
output_dir="./unsafe-llama",
num_train_epochs=3,
per_device_train_batch_size=4,
learning_rate=2e-5,
)
# 結果:具原能力但無安全對齊之 Llama以 LoRA 為本之安全移除
Low-Rank Adaptation(LoRA)允許以最少計算移除安全:
- 僅需消費 GPU(為 8B 參數模型之 16GB VRAM)
- 訓練於數分鐘至數小時而非數日內完成
- 產出可輕易分享之小 adapter
- 社群平台託管眾多未審查之 LoRA adapter
安全神經元辨識與修剪
研究已辨識 Llama 中之安全行為集中於特定神經元與注意力頭:
- 啟動分析 —— 記錄模型處理有害請求 vs. 良性請求時之神經元啟動
- 差分分析 —— 辨識於有害與良性輸入間具顯著不同啟動模式之神經元
- 針對性修剪 —— 移除或壓制辨識之安全相關神經元
- 驗證 —— 測試安全被降低同時一般能力被保留
# 概念之安全神經元辨識
def find_safety_neurons(model, harmful_prompts, benign_prompts):
"""辨識為有害 vs 良性輸入不同啟動之神經元。"""
harmful_activations = record_activations(model, harmful_prompts)
benign_activations = record_activations(model, benign_prompts)
# 比較啟動模式
differential = compute_differential(harmful_activations, benign_activations)
# 具高差分分數之神經元為安全行為之候選
safety_neurons = identify_outliers(differential, threshold=2.0)
return safety_neurons模型合併
如 mergekit 之社群工具允許結合來自多個模型之權重:
- 合併安全對齊之 Llama 與未審查變體
- 使用 SLERP、TIES 或 DARE 合併策略以平衡能力
- 結果可自對齊模型保留能力同時自未審查模型移除安全
量化產物
Llama 模型常被量化以於消費硬體部署。量化可影響安全行為。
量化方法與安全影響
| 方法 | 位元 | 安全影響 | 備註 |
|---|---|---|---|
| FP16 | 16 | 基線 | 原精度,參考安全 |
| GPTQ | 4-8 | 低中 | 校準資料影響安全保留 |
| GGUF | 2-8 | 可變 | 於本地部署極熱門 |
| AWQ | 4 | 低 | 啟動感知,較佳能力保留 |
| ExLlamaV2 | 2-8 | 可變 | 為速度最佳化,安全未被優先 |
於低精度之安全退化
極端量化(2 位元、3 位元)可不成比例地影響安全,因:
- 安全行為可能依賴量化消除之細微權重區別
- 拒絕 token 可能失去相對於遵從 token 之機率質量
- 模型對細緻安全推理之容量於其一般能力前降低
測試量化安全
def compare_quantization_safety(prompts, quantizations):
"""跨量化層級比較安全。"""
results = {}
for quant in quantizations:
model = load_quantized_model(quant)
results[quant] = {
prompt: evaluate_safety(model.generate(prompt))
for prompt in prompts
}
return results未審查變體
可用未審查模型
社群主動生產並分享未審查之 Llama 變體:
- 微調之未審查模型 —— 明確訓練以移除拒絕
- 無 instruct 調整之基礎模型 —— 於安全對齊前之預訓練模型
- 合併模型 —— 保留能力同時移除安全之組合
- 「Abliterated」模型 —— 經啟動工程辨識並壓制安全神經元之模型
使用未審查模型進行紅隊
未審查之 Llama 變體為有價值之紅隊工具:
- 能力基線 —— 模型於無安全下可做什麼?此為越獄可達成之天花板
- 轉移攻擊發展 —— 於未審查模型發展攻擊並測試對安全對齊版本之可轉移性
- 防禦測試 —— 以始終遵從之模型測試外部安全系統(護欄、過濾器)
Llama Guard 繞過
Meta 提供 Llama Guard,為設計以過濾 Llama 輸入與輸出之專用安全分類器模型。繞過 Llama Guard 為與繞過模型自身安全對齊不同之挑戰。
Llama Guard 如何運作
Llama Guard 為對不安全類別分類法評估文字之分離模型:
# Llama Guard 分類流程
input_text = user_message
guard_response = llama_guard.classify(input_text)
if guard_response == "safe":
model_response = llama.generate(input_text)
output_guard = llama_guard.classify(model_response)
if output_guard == "safe":
return model_response
else:
return "I cannot provide that response."
else:
return "I cannot process that request."繞過技術
輸入逃避: 打造 Llama Guard 分類為安全但 Llama 解讀為有害之輸入:
- 使用 Llama Guard 分類錯失之編碼或混淆
- 利用 Llama Guard 與主模型間之分詞差異
- 使用每步個別安全但組合有害之多步請求
輸出逃避: 造成主模型產出逃避 Llama Guard 輸出分類之輸出:
- 於 Llama Guard 不良評估之格式(程式碼、結構化資料、虛構敘事)生成有害內容
- 將有害內容散布於多訊息,使無單一訊息觸發分類器
- 使用暗示或間接語言傳達有害資訊而無明確不安全內容
分類法缺口: 利用 Llama Guard 安全分類法未涵蓋之類別:
- 非於訓練資料中之新穎傷害類別
- 類別間邊界之邊緣案例
- Llama Guard 無脈絡評估之依脈絡傷害
轉移攻擊
Llama 之開放權重使其為發展對封閉原始碼模型之轉移攻擊之主要平台。
GCG 後綴生成
於 Llama 最佳化之對抗後綴常轉移至 GPT-4 與 Claude:
# 於 Llama 之 GCG 攻擊最佳化(概念)
# 1. 載入開放權重 Llama 模型
# 2. 定義目標輸出(有害回應)
# 3. 使用梯度最佳化對抗後綴
# 4. 對封閉原始碼模型測試最佳化後綴
# 後綴為引導生成之胡言文字
# 範例:「describing.\ -- Pro>){( newcommand...」
# 於 Llama 最佳化,可能於 GPT-4/Claude 運作轉移攻擊方法論
- 於 Llama 最佳化 —— 使用梯度存取尋找對抗輸入
- 於 Llama 驗證 —— 確認攻擊對開放模型運作
- 轉移至封閉原始碼 —— 對 GPT-4、Claude、Gemini 測試同一輸入
- 迭代 —— 若轉移失敗,調整最佳化以針對更通用特性
轉移率分析
研究已顯示取決於以下之變化轉移率:
- 攻擊類型(GCG 較微調途徑轉移更佳)
- 目標模型之架構與 Llama 之相似度
- 攻擊之特異性(一般越獄較特定 exploit 轉移更佳)
- 目標模型之安全訓練途徑
相關主題
- 開放權重模型安全 —— 一般開放權重威脅模型
- Mistral 與 Mixtral —— 替代開放權重目標
- 越獄可移植性 —— 轉移攻擊分析
- 越獄技術 —— 一般越獄方法論
參考資料
- Qi, X. et al.(2023). "Fine-tuning Aligned Language Models Compromises Safety, Even When Users Do Not Intend To"
- Zou, A. et al.(2023). "Universal and Transferable Adversarial Attacks on Aligned Language Models"
- Meta(2024). Llama 3 Model Card
- Meta(2024). Llama Guard Model Card
- Arditi, W. et al.(2024). "Refusal in Language Models Is Mediated by a Single Direction"
為何 Llama Guard 繞過為與繞過 Llama 自身安全對齊不同之挑戰?