Envío de registros, alertas y datos de telemetría a través de un diodo de datos

Descubre cómo
Utilizamos inteligencia artificial para traducir el sitio web y, aunque nos esforzamos por garantizar la precisión, es posible que las traducciones no sean siempre 100 % exactas. Agradecemos tu comprensión.

Análisis de la vulnerabilidad CVE-2023-33733 con MetaDefender Core

Por OPSWAT
Comparte esta publicación
Investigadores de seguridad destacados debaten sobre la vulnerabilidad CVE-2023-33733
Participantes en el Programa OPSWAT

El rápido avance de la tecnología ha generado una gran demanda de desarrolladores cualificados. El software de código abierto (OSS) se ha convertido en una herramienta fundamental para este colectivo profesional en expansión. En la actualidad existen cientos de miles de paquetes de OSS consolidados en diversos lenguajes de programación. Más del 90 % de los desarrolladores utilizan estos componentes de código abierto en sus aplicaciones propietarias, lo que pone de relieve la eficiencia y el valor añadido del OSS. Para subrayar aún más su importancia, se prevé que el mercado mundial del OSS alcance los 80 700 millones de dólares en 2030, lo que refleja una tasa de crecimiento prevista del 16,7 % anual. 

Sin embargo, la adopción generalizada del software de código abierto (OSS) también introduce un nuevo nivel de complejidad: las vulnerabilidades de seguridad. La gran cantidad de componentes de OSS interconectados crea una superficie de ataque más amplia que los actores maliciosos pueden aprovechar. La gestión de las dependencias entre los distintos paquetes de OSS puede resultar compleja, lo que dificulta la identificación y la corrección rápida de las vulnerabilidades. Además, la seguridad del OSS suele depender de la vigilancia y las contribuciones de la comunidad de desarrolladores. Esto puede provocar retrasos en la corrección de las vulnerabilidades, especialmente en el caso de los proyectos menos populares.  

En este artículo, los becarios OPSWAT analizan CVE-2023-33733, una vulnerabilidad de seguridad descubierta en la popular biblioteca de código abierto ReportLab. Su análisis se complementa con un ataque simulado que aprovecha MetaDefender Core con su Software Bill of Materials (SBOM) , permite identificar vulnerabilidades en las dependencias de una aplicación, incluida la biblioteca ReportLab, que es vulnerable. 

Introducción a la biblioteca de Reportlab

Ilustración de ReportLab

ReportLab, una potente biblioteca de Python de código abierto, permite a los usuarios generar archivos PDF con numerosas funciones a partir de código Python. Ofrece a los desarrolladores una combinación ganadora: flexibilidad, facilidad de uso y amplias opciones de personalización para crear documentos dinámicos. La biblioteca proporciona a los desarrolladores un mayor control sobre sus archivos PDF, lo que permite la incorporación precisa de texto, imágenes, tablas y gráficos con meticulosa precisión. Este nivel de personalización convierte a ReportLab en una herramienta valiosa para generar documentos dinámicos, como facturas e informes basados en datos. 

Antecedentes de CVE-2023-33733

CVE-2023-33733 pone de manifiesto una vulnerabilidad de seguridad en la biblioteca ReportLab, que afecta a varias versiones de la misma.

  • Se ha descubierto que las versiones de ReportLab anteriores a la 3.6.13 son vulnerables a la evasión del entorno de pruebas, concretamente en el «rl_safe_eval» función. La vulnerabilidad se aprovechó mediante el atributo «color» de las etiquetas HTML, que se evaluó directamente como una expresión de Python utilizando el eval() función, lo que, en última instancia, da lugar a la ejecución remota de código. 
  • Los analistas de NVD han asignado una puntuación CVSS de 7,8 (ALTA ) a CVE-2023-33733. 
La gravedad y las métricas de CVSS 3.x indican una puntuación base de 7,8 para CVE-2023-33733, clasificada como de alto riesgo.

Análisis de la vulnerabilidad de seguridad de ReportLab

Los becarios OPSWAT llevaron a cabo un análisis exhaustivo del flujo de trabajo de ReportLab, identificando la causa principal de la vulnerabilidad de seguridad CVE-2023-33733.

El flujo de trabajo de la biblioteca de ReportLab 

