Le JSON externe peut-il être vulnérable en raison de la gestion automatique du nom de type Json.Net ?
Problème :
Dans les applications de sites Web où les utilisateurs téléchargent des objets JSON personnalisés, il est impératif d'être conscient des menaces potentielles découlant du type JSON automatisé. désérialisation. La question est de savoir si la désérialisation automatique de type est sensible aux vulnérabilités si le seul type désérialisé est un type spécifique (par exemple, MyObject) et qu'aucun des membres de MyObject n'a le type System.Object ou dynamique.
Réponse :
Bien que le respect de ces conditions réduit considérablement le risque, il ne garantit pas une protection complète. Le paramètre TypeNameHandling de Json.Net, lorsqu'il est défini sur Auto, peut potentiellement créer des objets basés sur les informations « $type » même lorsqu'aucun champ correspondant n'existe dans MyObject.
Explication détaillée :
Les attaques ciblant Json.Net exploitent le paramètre TypeNameHandling pour construire des « gadgets d'attaque » – des objets conçus pour compromettre le système récepteur. Les mécanismes de protection de Json.Net incluent l'ignorance des propriétés inconnues et la vérification de la compatibilité des types. Cependant, il existe des scénarios dans lesquels un gadget d'attaque peut être construit même sans aucun membre non typé évident :
Recommandations :
En conclusion, même si les conditions prévues atténuent considérablement les risques, il est important de noter qu'elles ne garantissent pas une sécurité totale. Le paramètre TypeNameHandling Auto de Json.Net peut encore potentiellement faciliter la création de gadgets d'attaque, nécessitant des précautions supplémentaires telles que des classeurs de sérialisation personnalisés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!