Recientemente se dio a conocer la información sobre la vulnerabilidad (CVE-2018-16858) la cual afectaba a las suites de oficina LibreOffice y Apache OpenOffice en las cuales se aprovecha que estas permiten ejecutar código en el sistema al abrir un documento especialmente emitida en formato ODT.
El descubrimiento se realizó sobre Windows, aunque también esta explotación afecta a Linux, la persona que reporto esta vulnerabilidad se percato que estas suites son compatibles con el scripting y Basic, BeanShell, Java, JavaScript y Python son compatibles.
¿En que se basa esta vulnerabilidad?
Es importante hacer mención que aun que se trata de un problema que fue detectado desde el año pasado, así como la solución fue implementada en tan solo dos semanas.
Por cuestiones de procedimiento a la persona que detecto esto (puedes revisar su publicación aquí) se le dieron instrucciones de realizar el informe hasta hace poco.
El problema se debe a la falta de las comprobaciones necesarias en el código de procesamiento de macros incrustadas en el documento, que puede ser activado por varios eventos, como el mouse que apunta a un elemento.
Al usar los caracteres «../» en la ruta al controlador, un atacante puede ir más allá de los directorios base con scripts (/share/Scripts/python y /user/Scripts/python) y ejecutar una función arbitraria desde un script de Python existente cuando ocurre un evento.
Un atacante aprovecha esto y para ejecutar su código hace uso de la función del script pydoc.py presente en la mayoría de las distribuciones (también incluida en el paquete LibreOffice para Windows – python-core-3.5.5 \lib\pydoc.py).
Esta define la función tempfilepager()
que se encarga de ejecuta cualquier archivo ejecutable con argumentos arbitrarios llamando a la función os.system()
.
Por ejemplo, para ejecutar una calculadora cuando desplaza un enlace a un área específica en un documento, basta con conectar un script vnd.sun.star.script:../../lib/python3.5/pydoc.py$
al controlador de eventos «dom: mouseover» basta con conectar un script a “vnd.sun.star.script:../../lib/python3.5/pydoc.py$tempfilepager(1, gnome-calculator )?language=Python&location=share
”.
Esto lo podemos apreciar en el siguiente vídeo:
La vulnerabilidad fue detectada e informada el año pasado y esta fue eliminada en las versiones de LibreOffice 6.0.7 y 6.1.3.
Mientras que en la versión actual de Apache OpenOffice 4.1.6, el problema permanece sin corregir.
Ya existe una solución
Como solución para bloquear las vulnerabilidades en OpenOffice, se recomienda que eliminen el archivo pythonscript.py del directorio de la aplicación que este lo pueden encontrar en la siguiente ruta “/opt/openoffice4/program/pythonscript.py
”.
Además de ello el problema tampoco está aún solucionado en Debian Jessie, Ubuntu 16.04, SUSE y openSUSE.
Por otro lado RHEL, CentOS así como Ubuntu 18.04 y Ubuntu 18.10 no se ven afectados por este problema.
En OpenOffice y en LibreOffice hasta la versión 6.0 inclusive, la explotación de la vulnerabilidad se limita a la ejecución de scripts de Python locales existentes debido a la falta de soporte para pasar argumentos a funciones llamadas desde macros.
Para atacar OpenOffice y versiones anteriores de LibreOffice, un atacante debe asegurar la ubicación de su script de Python, por ejemplo, distribuyéndolo en un archivo ZIP junto con un documento ODT.
Cuando ataca LibreOffice 6.1.x, puede usar el script del sistema pydoc.py para ejecutar archivos arbitrarios con cualquier parámetro.
Además, se menciona un posible vector de ataque a través del paquete ImageMagick, que utiliza LibreOffice para convertir ciertos tipos de archivos.
Este ataque se deriva a través de manejadores de imágenes basados en ImageMagick es peligroso porque un documento de vulnerabilidad puede enviarse como un archivo JPEG o PNG con un archivo ODT en lugar de una imagen (tal archivo se procesará porque el tipo MIME es reconocido por su contenido, en lugar de confiar en).
En teoría, el problema también puede afectar a los creadores automáticos de miniaturas para los indizadores de escritorio y archivos si utilizan LibreOffice para analizar documentos.
En este caso, para un ataque puede ser suficiente simplemente cargar el documento con el exploit o navegar el directorio con él en Nautilus.
Es importante también ver que aún continúan encontrando la manera de encontrar vulnerabilidades a través de los diferentes usos de ImageMagick.