Descripción
OpenEMR es una aplicación gratuita y de código abierto para historias clínicas electrónicas y gestión de consultas médicas. En versiones anteriores a la 8.4.0, las acciones de escritura de controllers/C_Document.class.php, incluida move_action_process(), no verifican el acceso del solicitante al documento de origen, al paciente y categoría actuales, ni al paciente y categoría de destino antes de que Document::change_patient() realice la modificación. Un usuario autenticado con privilegios bajos puede reasignar un documento arbitrario a un paciente o categoría al que tenga acceso y luego obtenerlo mediante la ruta de lectura normalmente protegida. La reasignación ocurre antes de una verificación posterior al generar la lista, por lo que una respuesta final HTTP 403 no significa que la escritura no autorizada haya sido bloqueada. El problema está corregido en la versión 8.4.0.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- openemr Afectadas: < 8.4.0
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en github.comgithub.com/openemr/openemr/security/advisories/GHSA-92rh-g949-4mvv
- Referencia en github.comgithub.com/openemr/openemr/pull/13353
- Referencia en github.comgithub.com/openemr/openemr/commit/312b5d042f7fa49cc78ebed041155fba339…
- Referencia en github.comgithub.com/openemr/openemr/releases/tag/v8_3_0
Ver el texto original en inglés (CVE.org)
OpenEMR: Missing Write ACL Allows Unauthorized Document Reassignment
OpenEMR is a free and open source electronic health records and medical practice management application. Prior to 8.4.0, controllers/C_Document.class.php write actions, including move_action_process(), do not verify the caller's access to the source document, current patient and category, or destination patient and category before Document::change_patient() performs the mutation. A low-privilege authenticated user can reassign an arbitrary document to a patient or category the user can access and then retrieve it through the normally protected read path. The reassignment occurs before a later list rendering check, so a final HTTP 403 response does not mean the unauthorized write was blocked. This issue is fixed in version 8.4.0.