
OpenEMR problema de seguridad
Vulnerabilidad de path traversal y DoS en el proyecto OpenEMR
Función vulnerable en el archivo: /openemr/custom/ajax_download.php
Condiciones:
Versiones vulnerables: <5.0.2, Corregido en la versión 5.0.2.
La variable vulnerable en esta función es: fileName, puede ser controlada por el atacante y no hay ningún filtrado ni validación de la misma.
Un atacante puede descargar cualquier archivo (que sea legible por el usuario www-data) del almacenamiento del servidor.
Si el archivo solicitado es escribible por el usuario www-data y el directorio /var/www/openemr/sites/default/documents/cqm_qrda/ existe, se eliminará del servidor.
Un directorio no existente no es un gran problema, ya que el atacante puede crearlo. La variable "higher_level_path" en la función de carga /openemr/controller.php?document&upload nos permite proporcionar el nombre del directorio donde se almacenará el archivo, y si este directorio no existe (y la variable "patient_id" es numérica y mayor que 0) se creará con derechos "700" y propiedad del usuario "www-data".
Esto puede causar DoS, ya que el atacante puede eliminar algunos archivos de configuración/scripts de PHP del servidor.
Divulgación de información.
Denegación de servicio.
P.D. Agradecimiento especial a Brady G. Miller del equipo de OpenEMR por su rápida respuesta y parches