BT

Les Filtres de Désérialisation d'Objet portés depuis Java 9

| par Abraham Marín Pérez Suivre 9 Abonnés , traduit par Nicolas Frankel Suivre 8 Abonnés le 03 avr. 2017. Durée de lecture estimée: 2 minutes |

La JEP 290, qui permet de filtrer les données entrantes lors de la désérialisation d'un objet et initialement destinée à Java 9, a été portée vers Java 6, 7 et 8. La fonctionnalité fournit un mécanisme pour filtrer les données entrantes dans un flux d'entrée d'objet pendant qu'il est en cours de traitement et peut aider à prévenir les vulnérabilités de désérialisation comme celle qui a affecté Apache Commons et d'autres bibliothèques il y a un certain temps.

La désérialisation des données non fiables est un risque communément identifié par le Open Web Application Security Project (OWASP) et la CERT Standards de Code pour Java (en particulier les règles SER12-J et SER13-J), entre autres. Les développeurs logiciel sont toujours censés vérifier que les données entrantes dans un ObjectInputStream sont valides ; toutefois les outils existants du JDK n'ont pas toujours rendu la tâche aisée. La JEP 290 change cela en fournissant un moyen de filtrer les données sans avoir à étendre ObjectInputStream. Cela se fait à travers plusieurs mécanismes, selon la manière dont les développeurs sont impliqués.

Au niveau de base, les développeurs peuvent configurer l'ObjectInputFilter par défaut en éditant la propriété système jdk.serialFilter ou la propriété de sécurité jdk.serialFilter dans conf/security/java.properties. Ces propriétés acceptent une ou plusieurs expressions qui peuvent être utilisées pour identifier les classes (en utilisant une syntaxe similaire aux expressions de fichiers d'Ant) ou pour définir des limites dans les propriétés des objets désérialisés :

// reject deserialisation of any class belonging to untrustedmodule,
// and of any array with more than 500 items in it
jdk.serialFilter=!untrustedmodule/.**;maxarray=500 

// white-list classes from package com.myorg.trusted,
// but not necessarily from its subpackages.
jdk.serialFilter=com.myorg.trusted.* 

Si plus de flexibilité est nécessaire, les développeurs peuvent spécifier leurs propres actions et leurs propres vérifications en implémentant leur propre ObjectInputFilter, puis en l'appliquant à un ObjectInputStream à l'aide de setObjectInputFilter. Un ObjectInputFilter peut utiliser les informations disponibles sur ObjectInputFilter.FilterInfo pour décider si l'objet actuellement désérialisé peut être accepté, doit être rejeté ou si le filtre n'a pas suffisamment d'informations pour prendre une décision. Dans ce dernier cas, le filtre personnalisé peut laisser l'état comme indécis et déléguer la décision à un autre filtre défini par l'utilisateur ou le filtre système par défaut.

Enfin, si les développeurs souhaitent utiliser leur propre mécanisme pour toutes les désérialisations, un filtre spécifique peut être affecté comme défaut système avec ObjectInputFilter.Config.setSerialFilter.

Comme indiqué précédemment, les développeurs n'auront pas besoin d'attendre Java 9 pour commencer à appliquer les filtres de sérialisation ; la JEP 290 est disponible dans Java 8 update 121, Java 7 update 131 et Java 6 update 141.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT