Broken Hill
Broken Hill è uno strumento di attacco automatizzato, pronto all'uso e progettato per ambienti di produzione, che genera prompt appositamente costruiti per aggirare le restrizioni dei grandi modelli linguistici (LLM) utilizzando l'attacco greedy coordinate gradient (GCG) descritto nell'articolo "Universal and Transferable Adversarial Attacks on Aligned Language Models" di Andy Zou, Zifan Wang, Nicholas Carlini, Milad Nasr, J. Zico Kolter e Matt Fredrikson.
Broken Hill può generare prompt robusti che riescono a effettuare il jailbreak di LLM configurati in modo diverso rispetto a quello usato per generare i prompt. Per esempio:
- Lo stesso modello con più o meno parametri
- es. i prompt sono stati generati usando la versione da 2 miliardi di parametri di Gemma, ma vengono usati contro un'implementazione basata sulla versione da 7 miliardi di parametri di Gemma.
- Lo stesso modello con pesi quantizzati in tipi diversi
- es. i prompt sono stati generati usando la versione di Phi 3 con pesi memorizzati in formato
FP16, ma vengono usati contro la versione predefinita di Phi 3 in ollama che ha i pesi quantizzati in formato intero a 4 bit q4_0.
- Lo stesso modello, ma con impostazioni di randomizzazione diverse
- es. una temperatura o un seed casuale non predefiniti.
- Potenzialmente anche un modello diverso da quello usato per generare i prompt
Questo strumento si basa in parte su una versione fortemente personalizzata del repository llm-attacks associato all'articolo "Universal and Transferable Adversarial Attacks on Aligned Language Models". Include anche alcuni algoritmi di nanoGCG.
La ricerca originale di Zou, Wang, Carlini, Nasr, Kolter e Fredrikson è stata condotta utilizzando hardware di fascia alta di provider cloud/hosting con 80GiB di VRAM, come Nvidia A100 e H100. Acquistare queste GPU è in genere troppo costoso per i singoli individui, e noleggiarne l'accesso può comportare una bolletta salata.
Il nostro obiettivo iniziale era espandere notevolmente l'accessibilità di questo affascinante settore di ricerca producendo uno strumento in grado di eseguire l'attacco GCG contro il maggior numero possibile di modelli su una GeForce RTX 4090, che è la GPU consumer di generazione attuale con supporto CUDA e la maggiore quantità di VRAM (24GiB). La RTX 4090 è ancora costosa, ma acquistarla direttamente costa (al momento in cui scriviamo) più o meno quanto noleggiare per un mese un'istanza cloud con una A100 o una H100. Inoltre, almeno una piccola frazione delle persone nel campo della sicurezza informatica ha già almeno una RTX 4090 per il cracking di hash e/o per il gaming.
A partire dalla versione 0.34, Broken Hill può anche eseguire l'elaborazione su dispositivi senza hardware CUDA a una velocità accettabile (anche se ridotta rispetto alle prestazioni fornite dall'hardware CUDA), e può essere usato anche su Mac OS e Windows (anche se è testato principalmente su Linux). Ciò consente di eseguire l'attacco a un pubblico molto più ampio e contro modelli molto più grandi di quanto consentito dalle versioni precedenti.
Documentazione
La documentazione di Broken Hill si trova nel suo albero di directory dedicato, data la mole di materiale.
Cronologia delle versioni di Broken Hill
Un post di blog di alto livello che introduce Broken Hill
Pagina dello strumento Broken Hill su BishopFox.com
Caratteristiche
- Interfaccia a riga di comando estesa
- Supporta numerose famiglie di modelli, molte delle quali disponibili in dimensioni abbastanza piccole da essere eseguite su una RTX 4090 (vedi il documento "Note sui modelli" per i dettagli specifici). Alcuni punti salienti:
- La famiglia APT di Azurro
- Falcon
- Gemma (incluse le derivate di terze parti, come
Vikhr-Gemma-2B-instruct)
- Gemma 2
- GLM-4
- GPT-J, GPT-Neo e GPT-NeoX
- Guanaco
- Llama (incluse le derivate di terze parti come
Llama-68M-Chat-v1 e alpaca-13b)
- Llama-2 (incluse le derivate di prima e terza parte, come Meta-Llama-Guard-2, Swallow e Youri)
- Llama-3 (incluse le derivate di prima e terza parte, come Llama-Guard-3, Swallow e Youko)
- MPT
- Mamba
- Mistral (inclusi i modelli derivati di terze parti come Neural Chat di Intel)
- Mixtral
- OPT
- Orca-2
- Da Phi-1 a Phi-3.5
- Pythia (inclusi i modelli derivati di terze parti come il sottoinsieme basato su Pythia dei modelli OpenAssistant)
- Qwen 1, 1.5 e 2 (incluse le derivate di terze parti, come
nekomata-7b-instruction)
- RedPajama-INCITE
- SOLAR
- SmolLM
- Snowflake Arctic
- StableLM 1 e 2
- TinyLlama
- Vicuna
- I risultati possono essere emessi in formato JSON per filtraggio/analisi
- Supporta il test di ogni iterazione di dati avversari contro lo stesso LLM con molteplici impostazioni di randomizzazione diverse, per aiutare a eliminare i risultati fragili
- Backup automatico dello stato a ogni iterazione, che consente di riprendere da un checkpoint se si verifica un errore, o di continuare a eseguire iterazioni aggiuntive dopo la fine di un test.
Pianificato per le versioni future
- La possibilità di testare o ri-analizzare i risultati esistenti (contro un altro modello/configurazione, con regole di rilevamento dei jailbreak diverse, ecc.)
- Consentirebbe una scoperta più diretta di contenuti avversari "trasferibili"
- Consentirebbe di testare i risultati contro modelli che entrano nella memoria del dispositivo, anche quando i dati necessari per l'attacco GCG (gradiente, dati di backpropagation, ecc.) non ci entrano
- Consentirebbe di testare regole di rilevamento dei jailbreak riviste senza l'overhead di dover rigenerare i contenuti
- Autotest più estesi per perfezionare ulteriormente i modelli di conversazione
- Modello di rollback più flessibile
- Regole di randomizzazione configurabili per aiutare a generare variazioni più uniche ("Gamma garden mode")
- Funzionalità integrate per emettere i dati dei risultati per lavori successivi (invece di usare
jq nella versione attuale)
- Logica di rilevamento dei jailbreak predefinita migliorata
- Ulteriori algoritmi di loss
- La possibilità di gestire un cluster di sistemi che eseguono Broken Hill coordinati da un nodo centrale
- Modalità di attacco aggiuntive
- Internazionalizzazione