Aviso de Seguridad: XSS Almacenado en bbPress

Share this…

Nivel de Seguridad: Peligroso
Nivel de Explotación: Fácil/Remoto
DREAD Score: 7/10
Vulnerabilidad: XSS Almacenado
Versión Parcheada:  bbPress 2.5.9

Durante una audición de rutina para el Firewall de Sucuri, descubrimos una vulnerabilidad XSS almacenada que afecta el plugin bbPress para WordPress instalado en 300.000 sitios web en vivo – incluso el popular foro de soporte wordpress.org.

Línea del Tiempo de Divulgación de la Vulnerabilidad:
  • 12 de abril de 2016 – Bug descubierto, relato inicial al equipo del bbPress
  • 2 de maio de 2016 – el equipo de bbPress anuncia el lanzamiento de seguridad
  • 3 de maio de 2016 – Sucuri anuncia el lanzamiento

¿Su Sitio Web Está En Peligro?

Este bug está presente en cada instalación estándar de bbPress < 2.5.9,, entonces sí, su sitio web está en peligro. La vulnerabilidad permite a cualquier usuario malicioso participar en un foro para insertar fragmentos de código JavaScript maliciosos en los mensajes y respuestas. Esto es muy peligroso, debido a la naturaleza social de los foros.

Como es una vulnerabilidad Cross-Site Scripting (XSS), puede permitir al usuario secuestrar (hijack) otra cuenta de usuario y tomar acciones en su nombre (por ejemplo, administradores, moderadores, etc.) para escalar privilegios del usuario.

Detalles Técnicos

Todos los posts y respuestas son desinfectados por la función de WordPress wp_kses(), que actúa como una función desinfectante de white list. Esto significa que sólo permite tags HTML aprobadas y sus atributos en la lista blanca (y protocolo de URL para atributos como el href y src) a través del motor de filtrado.

La función bbp_mention_filter es interesante, ya que es una de las pocas funciones que no viene de WordPress.

vulnerabilidad-wordpress-840x448

Ese código hace lo siguiente:

  • Busca menciones en el post: bbp_find_mentions, y el resultado es cada combinación de regex: /[@]+([A-Za-z0-9-_\.@]+)\b/
  • Para cada combinación, verifica si ella corresponde a un usuario conocido y si ese usuario está activo o no lo está.
  • Una vez hecho esto, se reemplazarán estos términos por una tag HTML de hyperlink, con el enlace a la página de perfil del usuario.

El código no comprueba si las referencias encontradas ya se encuentran dentro de un atributo de tag HTML. Así que si un usuario con el nombre de “test” enviar una respuesta que contiene una tag de=o hyperlink cuyo atributo está configurado para@test, que rompería la tag del hyperlink.

Para ilustrar, esto:

<a href="@test">link</a>

… se convertería en:

<a href="<a href="https://targetsite/test/profile/" rel="nofollow">test</a>">link</a>

Este código rompe la secuencia de comillas dobles de la tag del hyperlink, permitiendo al atacante insertar handlers de eventos arbitrarios (parecido con la divulgación del Akismet), con el fin de ejecutar el código malicioso Javascript.

Actualice Pronto

Si está utilizando una versión vulnerable de este plugin, ¡actualícelo ahora mismo! Si no puede hacerlo, lo recomendamos que utilice un Firewall o una tecnología equivalente para parchearlo virtualmente.

Fuente:https://blog.sucuri.net