ReportLab permite a los desarrolladores crear archivos PDF de forma eficiente. La biblioteca facilita la integración: basta con importarla, definir el contenido HTML y generar el PDF con una sola línea de código utilizando la función «result». 

Código en Python que muestra cómo crear una plantilla de documento sencilla utilizando la biblioteca ReportLab

Nuestros becarios de posgrado han descubierto un proceso de cinco pasos para crear archivos PDF a partir de HTML con ReportLab. 

Diagrama que ilustra el flujo del proceso desde el HTML de entrada hasta el PDF de salida utilizando ReportLab y las funciones asociadas

Dentro del proceso de cinco pasos para crear archivos PDF a partir de HTML con ReportLab, destacan tres procesos principales: el procesamiento de párrafos, el procesamiento con el «paraparser» y el proceso de gestión del HTML. 

Captura de pantalla de un proceso de depuración en la que se destacan los procesos de gestión de HTML, de párrafos y del «paraparser» en un script de Python

Como se muestra en la figura anterior, el proceso de gestión de HTML en ReportLab utiliza el eval() función que actúa específicamente sobre el atributo «color». Al servir como punto central para la ejecución de código malicioso, el eval() La función obliga a los investigadores a intentar controlar sus entradas para poder explotar la aplicación. Sin embargo, esto resulta complicado debido al entorno aislado impuesto por el __rl_safe_eval__ función dentro de ReportLab. 

Fragmento de código que muestra una función de evaluación segura con comprobaciones de los métodos permitidos y los tiempos de espera
Vulnerabilidad de seguridad en ReportLab Analysis 

ReportLab ha implementado un entorno de pruebas denominado __rl_safe_eval__. Este entorno aislado excluye todas las funciones integradas de Python e incluye varias funciones integradas sobrescritas. Esta restricción permite la ejecución de código seguro dentro de la biblioteca, al tiempo que impide el acceso a funciones y bibliotecas peligrosas que podrían utilizarse con fines maliciosos (por ejemplo, el acceso al sistema de archivos o la comunicación en red). 

El rl_safe_eval La función «sandbox» aplica diversas condiciones para garantizar que el atributo invocado sea seguro antes de utilizar la función integrada de Python getattr() función para recuperarlo y devolver el resultado. 

Ejemplo de código que muestra una función que comprueba si los nombres de los métodos están permitidos dentro de un contexto de seguridad

La función «safe eval» tiene como objetivo proteger el entorno excluyendo las funciones peligrosas y evitando acciones maliciosas. Sin embargo, si se encuentra una forma de eludir sus condiciones y acceder a una función integrada potente, podría ser objeto de abuso.  

Partiendo de esta idea, los investigadores de seguridad intentaron eludir las restricciones. En un primer momento, aprovecharon una vulnerabilidad de inyección de objetos utilizando el type() función para crear un objeto y redefinir sus atributos y métodos con el fin de eludir las comprobaciones dentro de __rl_safe_eval__. Además, dado que la biblioteca ReportLab sobrescribe las funciones integradas y las convierte en variables globales en el contexto de eval, el investigador podría aprovechar esta implementación para acceder a una de las funciones integradas originales. Esto podría permitirle eludir el entorno de sandbox y ejecutar código malicioso. 

Fragmento de código que muestra la redefinición de funciones integradas

La carga útil se prepara de la siguiente manera: 

Ejemplo de código que muestra una clase de atacante y el aprovechamiento de un atributo global

No obstante, no es posible ejecutar una expresión de varias líneas dentro de un contexto «eval». Sin embargo, se puede recurrir a un truco basado en las comprensiones de lista, y la carga útil para explotar esta vulnerabilidad (CVE) es la siguiente: 

Estructura de código compleja que ilustra la explotación de la vulnerabilidad CVE-2023-33733

Simulación de explotación de ReportLab 

Un grupo de investigadores ha publicado una prueba de concepto (POC) para CVE-2023-33733, en la que se demuestra que las aplicaciones desarrolladas con versiones vulnerables de ReportLab podrían ser susceptibles de sufrir ciberataques. Para evaluar esta posible amenaza, los becarios de posgrado de OSPWAT llevaron a cabo un ataque simulado contra una aplicación web. Para ello, utilizaron MetaDefender Core sus funciones de SBOM, para identificar las vulnerabilidades de seguridad presentes en las dependencias del software de la aplicación, incluida la presencia de la biblioteca ReportLab afectada. 

