
Problema di sicurezza di OpenEMR
Vulnerabilità di path traversal e DoS nel progetto OpenEMR
Funzione vulnerabile nel file: /openemr/custom/ajax_download.php
Condizioni:
Versioni vulnerabili: <5.0.2, Risolta nella versione 5.0.2.
Variabile vulnerabile in questa funzione: fileName, può essere controllata dall'attaccante e non c'è alcuna filtrazione o validazione di essa.
Un attaccante può scaricare qualsiasi file (leggibile dall'utente www-data) dalla memoria del server.
Se il file richiesto è scrivibile dall'utente www-data e la directory /var/www/openemr/sites/default/documents/cqm_qrda/ esiste, verrà cancellato dal server.
Una directory inesistente non è un grosso problema, poiché l'attaccante può crearla. La variabile "higher_level_path" nella funzione di upload /openemr/controller.php?document&upload ci permette di fornire un nome di directory, dove il file verrà archiviato, e se questa directory non esiste (e la variabile "patient_id" è numerica e maggiore di 0) verrà creata con permessi "700" e di proprietà dell'utente "www-data".
Può causare un DoS, perché l'attaccante può eliminare alcuni file di configurazione/script PHP dal server.
Divulgazione di informazioni.
Negazione del servizio.
P.S. Un ringraziamento speciale a Brady G. Miller del team OpenEMR per la rapida risposta e le patch