
OpenEMR problema de segurança
Vulnerabilidade de path traversal e DoS no projeto OpenEMR
Função vulnerável no arquivo: /openemr/custom/ajax_download.php
Condições:
Versões vulneráveis: <5.0.2, Corrigido na versão 5.0.2.
Variável vulnerável nesta função: fileName, pode ser controlada pelo atacante e não há qualquer filtragem ou validação desta.
Um atacante pode descarregar qualquer ficheiro (que seja legível pelo utilizador www-data) do armazenamento do servidor.
Se o ficheiro solicitado for gravável para o utilizador www-data e o diretório /var/www/openemr/sites/default/documents/cqm_qrda/ existir, ele será eliminado do servidor.
Um diretório inexistente não é um grande problema, pois o atacante pode criá-lo. A variável "higher_level_path" na função de upload /openemr/controller.php?document&upload permite-nos fornecer um nome de diretório, onde o ficheiro será armazenado, e se este diretório não existir (e a variável "patient_id" for numérica e maior que 0), ele será criado com permissões "700" e pertencente ao utilizador "www-data".
Isto pode causar DoS, porque o atacante pode eliminar alguns ficheiros de configuração/scripts PHP do servidor.
Divulgação de informação.
Negação de serviço.
P.S. Agradecimentos especiais a Brady G. Miller da equipa OpenEMR pela resposta rápida e patches