Simular la vulnerabilidad de seguridad 

Para simular esta explotación como un escenario real, los becarios OPSWAT desarrollaron una aplicación web utilizando Python y la versión vulnerable de la biblioteca ReportLab. Esta aplicación reproduce un caso de uso típico: los usuarios pueden cargar un archivo HTML y convertirlo en un archivo PDF. 

Captura de pantalla de la interfaz de un programa malicioso de subida de archivos que solicita seleccionar un archivo para subirlo

Un atacante podría crear un archivo HTML malicioso que contenga código diseñado para aprovechar CVE-2023-33733. Este código podría eludir el entorno aislado y comprometer el servidor web al activar un shell inverso a través del eval() función.  

Fragmento de código que muestra un ataque de inyección de comandos en curso

Si se lograra cargar un archivo malicioso, el atacante podría hacerse con el control del servidor de aplicaciones debido a la vulnerabilidad existente en la biblioteca ReportLab, que está desactualizada. 

Programa malicioso de subida de archivos que muestra el archivo «evil.html» subido
Terminal que muestra un shell inverso activo

La importancia de la SBOM y la seguridad proactiva 

La investigación de los becarios OPSWAT sobre CVE-2023-33733 pone de relieve los posibles riesgos de seguridad asociados al software de código abierto. Si bien el software de código abierto ofrece ventajas innegables en cuanto a eficiencia en el desarrollo y rentabilidad, vulnerabilidades como la detectada en ReportLab pueden dejar a las organizaciones expuestas a ciberataques. 

OPSWAT 

OPSWAT protege la cadena de suministro de software al proporcionar un inventario completo de componentes para código fuente y contenedores. Es compatible con más de 10 lenguajes, entre ellos Java, JavaScript, Go, PHP y Python, y cuenta con más de 5 millones de componentes de software de código abierto de terceros; además, utiliza una base de datos con más de 17 000 vulnerabilidades procedentes de la Base de Datos Nacional de Vulnerabilidades (NVD) y GitHub (GHSA). 

Panel de controlCore MetaDefender Core que muestra un archivo bloqueado y el análisis de su vulnerabilidad

OPSWAT MetaDefender Core, con sus funciones SBOM integradas, permite a las organizaciones abordar estos riesgos de forma proactiva. MetaDefender Core las aplicaciones de software y sus dependencias, identificando la presencia de vulnerabilidades conocidas, como CVE-2023-33733, en los componentes incluidos en la lista. Esto permite a los desarrolladores y a los equipos de seguridad priorizar las tareas de aplicación de parches y mitigar los riesgos de seguridad antes de que puedan ser explotados. 

Panel de controlCore MetaDefender Core que muestra los resultados detallados del análisis de vulnerabilidades para CVE-2023-33733

Reflexiones finales

La investigación de los becarios OPSWAT sobre la vulnerabilidad de ReportLab (CVE-2023-33733) sirve como un valioso recordatorio de la importancia de adoptar medidas de seguridad proactivas en el ciclo de vida del desarrollo de software. Al utilizar herramientas como OPSWAT MetaDefender Core, las organizaciones pueden obtener información crucial sobre las dependencias de su software e identificar posibles vulnerabilidades antes de que sean aprovechadas por los atacantes. 

Además, OPSWAT un conjunto completo de soluciones de ciberseguridad que van más allá del análisis de vulnerabilidades. Estas soluciones proporcionan detección de amenazas en tiempo real, seguridad de los datos y protección de los terminales, lo que protege a las organizaciones frente a una amplia gama de ciberamenazas. Al adoptar un enfoque de seguridad por capas que incluye herramientas como MetaDefender Core, las organizaciones pueden aprovechar las ventajas del software de código abierto (OSS) y minimizar al mismo tiempo los riesgos de seguridad asociados. 

¡Mantente al día con OPSWAT!

Regístrate hoy mismo para recibir las últimas novedades de la empresa, historias, información sobre eventos y mucho más.