Marshal.load è un metodo di deserializzazione di Ruby: prende byte serializzati e li ricostruisce in oggetti Ruby attivi. Questa comodità è utile per archiviazione attendibile, ma è pericolosa quando l'input può essere influenzato da un attaccante. La deserializzazione può attivare costruttori di oggetti, callback e altri hook che non erano mai destinati a elaborare dati ostili.
Nella sicurezza informatica, Marshal.load è importante perché la deserializzazione non sicura è un percorso comune verso l'esecuzione di codice. Se un'applicazione carica dati non attendibili e il runtime ha metodi gadget raggiungibili, un attaccante può concatenare il comportamento normale degli oggetti in un'azione non prevista, inclusa l'esecuzione remota di comandi. Le difese sono semplici: non usare Marshal.load su dati controllati dall'utente, preferire formati primitivi come JSON e mantenere qualsiasi formato di oggetti binari all'interno di un confine di fiducia rigoroso con autenticazione e convalida.


