Análisis de Drupalgeddon 3 y otras Vulnerabilidades Críticas en Drupal

Drupal es uno de los sistemas de gestión de contenido (CMS) más populares y potentes, utilizado por millones de sitios web en todo el mundo, junto con otros como WordPress y Joomla. Su robustez y flexibilidad lo convierten en una opción preferente para proyectos de diversa envergadura. Sin embargo, como cualquier software complejo, Drupal no está exento de vulnerabilidades.

Mantener un CMS seguro es un desafío constante que requiere atención continua a las actualizaciones y las alertas de seguridad. A lo largo de los años, el núcleo de Drupal ha sido objeto de una serie de vulnerabilidades graves, algunas de las cuales han recibido el apodo colectivo de Drupalgeddon, destacando su impacto crítico y la urgencia de su remediación.

La Serie Drupalgeddon: Un Historial de Vulnerabilidades Críticas

La comunidad de Drupal ha enfrentado varias vulnerabilidades de ejecución remota de código (RCE) de alto perfil, conocidas como la serie Drupalgeddon, que han subrayado la importancia de las actualizaciones de seguridad oportunas.

Drupalgeddon Original (CVE-2014-3704)

La primera de estas vulnerabilidades, CVE-2014-3704, conocida simplemente como Drupalgeddon, afectó a las versiones de Drupal desde la 7.0 hasta la 7.31 y fue solucionada en la versión 7.32. Esta fue una de las primeras alertas importantes que puso de manifiesto la necesidad de una vigilancia constante en la seguridad del núcleo.

Drupalgeddon 2 (CVE-2018-7600)

En marzo de 2018, Drupal se vio afectado por una importante vulnerabilidad de ejecución remota de código, CVE-2018-7600, que fue apodada Drupalgeddon 2. Esta falla afectó a las versiones de Drupal anteriores a 7.58 y 8.5.1. Fue una vulnerabilidad de alto impacto que permitía a atacantes no autenticados tomar el control de sitios web.

Drupalgeddon 3 (CVE-2018-7602)

Casi un mes después de Drupalgeddon 2, surgió otra vulnerabilidad crítica, CVE-2018-7602, conocida como Drupalgeddon 3. Esta también es una vulnerabilidad de ejecución remota de código que afecta a múltiples versiones de Drupal 7.x y 8.x. Estas vulnerabilidades consecutivas vinieron acompañadas de pruebas de concepto (PoC) que se tradujeron en ataques casi inmediatos en el mundo real.

Esta falla puede explotarse aprovechando una inyección SQL preautenticada que puede usarse para subir código malicioso o agregar un usuario administrador. Un script de prueba de concepto para Drupalgeddon 3 permite, por ejemplo, agregar un nuevo usuario administrador. Para esto, es necesario proporcionar la URL de destino y un nombre de usuario y contraseña para la nueva cuenta de administrador.

Diagrama de flujo de explotación de inyección SQL

Métodos Avanzados de Ejecución de Código

Más allá de la inyección SQL inicial, la explotación de vulnerabilidades como Drupalgeddon 3 puede abrir la puerta a métodos más sofisticados de ejecución de código. Por ejemplo, en escenarios donde se obtiene acceso administrativo, se pueden emplear técnicas como la activación y uso del módulo PHP Filter o la manipulación de módulos existentes.

  • Uso del Módulo PHP Filter: Desde la versión 8 en adelante, el módulo PHP Filter no está instalado por defecto. Para aprovechar esta funcionalidad, es necesario instalarlo. Una vez instalado y con permisos adecuados, un atacante con acceso administrativo podría crear una página con un snippet PHP malicioso, como por ejemplo:
    <?php system($_GET['dcfdd5e021a869fcc6dfaef8bf31377e']); ?>

    Al configurar el desplegable Text format en "PHP code" y guardar la página, se pueden ejecutar comandos en el navegador añadiendo `?dcfdd5e021a869fcc6dfaef8bf31377e=id` al final de la URL, o utilizando cURL en la línea de comandos para ejecutar el comando id. Es crucial que cualquier cambio de este tipo en un entorno real se realice con el consentimiento del cliente y con fines de evaluación de seguridad, siempre manteniendo la discreción para evitar exposiciones accidentales.

  • Creación de Puertas Traseras en Módulos: Drupal permite a los usuarios con permisos adecuados subir un nuevo módulo. Se puede crear un módulo con puerta trasera añadiendo una shell a un módulo existente, como por ejemplo el módulo CAPTCHA, descargado desde drupal.org. Posteriormente, se necesitaría crear un archivo .htaccess para darse acceso a la carpeta del módulo modificado, aplicando reglas para la carpeta / cuando se solicite un archivo en /modules. Este proceso implicaría acceder a la administración del sitio (Manage -> Extend) para habilitar el módulo modificado.

Es fundamental recordar que estas técnicas son ejemplos de cómo los atacantes podrían operar una vez que una vulnerabilidad de ejecución de código como Drupalgeddon 3 es explotada, y requieren permisos elevados o una brecha de seguridad inicial.

Vulnerabilidades Recientes en el Núcleo de Drupal (2020)

Recientemente, Drupal ha abordado un total de 3 vulnerabilidades que afectan al núcleo de sus diferentes versiones. Dos de ellas han sido catalogadas como críticas y una de riesgo bajo. Para estos fallos han sido reservados los siguientes identificadores: CVE-2020-13663, CVE-2020-13664 y CVE-2020-13665. Las versiones afectadas de Drupal son:

  • anterior a 9.0.1
  • anterior a 8.9.1
  • anterior a 8.8.8
  • anterior a 7.72

