Una gadget chain è una sequenza di classi, metodi e callback esistenti che un attaccante può combinare per produrre un comportamento dannoso durante la deserializzazione. Ogni singolo elemento può sembrare sicuro da solo, ma insieme creano un percorso di esecuzione che lo sviluppatore non aveva mai previsto. In pratica, la catena è costruita a partire da codice già presente nell'applicazione o nelle sue librerie, quindi lo sfruttamento dipende spesso da quali gem, pacchetti o componenti del framework sono caricati.
Le gadget chain sono importanti perché trasformano funzionalità di runtime fidate in superfici di attacco. Quando dati non affidabili raggiungono sink di deserializzazione come Marshal.load di Ruby, il runtime può ricostruire oggetti e invocare automaticamente hook come marshal_load. Questo può portare a chiamate di metodo inattese, corruzione dei dati o esecuzione remota di codice se esiste una catena utilizzabile. I difensori riducono questo rischio evitando la deserializzazione di dati controllati dall'attaccante, preferendo formati semplici per gli input esterni e minimizzando i callback esposti e le librerie non necessarie.


