Grave falla de seguridad en popular librería para generar PDFs desde PHP

Un investigador de seguridad descubrió una grave falla de seguridad en una de las bibliotecas de PHP más populares de Internet para crear archivos PDF.

La vulnerabilidad afecta a TCPDF, una de las “tres grandes” bibliotecas de PHP, junto con mPDF y FPDF, para convertir el código HTML en documentos PDF o ensamblar archivos PDF sobre la marcha.

La falla de seguridad puede ser explotada por un atacante para lograr la “ejecución remota de código” en sitios web y aplicaciones web que utilizan la biblioteca TCPDF, lo que permite al atacante ejecutar código malicioso y posiblemente controlar estos sistemas.

La vulnerabilidad, en sí misma, es en realidad una variación del descubrimiento de otro investigador.

La falla inicial fue encontrada por Sam Thomas, investigador de Secarma, quien en una serie de experimentos mostró un nuevo error de deserialización que afectaba a las aplicaciones PHP durante el verano de 2018. Él lanzó un artículo de investigación que detallaba los ataques de serialización de PHP contra las plataformas WordPress y Typo3 CMS, pero también la Biblioteca TCPDF incrustada dentro del CMS Contao.

Cómo funciona el nuevo ataque de TCPDF

En una publicación de blog publicada el fin de semana, un investigador de seguridad italiano que se identifica en Internet como Polict, reveló una nueva falla de serialización de PHP que afecta a TCPDF de la misma manera que la que Thomas descubrió el año pasado.

Polict dice que la vulnerabilidad que encontró puede ser explotada de dos maneras. El primer caso es en sitios web que permiten que la información del usuario forme parte del proceso de generación de archivos PDF, como al agregar nombres u otros detalles dentro de las facturas.

El segundo es en sitios web que contienen vulnerabilidades de cross-site scripting (XSS) donde un atacante puede plantar código malicioso dentro del código fuente HTML que se enviará a la biblioteca TCPDF para convertirlo en un PDF.

El truco es simplemente suministrar datos con formato incorrecto a la biblioteca TCPDF. Estos datos se modifican de tal manera que obligan a la biblioteca TCPDF a llamar al envoltorio de flujos “phar: //” del servidor PHP, y luego abusan del proceso de deserialización de PHP para ejecutar código en el servidor subyacente.

Es una rutina de ataque muy compleja, y requiere conocimientos avanzados de codificación PHP para explotar. Las explotaciones de deserialización, en general, son difíciles de descubrir y son la ruina de muchos lenguajes de programación, incluidos Ruby, Java y .NET, además de PHP.

Falla coregida en V6.2.20 … V6.2.22

El investigador dice que informó sobre la vulnerabilidad (CVE-2018-17057) al autor de la biblioteca TCPDF en agosto pasado. El equipo TCPDF lanzó TCPDF 6.2.20 en septiembre para abordar el problema.

Sin embargo, los usuarios deben actualizar al menos a la versión 6.2.22 porque el equipo de TCPDF volvió a introducir accidentalmente la vulnerabilidad notificada por Sam Thomas al intentar parchar la informada por Polict. Ambos problemas se consideraron resueltos en la versión 6.2.22.

El investigador de seguridad italiano publicó detalles sobre esta vulnerabilidad solo hoy, seis meses después del parche, debido a la gravedad del error y para permitir a los propietarios de sitios web y aplicaciones web el tiempo suficiente para parchear.

La biblioteca TCPDF es una de las bibliotecas PHP más populares de la actualidad y se ha utilizado en todo el lugar: en sitios web independientes, en sistemas de administración de contenido (CMS), complementos de CMS, temas de CMS, intranets empresariales, CRM, HRM, soluciones de facturación, muchos Aplicaciones web centradas en PDF, y otras.

El parche no es tan fácil como parece. En algunos casos, esto podría significar reemplazar un archivo y editar una instrucción de compilación, pero en otros lugares, esto podría requerir la reescritura de grandes porciones de código.

Traducción libre del artículo original

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.