CVE-2020-13663: Cross-Site Request Forgery (CSRF)

El fallo identificado como CVE-2020-13663, catalogado como crítico, se da en la Form API del núcleo de Drupal. Este es debido a que Drupal maneja de forma errónea la entrada de datos de las solicitudes cross-site, derivando en una vulnerabilidad Cross-Site Request Forgery (CSRF). La explotación exitosa de esta vulnerabilidad podría permitir a un atacante tomar control del sitio web en el contexto del usuario víctima, modificar o eliminar elementos, entre otros ataques.

CVE-2020-13664: Ejecución Arbitraria de Código PHP

Por otro lado, el fallo identificado como CVE-2020-13664, también catalogado como crítico, se trata de una vulnerabilidad de ejecución de código PHP arbitrario en Drupal 8 y 9. Sabiendo esto, un atacante podría engañar a un administrador para que ingrese a un sitio web malicioso, así crear un directorio en el sistema de archivos y, con este directorio, realizar una ejecución remota de código. Los servidores Windows son más propensos a verse afectados por esta vulnerabilidad.

CVE-2020-13665: Omisión de Validaciones en JSON:API

Por último, el fallo identificado como CVE-2020-13665, catalogado como de bajo riesgo, se da en la especificación JSON:API. Es debido a que algunas solicitudes podrían omitir las validaciones en ciertos campos. Esta especificación funciona en modo read-only por defecto, haciendo imposible la explotación de esta vulnerabilidad en la mayoría de los casos. Sin embargo, los sitios que cuenten con el atributo read_only asignado con false en el archivo jsonapi.settings son vulnerables.

Alertas de Seguridad Actuales (Drupal 10 y 11)

El equipo de seguridad de Drupal ha publicado avisos de seguridad más recientes sobre vulnerabilidades críticas y moderadamente críticas en el núcleo de Drupal, afectando a versiones anteriores a Drupal 10.3.13, 10.4.3, 11.0.12 y 11.1.3. Estas vulnerabilidades incluyen Cross Site Scripting (XSS), omisión de controles de acceso y una cadena de gadgets PHP (Gadget Chain), lo que podría permitir la ejecución remota de código en ciertas circunstancias. Además, se ha señalado que Drupal core no filtra adecuadamente los mensajes de error en ciertas circunstancias, lo que permite ataques de tipo XSS reflejado.

Es importante recordar que todas las versiones de Drupal 10 anteriores a 10.3 han alcanzado su fin de vida y no recibirán más actualizaciones de seguridad. Esto hace que la migración a versiones soportadas sea una prioridad crítica.

Esquema de las vulnerabilidades XSS y RCE

Estrategias de Gestión y Priorización de Vulnerabilidades

Como administradores de sistemas, nos enfrentamos diariamente a diversas vulnerabilidades. Para mantenernos informados acerca de estas, podemos aprovechar varias fuentes, como suscribirnos a portales especializados, seguir canales en distintas redes sociales y estar atentos a los mensajes de actualización en los propios sistemas que administramos, entre otras.

Cuando nos enfrentamos a múltiples vulnerabilidades distribuidas en nuestros sistemas y contamos con recursos limitados para abordar su corrección, es crucial contar con una metodología efectiva que nos permita clasificarlas y priorizarlas adecuadamente. Al mencionar recursos, nos referimos no solo a recursos humanos con experiencia, sino también a licencias de software y costo de hardware.

Herramientas para la Priorización: CVSS y EPSS

Afortunadamente, existen herramientas open source que pueden ayudarnos en este proceso de priorización:

  • Common Vulnerability Scoring System (CVSS): CVSS nos brinda una forma de clasificar las vulnerabilidades, asignándoles una puntuación basada en diversos factores como la gravedad y el impacto potencial. Esta clasificación nos proporciona una comprensión más clara de la importancia relativa de cada vulnerabilidad.
  • Exploit Prediction Scoring System (EPSS): Por otro lado, EPSS es una herramienta que nos ayuda a priorizar las vulnerabilidades en función de la probabilidad de ser explotada en los próximos días.

Recomendaciones de Seguridad para Administradores de Drupal

Actualizar o mejorar Drupal (o cualquier otro CMS) puede tener efectos secundarios, como plantillas o funcionalidades rotas. Por ello, es fundamental realizar una copia de seguridad completa y probar los cambios en un entorno de staging antes de pasar a producción. La implementación de un CMS suele ser la parte fácil; su mantenimiento es donde surgen la mayoría de los problemas debido a la falta de conocimiento, el miedo a romper algo y, por supuesto, los costos.

Los sitios web comprometidos, grandes y pequeños, siguen siendo un objetivo codiciado que los atacantes intentarán acumular con el tiempo. Y debido a que el parcheo sigue siendo un problema, el número de posibles nuevas víctimas no deja de crecer. En particular, los Web Application Firewalls (WAFs) han ayudado a muchos a mantenerse protegidos incluso contra nuevos tipos de ataques, y aun cuando su CMS era vulnerable.

Mantener Drupal actualizado, aplicar parches de seguridad tan pronto como estén disponibles, y seguir las mejores prácticas de seguridad son pasos indispensables para proteger cualquier sitio web construido con este CMS. La vigilancia constante y la proactividad son clave para mitigar los riesgos asociados con vulnerabilidades como las de la serie Drupalgeddon y las más recientes.

tags: #drupalgeddon #3 #versiones #vulnerables