Bajo varias condiciones, la opción de filtro
$rewrite
, implementada en AdBlock, AdBlock Plus y uBlock
con la actualización 3.2 del 17 de julio de 2018 , permite que se ejecute código arbitrario en una página web que se muestra a un usuario,
informa el blog armin.dev .
Así es como se describe la función del problema en el parche AdBlock:
Este parche implementa la nueva opción de filtro $rewrite
, que permite a los autores de listas de filtros evitar la visualización (principalmente video) de anuncios que anteriormente no se podían bloquear en varios sitios web.
La vulnerabilidad descrita afecta a los tres bloqueadores de anuncios mencionados, cuya audiencia total supera los 100 millones de usuarios. Puede usarlo para atacar cualquier servicio web, incluidos, entre otros, por ejemplo, cualquiera de los recursos de Google. El problema es generalizado, es decir, un ataque con el mismo éxito puede llevarse a cabo en cualquier navegador popular y no depende de su versión.
La vulnerabilidad duró casi 9 meses y se encontró solo ahora.Esencia del ataque
El blogger fuente explica que AdBlock y los otros bloqueadores mencionados usan la opción
$rewrite
para evitar rastrear al usuario y bloquear anuncios al redirigir las solicitudes desde la página web visitada. Entonces,
$rewrite
te permite redirigir y no procesar solicitudes como
SCRIPT
,
SUBDOCUMENT
,
OBJECT
y
OBJECT_SUBREQUEST
.
Se puede producir un ataque si el sitio web utiliza
XMLHttpRequest
o
Fetch
para descargar y ejecutar fragmentos de código, al tiempo que permite realizar solicitudes arbitrarias.
Es decir, para llevar a cabo un ataque, se deben cumplir tres condiciones:
- La página web debe cargar la cadena JS utilizando
XMLHttpRequest
o Fetch
y ejecutar el código devuelto. - La página web no debe usar las directivas de validación de la Política de seguridad de contenido y no debe verificar la URL final antes de ejecutar el código descargado.
- La fuente del código extraído debe admitir una redirección del lado del servidor o contener contenido arbitrario generado por el usuario.
Parece que hay muchas condiciones, y CSP está lejos de ser una novedad en el mundo del desarrollo web. Sin embargo, la principal amenaza para la vulnerabilidad encontrada no es cómo funciona, sino cómo se propaga.
Dado que los sistemas de filtro AdBlock, AdBlock Plus y uBlock son vulnerables, la forma de "infectar" a la víctima final es extremadamente simple: a través del sistema de filtros de actualización automática. No es ningún secreto que una gran parte de los usuarios usan filtros ya preparados, pero no los configuran ellos mismos. En este caso, el autor del paquete de filtro puede implementar una actualización maliciosa, llevar a cabo un ataque y luego "lanzar" el paquete, por lo tanto, "barrer pistas".
Formas de luchar
La forma más fácil de protegerse de la vulnerabilidad mencionada es cambiar a uBlock Origin. Este bloqueador de anuncios no admite la función
$rewrite
, es decir, es imposible implementar el ataque descrito a través de él.
De lo contrario, bajo su propio riesgo, debe esperar la próxima actualización de AdBlock. Literalmente, unas horas después de la publicación en el blog armin.dev,
esta entrada de blog apareció en el blog oficial de bloqueadores en respuesta a la vulnerabilidad
$rewrite
.
En él, la administración de AdBlock asegura que aunque la vulnerabilidad es específica, son extremadamente cuidadosos con la seguridad de su audiencia y
en la próxima actualización, la función $rewrite
se eliminará de AdBlock.
Además, de acuerdo con las garantías de la administración, verifican todas las listas de filtros y las verifican dos veces ahora. Con base en los resultados de la auditoría, la administración informa que ninguna de las listas de filtros existentes describe el método de ataque al usuario contenido. Dado que solo han transcurrido unas cuatro horas entre el momento en que se publicó la publicación original y la respuesta al blog de AdBlock, solo nos alegraremos por la capacidad de respuesta del equipo bloqueador.
Al mismo tiempo, eliminar la función
$rewrite
del proyecto es un paso atrás para AbBlock, ya que fue creado originalmente para combatir los anuncios de video emergentes. Ahora ella regresará por el bien de la seguridad universal. Además, la velocidad con la que se decidió eliminar por completo
$rewrite
del proyecto muestra que, aunque el ataque es específico, las consecuencias de su conducta en masa son demasiado inquietantes.