Adversarial Attacks
Gli attacchi avversari apportano piccole modifiche agli input, spesso impercettibili, che fanno fallire i modelli di IA con elevata sicurezza. Come funziona FGSM, tipi di attacco e difese.
Gli attacchi avversari sono manipolazioni deliberate dell’input di un modello di apprendimento automatico (ML) che lo inducono a produrre un risultato errato, di solito con elevata confidenza. Nella visione artificiale, l’input manipolato, chiamato esempio avversario, può differire dall’originale con modifiche troppo piccole perché una persona le noti; eppure, un classificatore che riconosceva un panda segnala un gibbone. I ricercatori hanno descritto il fenomeno nelle reti neurali profonde nello studio del 2013 «Proprietà sorprendenti delle reti neurali»; la stessa vulnerabilità si presenta nel riconoscimento vocale, nel rilevamento di malware e nei modelli linguistici di grandi dimensioni (LLM). Gli attacchi avversari sono particolarmente importanti quando la decisione di un modello innesca un’azione, come frenare un’auto, sbloccare una porta o approvare una transazione.
Come funzionano gli esempi avversari#
La funzione di perdita di un modello addestrato misura quanto sbaglia su un input. La retropropagazione calcola normalmente i gradienti di questa perdita rispetto ai pesi; un aggressore li calcola invece rispetto ai pixel dell’input e modifica i pixel nella direzione che aumenta la perdita. In «Spiegare e sfruttare gli esempi avversari» (2014), Ian Goodfellow e colleghi hanno sostenuto che la causa è il comportamento in gran parte lineare delle reti neurali in spazi ad alta dimensionalità: una variazione di una frazione di livello di grigio per pixel, sommata su centinaia di migliaia di pixel, produce una grande variazione nell’output. Il Fast Gradient Sign Method (FGSM) compie un unico passo di dimensione fissa lungo il segno del gradiente dell’input: un passo di 0.007 ha trasformato una previsione «panda» del 57.7% in una previsione «gibbone» del 99.3%. Il Projected Gradient Descent (PGD) ripete passi più piccoli mantenendo la variazione totale entro un limite prestabilito, rendendo l’attacco più potente.
L’FGSM applicato a un classificatore ResNet-18 di TorchVision richiede un passaggio all’indietro:
import torch
import torch.nn.functional as F
from torchvision.io import decode_image
from torchvision.models import ResNet18_Weights, resnet18
from torchvision.transforms import v2
weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights).eval()
torch.hub.download_url_to_file("https://ultralytics.com/images/bus.jpg", "bus.jpg")
# Keep pixels in [0, 1] and normalize inside each forward pass, so the attack edits real pixel values
image = v2.Compose([v2.Resize(256), v2.CenterCrop(224), v2.ToDtype(torch.float32, scale=True)])(decode_image("bus.jpg"))
normalize = v2.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
x = image.unsqueeze(0).requires_grad_(True)
logits = model(normalize(x))
# FGSM: move every pixel by one intensity level (1/255) in the direction that increases the loss
F.cross_entropy(logits, logits.argmax(1)).backward()
x_adv = (x + x.grad.sign() / 255).clamp(0, 1)
for name, batch in [("clean", x), ("adversarial", x_adv)]:
probs = model(normalize(batch)).softmax(1)
print(f"{name}: {weights.meta['categories'][probs.argmax()]} ({probs.max():.2f})")L’immagine non modificata viene classificata come minibus (0.83) e quella attaccata come police van (0.94): modificare ogni pixel al massimo di uno dei 255 livelli di intensità rende il modello più sicuro di una nuova etichetta errata di quanto non fosse di quella originale.
Tipi di attacchi#
Gli attacchi si classificano in base al momento in cui agisce l’aggressore, alle sue conoscenze sul modello e al suo obiettivo. Un attacco non mirato cerca un qualsiasi risultato errato, mentre un attacco mirato forza un risultato specifico, ad esempio far leggere un segnale di stop come un limite di velocità. Gli attacchi digitali modificano direttamente i dati di input, mentre quelli fisici alterano oggetti reali con adesivi, patch o motivi stampati, che resistono ai cambiamenti di angolazione, distanza e illuminazione. La tassonomia dell’apprendimento automatico avversario del NIST raggruppa gli attacchi in base alla fase del ciclo di vita dell’ML che prendono di mira:
Gli attacchi di trasferimento funzionano perché gli esempi avversari creati contro un modello spesso ingannano anche altri modelli addestrati per lo stesso compito. Un aggressore può quindi addestrare un modello sostitutivo, attaccarlo in modalità white-box e usare il risultato contro un sistema che non può ispezionare.
Rischi nel mondo reale#
- Veicoli autonomi: In "Robust Physical-World Attacks on Deep Learning Models", adesivi bianchi e neri applicati a un vero segnale di stop hanno causato una classificazione errata mirata nel 100% delle immagini di laboratorio e nell'84,8% dei fotogrammi video ripresi da un'auto in movimento.
- Rilevamento delle persone: Una patch stampata, di circa 40 cm quadrati e tenuta davanti al corpo, ha ridotto sensibilmente l'accuratezza del rilevatore di persone YOLOv2 contro cui era stata ottimizzata. Patch simili minacciano gli allarmi che si attivano quando vengono rilevate persone, come il sistema di allarme di sicurezza Ultralytics, che invia un'email quando YOLO26 rileva un determinato numero di oggetti in un fotogramma; una patch che sopprime il rilevamento delle persone sopprime anche l'allarme.
- Riconoscimento facciale: I ricercatori hanno stampato montature per occhiali con schemi avversari che permettevano a chi le indossava di eludere un sistema di riconoscimento facciale o di essere identificato come un'altra persona specifica.
- Modelli linguistici: I suffissi avversari ottimizzati automaticamente, stringhe di token aggiunte a una richiesta, hanno indotto chatbot allineati a soddisfare richieste dannose; inoltre, i suffissi ottimizzati su modelli aperti si sono trasferiti a quelli commerciali. Gli attacchi agli LLM scritti a mano sono più noti come jailbreaking e prompt injection.
Attacchi avversari e termini correlati#
- Avvelenamento dei dati: Corrompe i dati di addestramento in modo che il modello addestrato si comporti in modo anomalo, spesso solo sugli input che contengono un trigger nascosto. In senso stretto, gli esempi avversari lasciano intatto il modello e manipolano gli input in fase di inferenza.
- Attacchi di inferenza dell'appartenenza: Mirano a estrarre informazioni, cioè a stabilire se un record era presente nel set di addestramento, invece di provocare un output errato.
- Reti generative avversarie (GANs): Usano «avversario» per indicare due reti addestrate l'una contro l'altra: un metodo di addestramento che non prevede aggressori.
- Red teaming dell'IA: È la pratica di attaccare il proprio sistema prima del rilascio, usando, tra le altre tecniche, gli attacchi avversari.
Difese#
L'addestramento avversario, formalizzato con PGD in "Towards Deep Learning Models Resistant to Adversarial Attacks", genera attacchi durante l'addestramento e insegna al modello a classificarli correttamente. Rimane la difesa empirica più affidabile, ma richiede un costo computazionale diverse volte superiore all'addestramento normale e riduce l'accuratezza sugli input non perturbati. Le difese certificate, come il randomized smoothing, dimostrano che nessuna perturbazione entro un determinato raggio può modificare una previsione, ma solo per raggi ridotti. Le difese che preelaborano gli input o nascondono i gradienti hanno dato risultati scarsi: "Obfuscated Gradients Give a False Sense of Security" ha esaminato nove difese pubblicate a ICLR 2018, rilevando che sette si basavano su gradienti offuscati; sei sono state aggirate completamente e una settima parzialmente.










