
Problème de sécurité d'OpenEMR
Vulnérabilité de traversée de chemin (path traversal) et de déni de service (DoS) dans le projet OpenEMR
Fonction vulnérable dans le fichier : /openemr/custom/ajax_download.php
Conditions :
Versions vulnérables : <5.0.2, corrigé dans la version 5.0.2.
La variable vulnérable dans cette fonction : fileName, peut être contrôlée par un attaquant et il n'y a aucun filtrage ni validation de celle-ci.
Un attaquant peut télécharger n'importe quel fichier (lisible par l'utilisateur www-data) depuis le stockage du serveur.
Si le fichier demandé est accessible en écriture par l'utilisateur www-data
et que le répertoire /var/www/openemr/sites/default/documents/cqm_qrda/
existe, il sera supprimé du serveur.
Un répertoire inexistant ne pose pas vraiment problème, car l'attaquant peut le créer. La variable "higher_level_path" dans la fonction d'envoi /openemr/controller.php?document&upload permet de fournir le nom du répertoire où le fichier sera stocké ; si ce répertoire n'existe pas (et que la variable "patient_id" est numérique et supérieure à 0), il sera créé avec les droits "700" et appartiendra à l'utilisateur "www-data".
Cela peut provoquer un déni de service (DoS), car l'attaquant peut supprimer certains fichiers de configuration/scripts PHP du serveur.
Divulgation d'informations.
Déni de service.
P.S. Remerciements particuliers à Brady G. Miller de l'équipe OpenEMR pour sa réponse rapide et ses correctifs