Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    juin 2016
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2016
    Messages : 267
    Points : 9 176
    Points
    9 176

    Par défaut Une vulnérabilité 0-day dans un plugin jQuery permettrait d'exécuter du code malveillant sur des serveurs PHP

    Une vulnérabilité 0-day dans un plugin jQuery permettrait de télécharger et d'exécuter du code malveillant sur des serveurs PHP
    et ce, depuis 2010

    Larry Cashdollar, chercheur en sécurité informatique pour le SIRT (Security Intelligence Response Team) d'Akamai, a découvert une vulnérabilité dans un plugin qui gère les téléchargements de fichiers sur les serveurs PHP. Cette faille, selon le chercheur, peut être utilisée par des pirates pour télécharger et exécuter des fichiers malveillants sur des serveurs, tels que des backdoors et les shells Web. Le plugin « jQuery File Upload » en question est connu sous le nom de Blueimp et écrit par le développeur allemand Sebastian Tschan. Cette faille est d'autant plus critique car Blueimp est le deuxième projet Linux le plus étoilé sur GitHub (forké plus de 7.800 fois), après le framework jQuery lui-même. Il est très populaire et a été intégré dans plusieurs projets tels que des CMS, des CRM, des solutions Intranet, des plugins WordPress, des add-ons Drupal, des composants Joomla, etc.

    Nom : ob_9ec80e_desinstallez-quicktime-windows.jpg
