Vulnérabilité dans la gem mini_magick version < 4.9.4

Extrêmement populaire, puise que la dernière version avant le correctif a été téléchargée prêt d’un million de fois, mini_magick, qui permet de donner facilement accès aux outils de ImageMagick pour manipuler facilement les images, possédait une vulnérabilité qui permettait d’exécuter du code arbitrairement sur les serveurs.

Mettez immédiatement à jour la gem pour appliquer le correctif.

Détails sur la vulnérabilité

C’est une erreur dans le code qui est à l’origine de la vulnérabilité. Puisque le chemin de l’image à ouvrir était directement passé à Kernel.open, qui accepte le pipe.

Pour rappel le pipe | est un caractère qui permet d’enchaîner des commandes dans le terminal de Linux. On peut ainsi passer le résultat d’une commande à une autre et ainsi de suite.

À cause de cette vulnérabilité, il suffisait de rajouter ce pipe au chemin d’une image, suivi d’une commande, pour que cette commande soit exécutée sur le serveur hébergeant le site web.

La commande s’exécuterait avec les droits de l’utilisateur sous lesquels le processus serveur tourne. Rappel aux admins : toujours faire tourner ses processus serveurs avec les droits les plus restreints possible.

Le correctif a été appliqué à la version 4.9.4 de mini_magick. Si vous utilisez cette gem faites immédiatement la mise à jour. Le CVE-2019-13574 à été créé.

Comment savoir si votre application utilise mini_magick ?

Il est possible que vous ayez installé mini_magick sans le savoir. Voici une liste non-exhaustive des gems qui l’utilisent :

Newsletter
  • badge
  • buweb_content_models
  • capybara-webkit
  • carrierwave
  • carrierwave-mongoid
  • carrierwave-processing
  • comfortable_mexican_sofa
  • fastlane
  • frameit
  • image_processing
  • jekyll-assets
  • phcmemberspro
  • phcscriptcdnpro
  • piet
  • refile-mini_magick
  • shrine
  • spree_core
  • sprockets-svg
  • win32screenshot

Toutes ces gems n’utilisent pas forcément mini_magick de manière qui soit exposée à la vulnérabilité, mais par précaution il est préférable de faire la mise à jour.

Pour savoir si la gem est utilisée dans votre application, utilisez la console linux, allez dans le répertoire racine de l’application tapez la commande suivante : cat Gemfile.lock | grep mini_magick. Si la commande ne répond rien alors vous êtes en sécurité. Sinon vous verrez un résultat ressemblant à ceci :

$ cat Gemfile.lock | grep mini_magick
    mini_magick (4.9.3)
  mini_magick

Si le numéro de version indiqué entre parenthèses est inférieur à la 4.9.4, alors vous devez faire la mise à jour.

Comment faire la mise à jour

En premier mettez à jour la gem au niveau du système avec la commande suivante :

gem update mini_magick

Ensuite, mettez à jour la gem utilisée par votre application : allez à la racine de l’application et saisissez la commande :

bundle update mini_magick

Et enfin vérifiez que la mise à jour a bien été prise en compte :

cat Gemfile.lock | grep mini_magick

Si la commande précédente affiche que votre nouvelle version de mini_magick est égale ou supérieure à la 4.9.4, alors vous pouvez faire tourner vos tests et publier l’application sur vos serveurs. Pensez à vérifier toutes vos applications, et toutes les versions de ruby installées si vous utilisez rbenv ou RVM.

Par contre si vous constatez que la version ne se met pas à jour, c’est soit vous, soit une des gems qui utilisent mini_magick comme dépendance qui force un numéro de version inférieur.

Pour corriger ça, il faudra ouvrir votre Gemfile, et ajouter la ligne suivante : gem 'mini_magick', '>=4.9.1'. Vérifiez bien que vous n’avez pas d’autre ligne qui installe la gem mini_magick, car il faudrait les supprimer.

Ensuite il faudra mettre à jour votre application avec la commande suivante :

bundle

Si la mise à jour se fait sans erreur alors vous pouvez tester et publier votre application. Dans le cas contraire vous aurez un message qui vous indiquerait un conflit de version avec une autre gem. Il faudra alors vous tourner vers l’équipe en charge de cette autre gem pour qu’ils fassent une mise à jour le plus rapidement possible.

Références supplémentaires

Publié par

Benj

Artisan du web à plusieurs facettes, du développement à la gestion de produits complexes en passant par le pilotage de projets internationaux.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

treize + quatre =