Se ha detectado una vulnerabilidad en el paquete de oficina Apache OpenOffice (CVE-2021-33035), que permite la ejecución de código al abrir un archivo especialmente diseñado en formato DBF. El investigador que descubrió el problema advirtió sobre la creación de un exploit funcional para la plataforma Windows. La corrección de la vulnerabilidad está disponible por ahora solo en forma de parche en el repositorio del proyecto, que ha sido incluido en las compilaciones de prueba de OpenOffice 4.1.11. Las actualizaciones para la rama estable aún no se han creado.
El problema se debe a que, al asignar memoria, OpenOffice se basaba en los valores fieldLength y fieldType en el encabezado de los archivos DBF, sin verificar la correspondencia con el tipo de datos real en los campos. Para llevar a cabo el ataque, se puede especificar en el valor de fieldType el tipo INTEGER, pero colocar datos de mayor tamaño y asignar un valor de fieldLength que no corresponda al tamaño de los datos con tipo INTEGER, lo que resultará en que el resto de los datos del campo se escriba fuera del búfer asignado. Como resultado de un desbordamiento de búfer controlado, el investigador pudo sobrescribir el puntero de retorno de la función y, utilizando técnicas de programación orientada a retorno (ROP - Return-Oriented Programming), logró ejecutar su código.
Al utilizar la técnica ROP, el atacante no intenta colocar su código en la memoria, sino que opera con fragmentos de instrucciones de máquina ya existentes en las bibliotecas cargadas, que terminan con la instrucción de retorno de control (generalmente, son los finales de funciones de biblioteca). El funcionamiento del exploit se reduce a construir una cadena de llamadas de dichos bloques (‘gadgets’) para obtener la funcionalidad deseada. Como gadgets en el exploit para OpenOffice se utilizó código de la biblioteca libxml2, que, a diferencia del propio OpenOffice, resultó estar compilada sin los mecanismos de protección DEP (Prevención de Ejecución de Datos) y ASLR (Aleatorización del Diseño del Espacio de Direcciones).
Los desarrolladores de OpenOffice fueron informados sobre el problema el 4 de mayo, después de lo cual se programó la divulgación pública de los detalles sobre la vulnerabilidad para el 30 de agosto. Dado que para la fecha prevista no se había formado la actualización de la rama estable, el investigador trasladó la divulgación de detalles al 18 de septiembre, pero los desarrolladores de OpenOffice no pudieron formar la versión 4.1.11 para esa fecha. Es notable que en el mismo estudio se encontró una vulnerabilidad similar en el código de soporte del formato DBF en Microsoft Office Access (CVE-2021–38646), cuyos detalles se revelarán posteriormente. No se encontraron problemas en LibreOffice.
Fuente: opennet.ru