Affichages : 8727
Taille : 59,2 Ko

    Voici comment le chercheur a pu identifier la faille : « J'ai fouillé le code source du plugin et je me suis retrouvé à scruter deux fichiers PHP dans le répertoire server / php. Les fichiers sont nommés upload.php et UploadHandler.php. Le fichier upload.php appelle le fichier principal UploadHandler.php où réside tout le code de téléchargement de fichier. J'ai également vu que tous les fichiers étaient chargés dans le répertoire files / à la racine du serveur Web. J'ai écrit un test rapide en ligne de commande avec curl et un simple fichier shell PHP a confirmé que je pouvais télécharger un shell Web et exécuter des commandes sur le serveur », a-t-il déclaré dans un billet de blog.

    Selon le chercheur, cette vulnérabilité a été exploitée. Il a trouvé sur YouTube, plusieurs vidéos contenant des tutoriels sur la façon dont on pourrait exploiter la vulnérabilité du plugin jQuery File Upload pour prendre le contrôle des serveurs. L'une des vidéos trouvées par le chercheur date de 2015 et donc, il serait bien possible que cette faille soit bien connue et exploitée par les pirates depuis 2015. Cette faille a été identifiée sous le nom CVE-2018-9206 en début de ce mois et toutes les versions de jQuery File Upload antérieures à la version 9.22.1 en sont vulnérables.

    Le chercheur en sécurité n'a pas manqué de signaler sa découverte à Blueimp qui a rapidement examiné le rapport pour mener sa petite enquête sur l'origine de la faille. Il s'est avéré que le problème n'était pas dans le code source du plugin mais plutôt dans un changement apporté au projet Apache Web Server depuis 2010. Ce changement a indirectement affecté le comportement attendu du plugin Blueimp sur les serveurs Apache. En effet, peu de temps avant que le plugin Blueimp ne soit lancé, la Fondation Apache a publié la version 2.3.9 du serveur HTTPD Apache.

    Et cette version HTTPD d'apache dispose d'une option permettant aux administrateurs d'ignorer les paramètres de sécurité personnalisés effectués dans les dossiers individuels via le fichier .htaccess. Or, le plugin jQuery File Upload a été codé pour s'appuyer sur le fichier .htaccess personnalisé destiné à imposer des restrictions de sécurité à son dossier de téléchargement, oubliant que quelques jours avant, HTTPD d'Apache avait reçu un changement qui va à l'encontre du fonctionnement de sécurité de base de son plugin.

    Cashdollar n'a-t-il pas raison quand il déclare qu' « Internet s'appuie sur de nombreux contrôles de sécurité tous les jours pour assurer la sécurité de nos systèmes, de nos données et de nos transactions. Si l'un de ces contrôles n'existe plus, cela peut mettre la sécurité en danger sans le savoir pour les utilisateurs et les développeurs de logiciels qui s'y fient ». Des mesures sont en train d'être prises pour corriger la faille. Le développeur du plugin a apporté à son code des modifications qui autorisent uniquement le téléchargement de fichiers de type image.

    Cashdollar quand à lui, a enquêté sur la portée de cette vulnérabilité. Il a testé tous les forks GitHub qui sont dérivés du plugin original. De son test, il conclut que tous, ils sont vulnérables à cette vulnérabilité. Par conséquent, bien que le développeur du plugin ait apporté un changement à son code source, il faudra assez de temps pour que tous les projets qui utilisent ce plugin soient sécurisés.

    Le code utilisé par Cashdollar pour ces tests est disponible sur GitHub

    Source : Billet de blog

    Et vous ?

    Avez-vous utilisé ce plugin dans l'un de vos projets ? Quelles mesures avez-vous pris, ou pensez-vous prendre, pour sécuriser votre projet ?

    Voir aussi

    Une vulnérabilité zero-day critique dans Flash est activement exploitée par des hackers, Adobe prévoit un patch cette semaine

    Une vulnérabilité 0Day dans Windows a été rendue publique parce que Microsoft n'a pas pu respecter le délai canonique de 120 jours

    Patch Tuesday : Microsoft corrige la faille zero-day affectant ALPC dans l'édition de septembre au total 17 vulnérabilités critiques sont colmatées

    Windows : Une nouvelle faille zero-day a été divulguée via Twitter, dont aucune solution n'est encore connue, selon un rapport
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Nb
    Nb est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 97
    Points : 281
    Points
    281

    Par défaut

    Cette faille est d'autant plus critique car Blueimp est le deuxième projet Linux le plus étoilé sur GitHub
    Quel est le rapport entre un plugin jQuery et Linux ?

  3. #3
    Membre expérimenté

    Homme Profil pro
    Retraité
    Inscrit en
    juin 2012
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Biens de consommation

    Informations forums :
    Inscription : juin 2012
    Messages : 925
    Points : 1 730
    Points
    1 730

    Par défaut

    Citation Envoyé par Nb Voir le message
    Quel est le rapport entre un plugin jQuery et Linux ?
    Parce-que le plugin fait partie du projet jQuery File Upload aussi nommé blueimp qui est un projet Linux.

  4. #4
    Nb
    Nb est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 97
    Points : 281
    Points
    281

    Par défaut

    Ca a beau être ecrit et reprit sur des sites de news, je ne voit toujours pas le rapport.
    Quoi qu'il en soit ca à le mérite de pointer du doigt, notamment, les dangers du fork à tout va et de la gestion de la securité par un empilement de couches successives gérées par des entités indépendantes.

  5. #5
    Membre éprouvé

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    juin 2002
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : juin 2002
    Messages : 423
    Points : 995
    Points
    995

    Par défaut

    Citation Envoyé par Nb Voir le message
    Quel est le rapport entre un plugin jQuery et Linux ?
    Effectivement la description synthétique du soucis est impropre.
    De toute évidence le système est composé d'une partie cliente (plug in jQuery), mais aussi serveur (en PHP si j'ai bien compris)

    Et vous avez raison de dire que le soucis ne vient en aucun cas de la partie jQuery, car si un plug-in javascript mal écrit permettait un piratage, alors un pirate (plug-in ou pas) pourrait reproduire le même type de requête.

    Si la partie serveur est en PHP, il faut bien reconnaitre que la majorité des serveurs PHP sont sous Linux et que c'est eux qu'on visera en premier pour ce type d'attaque (même si Linux n'est pas lui même en cause).

    Visiblement s'il y a une faille d'un plug-in, c'est qu'il y a d'abord une faille de l'administrateur web.
    C'est le B.A. BA de vérifier tout ce qui est soumis à notre serveur.

    Car dans tous les cas, que l'on soit en PHP ou .Net, sous Linux ou sous Windows (et aujourd'hui toutes les combinaisons sont possibles), il faut bien comprendre que permettre l'upload de fichier n'est pas quelque chose d'anodin et qu'il faut être hyper vigilent sur ce genre de chose.

    A mon sens, il ne ne faut jamais sauvegarder les fichiers uploadés dans l'arborescence du site web, mais ailleurs sur le serveur.
    Ainsi, les fichiers n'ont pas d'URL directe et ne peuvent, en aucun cas, être exécuté depuis un navigateur. Cela prévient pas mal de problème.
    (on peut toujours créé un lien de téléchargement, mais ce dernier se fera à travers notre code qui lira et transmettra rien d'autre qu'un flux d'octets)
    --
    vanquish

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mai 2011
    Messages : 2
    Points : 5
    Points
    5

    Par défaut Pourquoi confier la sécurité à un .htaccess ?

    Je ne comprends pas pourquoi baser la sécurité sur un .htaccess ! Comme si tous les serveurs tournaient sous apache... D'ailleurs même avec apache on peut (et à mon avis on devrait) ignorer les .htaccess. La sécurité de ce genre de plugin devrait être géré via php directement

  7. #7
    Membre régulier Avatar de gadj0dil0
    Profil pro
    Inscrit en
    février 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2007
    Messages : 95
    Points : 92
    Points
    92

    Par défaut

    Bonjour,

    J'aide un ami qui a créé un site de eCommerce avec le CMS Prestashop lorsque son site ou back-office déconne. Effectivement il ne faut pas prendre à la légère l'upload, et mettre les fichiers hors de portée d'une url est une solution, mais dans le cas d'une image à afficher...
    Du fileupload il y en a :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    (uiserver)u87534064@infong-eu9:~/clickandbuilds/PrestaShop/MyeCommerce$ 
    #3 - 15:11:23
    grep -nriI blueimp ./*
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-image.js:3: * https://github.com/blueimp/jQuery-File-Upload
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-image.js:6: * https://blueimp.net
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-image.js:39:    $.blueimp.fileupload.prototype.options.processQueue.unshift(
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-image.js:101:    $.widget('blueimp.fileupload', $.blueimp.fileupload, {
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-process.js:3: * https://github.com/blueimp/jQuery-File-Upload
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-process.js:6: * https://blueimp.net
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-process.js:32:    var originalAdd = $.blueimp.fileupload.prototype.options.add;
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-process.js:36:    $.widget('blueimp.fileupload', $.blueimp.fileupload, {
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-validate.js:3: * https://github.com/blueimp/jQuery-File-Upload
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-validate.js:6: * https://blueimp.net
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-validate.js:33:    $.blueimp.fileupload.prototype.options.processQueue.push(
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload-validate.js:50:    $.widget('blueimp.fileupload', $.blueimp.fileupload, {
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload.js:3: * https://github.com/blueimp/jQuery-File-Upload
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload.js:6: * https://blueimp.net
    ./epkncr0hnlkk6mme/themes/default/js/jquery.fileupload.js:60:    $.widget('blueimp.fileupload', {
    ./epkncr0hnlkk6mme/themes/default/js/jquery.iframe-transport.js:3: * https://github.com/blueimp/jQuery-File-Upload
    ./epkncr0hnlkk6mme/themes/default/js/jquery.iframe-transport.js:6: * https://blueimp.net
    ./epkncr0hnlkk6mme/themes/default/js/jquery.iframe-transport.js:184:    // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    head *fileupload* | grep -i plugin
     * jQuery File Upload Image Preview & Resize Plugin 1.3.1
     * jQuery File Upload Processing Plugin 1.2.2
     * jQuery File Upload Validation Plugin 1.1.1
     * jQuery File Upload Plugin 5.34.0
    Rassurez-moi, il faut bien une action de l'admin "d'ignorer les paramètres de sécurité personnalisés effectués dans les dossiers individuels via le fichier .htaccess". Ce qui ne semble pas être le cas sur le site de mon pote. Comment faire pour mettre à jour le fichier sans tout planter?

    Cordialement

    PS : le thème est "à jour" ...

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    5 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 5 222
    Points : 13 793
    Points
    13 793

    Par défaut

    Ce qui semble étonnant pour un plugin d'upload c'est que la sécurité de l'upload ne soit pas fait au niveau du serveur.
    Si on veux autoriser que des images (par exemple) c'est au code php de faire le nécessaire pour n'accepter que des images, pas à un autre élément de la pile.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 13
    Dernier message: 07/02/2018, 12h31
  2. Réponses: 0
    Dernier message: 13/09/2017, 12h26
  3. Microsoft confirme une faille Zero-Day dans IE8
    Par Stéphane le calme dans le forum Sécurité
    Réponses: 3
    Dernier message: 10/05/2013, 10h17
  4. Réponses: 1
    Dernier message: 08/04/2012, 10h56
  5. Variable dynamique dans un plugin jquery
    Par rorschach1 dans le forum jQuery
    Réponses: 3
    Dernier message: 03/02/2011, 19h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo