Ejecución remota de código no autenticada en vBulletin mediante el uso indebido de la Reflection API en la gestión de anuncios

Se ha descubierto una vulnerabilidad de seguridad importante en el software de foros vBulletin (versiones de la 5.0.0 a la 5.7.5 y de la 6.0.0 a la 6.0.3). Esta vulnerabilidad permite a atacantes sin cuenta en el foro ejecutar código malicioso en el servidor que aloja el foro. Esto puede conducir al control total del servidor, con la posible exposición de datos confidenciales, desfiguración del sitio o el uso del servidor para ataques adicionales. El problema es especialmente relevante para los foros que ejecutan versiones recientes de PHP (de la 8.1 en adelante) y, según los informes, se está explotando activamente.

ProductoVBulletin
Fecha2025-06-02 16:14:45
Información
  • Solución disponible
  • Explotación activa

Resumen técnico

Las versiones de vBulletin de la 5.0.0 a la 5.7.5 y de la 6.0.0 a la 6.0.3 son vulnerables a un fallo de tipo Ejecución Remota de Código (RCE) no autenticado. La causa principal radica en un control de autorización inadecuado combinado con el uso indebido de la Reflection API de PHP, que afecta en particular al punto final ajax/api/ad/replaceAdTemplate.

La vulnerabilidad, identificada como CVE-2025-48827, permite a usuarios no autenticados invocar métodos protegidos del controlador API cuando el software se ejecuta en PHP 8.1 o superior. Esto se debe a que, a partir de PHP 8.1, el comportamiento de la reflexión cambió, permitiendo potencialmente omitir los controles de acceso previstos bajo determinadas condiciones.

Los atacantes pueden aprovechar esta vulnerabilidad enviando una solicitud POST construida adecuadamente a la ruta / con el parámetro routestring configurado en ajax/api/ad/replaceAdTemplate. En dicha solicitud, es posible inyectar en el parámetro template una etiqueta de plantilla maliciosa de vBulletin, como <vb:if condition='" ... "'>, que puede contener código PHP arbitrario, por ejemplo passthru($_POST['cmd']) o, como se vio en la plantilla Nuclei proporcionada, var_dump("some_random_string") como prueba de concepto.

Una segunda solicitud POST, también a / con routestring configurado en ajax/render/ad_<location> (donde <location> corresponde al usado en la primera solicitud), activa el renderizado de la plantilla inyectada, ejecutando así su código PHP con los privilegios del usuario del servidor web.

El exploit aprovecha, por tanto, un proceso dividido en dos fases: primero para inyectar el código de plantilla malicioso mediante replaceAdTemplate y luego para renderizarlo y ejecutarlo mediante ajax/render/ad_<location>. Esto permite a un atacante no autenticado obtener la ejecución remota de código.

También se menciona la vulnerabilidad CVE-2025-48828, probablemente referida a un aspecto estrechamente relacionado de esta cadena de vulnerabilidades o al problema más amplio de la invocación de métodos protegidos.

Recomendaciones

  1. Actualizar inmediatamente: actualizar vBulletin a la versión 6.0.4 o superior. Si utiliza vBulletin 5.x, aplique todos los parches de seguridad disponibles, en particular aquellos que abordan la invocación de los métodos protegidos del controlador y el aseguramiento de la funcionalidad de sustitución de anuncios.
  2. Web Application Firewall (WAF): implementar reglas WAF para bloquear las solicitudes que intentan explotar esta vulnerabilidad. Estas reglas podrían:
    • Inspeccionar el parámetro routestring para identificar valores sospechosos como ajax/api/ad/replaceAdTemplate o ajax/render/ad_.
    • Detectar etiquetas de plantilla de vBulletin (<vb:if>, etc.) que contengan funciones PHP de ejecución (ej. passthru, shell_exec, system, eval, exec, var_dump) dentro del parámetro template de la llamada replaceAdTemplate.
    • Bloquear la invocación directa de métodos API protegidos si el WAF es capaz de identificar dichos patrones.
  3. Consideraciones sobre la versión de PHP: aunque la posibilidad de explotar la vulnerabilidad es mayor en PHP 8.1+, los defectos lógicos subyacentes pueden existir también en versiones anteriores de PHP. No confíe en el uso de una versión más antigua de PHP como mitigación completa.
  4. Análisis de los registros del servidor: monitorear los registros de acceso del servidor web y los registros de la aplicación en busca de solicitudes que coincidan con el patrón del exploit (solicitudes POST a / con routestring=ajax/api/ad/replaceAdTemplate o routestring=ajax/render/ad_) para detectar posibles intentos de compromiso.

[Callforaction-THREAT-Footer]