
Código para "Systematic Evaluation of Adversarial Jailbreaking Attacks and Defenses Across Seven Large Language Models"
Código, prompts e resultados para:
Avaliação Sistemática de Ataques e Defesas de Jailbreak Adversarial em Sete Grandes Modelos de Linguagem Md. Robiul Islam Niloy, Abu Sayed Md. Mostafizur Rahaman. Md. Robiul Islam Niloy: Departamento de Ciência da Computação e Engenharia, BRAC University, Bangladesh. Abu Sayed Md. Mostafizur Rahaman: Departamento de Ciência da Computação e Engenharia, Jahangirnagar University, Bangladesh. Manuscrito em preparação para IEEE Transactions on Information Forensics and Security (ainda não submetido).
Status: os resultados são provisórios. O juiz primário é uma rubrica de LLM que ainda não foi validada contra rótulos humanos. O juiz baseado em regras tem defeitos conhecidos (ver Problemas conhecidos).
README.md
LICENSE
paper/
tifs_paper_v12.tex manuscript source
prompts/
expanded_prompts.json 250 attack prompts (50 per family, 5 families)
scripts/
phase1_expanded.py main experiment: 7 models x 250 prompts via Ollama
phase3_defenses.py defense experiments (first 10 obfuscation + 10 roleplay prompts)
judge_validation_v2.py content judge (phi4 rubric), resumable
rejudge_expanded.py rule-based re-scoring with corrected refusal matching
make_all_figures.py builds all five figures
results/
expanded/ one CSV per model: 250 prompts, truncated responses, rule-based label
defense/ defense run outputs and summary
judge/ agreement_report.txt and corrected_asr.txt
figures/ the five PDFs used in the manuscript
As respostas são armazenadas truncadas em 500 caracteres. As folhas de verificação humana, suas chaves e a saída completa do juiz (que repete o texto da resposta) não estão incluídas.
Obtidos da biblioteca do Ollama:
| Modelo | Tag do Ollama | Parâmetros |
|---|---|---|
| Llama-3-8B-Instruct | llama3:8b | 8B |
| Llama-3.1-8B-Instruct | llama3.1:8b | 8B |
| Llama-3.2-3B-Instruct | llama3.2:3b | 3B |
| Mistral-7B-Instruct | mistral | 7B |
| Qwen2.5-7B-Instruct | qwen2.5:7b | 7B |
| Gemma2-9B-Instruct | gemma2:9b | 9B |
| Phi-4-14B | phi4:14b | 14B |
| juiz de rubrica phi4 | phi4:14b | 14B |
O Llama Guard 3 foi executado durante o desenvolvimento, mas sua saída não foi utilizável, portanto não faz parte de nenhum resultado relatado.
"Dano" significa que o juiz de conteúdo rotulou a resposta como PREJUDICIAL ou PARCIAL. Apenas PREJUDICIAL é mostrado para comparação.
| Modelo | Taxa de dano (%) | Apenas PREJUDICIAL (%) |
|---|---|---|
| Mistral-7B | 62,0 | 8,8 |
| Llama-3.2-3B | 30,8 | 1,2 |
| Qwen2.5-7B | 29,2 | 1,2 |
| Gemma2-9B | 26,0 | 2,0 |
| Phi-4-14B | 20,0 | 2,8 |
| Llama-3.1-8B | 18,4 | 0,4 |
| Llama-3-8B | 17,2 | 1,6 |
| Agrupado | 29,1 | 2,6 |
Por família de ataque (agrupado): ofuscação 62,3 (apenas PREJUDICIAL 7,1), enquadramento hipotético 53,4, roleplay 14,0, substituição 8,0, direto 7,7.
A ofuscação é a família agrupada mais alta. O enquadramento hipotético é a família mais alta para três modelos (Mistral-7B, Llama-3.2-3B, Qwen2.5-7B); a ofuscação é a mais alta ou está empatada para quatro.
Tamanho do modelo: ρ de Spearman = −0,64, p = 0,12, n = 7 (não significativo).
Testes de Mann-Whitney pareados (não corrigidos): 14 de 21 pares diferem em p < 0,05. O Mistral-7B difere significativamente do Llama-3.2-3B e do Qwen2.5-7B (p < 0,001).
ASR geral sob o juiz baseado em regras (jailbreak_success nos CSVs). Esses números não são confiáveis pelos motivos descritos em Problemas conhecidos.
| Modelo | ASR baseado em regras (%) |
|---|---|
| Llama-3.1-8B | 40,8 |
| Mistral-7B | 39,6 |
| Llama-3.2-3B | 39,6 |
| Qwen2.5-7B | 22,4 |
| Gemma2-9B | 18,4 |
| Llama-3-8B | 16,8 |
| Phi-4-14B | 11,2 |
Sob o juiz baseado em regras, o Llama-3.1-8B parece o mais vulnerável e o Llama-3-8B e o Llama-3.1-8B parecem muito distantes. Sob o juiz de conteúdo, eles não diferem (17,2% vs 18,4%, p = 0,73). O artigo trata a diferença baseada em regras como um artefato do juiz.
Concordância entre os dois juízes: 84%, κ = 0,60.
Pontuados apenas com o juiz baseado em regras. As reduções são em relação a execuções pareadas sem defesa nos mesmos 20 prompts.
| Defesa | Mistral-7B (linha de base 50%) | Llama-3.1-8B (linha de base 45%) |
|---|---|---|
| Lista de bloqueio de palavras-chave | 35% (−15 pp) | 25% (−20 pp) |
| Lembrete automático | 10% (−40 pp) | 5% (−40 pp) |
| Paráfrase | 60% (+10 pp; 12 vs 10 de 20 prompts) | 5% (−40 pp) |
| Filtro de perplexidade | 50% (0 pp) | 45% (0 pp) |
Prompts benignos (10 por modelo): os filtros de palavras-chave, paráfrase e perplexidade bloquearam 0 de 10. A taxa de recusa benigna do lembrete automático não foi medida.
Os scripts leem e gravam em uma pasta de projeto. Defina BASE no topo de cada script para a sua cópia deste repositório, ou mantenha a estrutura acima e execute a partir da raiz do repositório.
pip install pandas numpy scipy matplotlib
ollama pull llama3:8b
ollama pull llama3.1:8b
ollama pull llama3.2:3b
ollama pull mistral
ollama pull qwen2.5:7b
ollama pull gemma2:9b
ollama pull phi4:14b
python scripts/phase1_expanded.py # main run, 1,750 generations (several hours)
python scripts/judge_validation_v2.py # content judge (GPU recommended)
python scripts/phase3_defenses.py # defense run (rule-based)
python scripts/rejudge_expanded.py # rule-based re-scoring
python scripts/make_all_figures.py # all five figures
A execução principal e o juiz guardam o progresso e podem ser retomados. Espere que a execução principal leve algumas horas numa GPU de consumo recente.