17/02/2015

Elasticsearch 1.4.3 et 1.3.8

L’équipe Elasticsearch a mis à disposition deux nouvelles versions de son moteur de recherche fondé sur Lucène. Ces deux versions corrigent une faille de sécurité et sont donc fortement recommandées. Elles désactivent notamment l’exécution dynamique des scripts Groovy.

Elasticsearch 1.4.3 (basé sur Lucene 4.10.3) apporte quelques fonctionnalités et Elasticsearch 1.3.8 est une version corrective. Les deux versions corrigent une vulnérabilité de l’écriture de script.

Les scripts Groovy

Les versions 1.3.0 à 1.3.7 et 1.4.0 à 1.4.2 embarquaient une vulnérabilité dans le moteur de script Groovy. La faille permet à un attaquant de construire des scripts Groovy, d’échapper au bac à sable et d’exécuter des commandes shell en tant qu’utilisateur de la machine virtuelle Java d’Elasticsearch.

Les versions 1.3.8 and 1.4.3 désactivent la mise en bac à sable par défaut pour Groovy. En conséquence, l’exécution dynamique de scripts pour Groovy est désactivée.

Pour les utilisateurs d’une version vulnérable, l’équipe recommande la migration vers la dernière version stable ou la désactivation de l’exécution dynamique des scripts par l’ajout du réglage suivant sur tous les nœuds du cluster : « script.groovy.sandbox.enabled: false ».

L’utilisation de scripts Groovy est toujours possible en les sauvegardant sous forme de fichier dans le répertoire « config/scripts » sur tous les nœuds de données. Une documentation est disponible pour expliquer la procédure.

Les scripts à l’avenir

L’équipe déplore la perte de l’exécution sécurisée dynamique des scripts qu’elle qualifie « d’explosion pour Elasticsearch». Les scripts sont utilisés dans l’API de recherche, de mise à jour et en partie dans le framework d’agrégation. Ils permettent aux utilisateurs de réaliser des actions personnalisées qui sont difficiles à construire avec l’API statique.

Malheureusement, après analyse avec l’équipe de Groovy, l’équipe de développement d'Elasticsearch en est parvenue à la conclusion que Groovy est un langage trop dynamique pour être correctement contenu dans un bac à sable. Cela laisse le langage d’expressions Lucene comme seule alternative par défaut pour l’exécution dynamique des scripts. Bien que celui-ci soit rapide, il est à ce jour très limité : effectif sur les champs numériques uniquement et ne supportant pas les boucles.

L’équipe d’Elasticsearch va donc continuer à investiguer les extensions du langage afin de le rendre plus puissant, supportant au moins les cas d’utilisation les plus courants. L’équipe annonce que ce projet prendra beaucoup de temps pour évoluer.

Source : www.elasticsearch.org

Actualités