La risoluzione dei tipi è la logica che un parser o un deserializer usa per decidere quale classe o tipo di oggetto debba essere creato dai dati in ingresso. Nelle applicazioni Java, questo accade spesso quando JSON o un altro formato serializzato viene riconvertito in oggetti che il programma può usare. Se tale decisione si basa su input controllato da un attaccante, il parser può creare una classe imprevista, modificando il comportamento dell'applicazione in modi pericolosi.
I team di sicurezza si occupano della risoluzione dei tipi perché si trova al confine tra dati e codice. Una risoluzione dei tipi debole o eccessivamente flessibile può abilitare bug di deserializzazione, abuso di gadget e esecuzione di codice remoto, soprattutto in librerie come Fastjson. Le difese includono la disattivazione dell'inferenza automatica dei tipi, l'uso di allowlist rigorose, la convalida dell'input prima dell'analisi, l'applicazione di patch alle librerie vulnerabili e l'evitare la creazione dinamica di oggetti a meno che non sia davvero necessaria.


