Etiqueta: chrome

Actualización de seguridad para Google Chrome

Google anuncia una nueva versión de su navegador Google Chrome 69. Se publica la versión 69.0.3497.81 para las plataformas Windows, Mac y Linux, que incluye algunas mejoras y soluciona 40 vulnerabilidades.

 

Como es habitual, Google solo proporciona información sobre los problemas reportados por investigadores externos o los considerados de particular interés. En esta ocasión, aunque se han solucionado 40 nuevas vulnerabilidades, solo se facilita información de 21 de ellas (siete de gravedad alta, trece de importancia media y tres bajas).

Se corrigen vulnerabilidades por accesos fuera de los límites de la memoria en los módulos V8BlinkWebAudioMojo y SwiftShader (CVE-2018-16065 al CVE-2018-16069 respectivamente). Desbordamientos de memoria en Skia SwiftShader (CVE-2018-16070 y CVE-2018-16082), acceso no autorizado a archivos en Devtoolsfalsificaciones de direcciones en los diálogos de permisos y en el modo de pantalla completa (CVE-2018-16079 y CVE-2018-16080) y usos de memoria después de liberarla en WebRTC yMemory Instrumentation (CVE-2018-16071 y CVE-2018-16085).

También del trabajo de seguridad interno, varias correcciones procedentes de auditoría interna, pruebas automáticas y otras iniciativas. Según la política de la compañía las vulnerabilidades anunciadas han supuesto un total de 29000 dólares en recompensas a los descubridores de los problemas.

Esta actualización está disponible a través de Chrome Update automáticamente en los equipos así configurados o a través de “Información sobre Google Chrome” (chrome://chrome/). O descargar directamente desde: google.com/chrome.

Más información:
 

Un fallo en Google Chrome permite extraer información sensible de otras páginas

La implementación de la política del mismo origen en las etiquetas HTML multimedia es insuficiente, lo que permite peticionar páginas externas de las que es posible extraer cierta información

Extraer información de tu perfil personal de Facebook si tienes iniciada sesión en él y visitas una web maliciosa. Esta es la prueba de concepto llamativa para esta vulnerabilidad. Es posible extraer tu edad, tus likes, tu histórico de localización…Esta vulnerabilidad ha sido reportada por Imperva, una empresa de seguridad informática dedicada entre otras cosas al análisis de eventos de seguridad. Se dieron cuenta de ella cuando investigaban el comportamiento del mecanismo CORS (Cross-Origin Resource Sharing) en las distintas etiquetas HTML.

Lo que encontraron fue ciertamente interesante… Pero antes es necesario explicar lo básico, para que la vulnerabilidad no nos suene a chino. Primero, es necesario saber que el navegador, por seguridad, restringe bastante las peticiones que puede hacer una página web a otra página web que no esté en su dominio. ¿Qué quiere decir esto? Que la página de facebook.com tal y como se ejecuta en tu navegador, no puede hacer cierto tipo de peticiones a google.com. ¿Por qué este comportamiento? Un ejemplo simple: imagínate que entras a paginamala.com y ésta se pone a hacer peticiones a bancosantander.com, teniendo abierta la banca online… En realidad luego no es tan sencillo, ya que existe otra serie de medidas para evitar que esto ocurra aunque no se respete esa restricción, pero es un control necesario más.

Lo que acabamos de contar arriba no es ni más ni menos que la famosa “same-origin policy” (política del mismo origen), cuyo nombre tras la breve explicación cobra sentido. Lo que pasa es que la web, por definición, no tiene sentido como nodos aislados, y una página funcional necesita recursos de otras webs. No estamos hablando de estar en google.com y desde allí pinchar en un enlace a facebook.com, no. Esto se considera como una acción intencionada del usuario, y no es la misma página la que ejecuta la acción (ni recibe el contenido de facebook.com). Hablamos defacebook.com necesitando una fuente de texto especial alojada en google.com (que tiene una sección para obtener fuentes), para poder mostrarte un texto con esa fuente.

Error en Chrome por realizar una petición que viola la política del mismo origen

Es por esto que para que una web pueda acceder a recursos de otra (siempre que esta otra quiera), se crea el mecanismo CORS antes mencionado, que define una serie de situaciones y acciones que se deben llevar a cabo en éstas que permiten compartir recursos entre orígenes distintos. Y esto es lo que significa CORSbásicamente, “intercambio de recursos de origen cruzado”. En la práctica esto se implementa haciendo el navegador una petición de prueba antes de la real, para preguntar al dominio externo si permite peticiones completas desde otros dominios, y si no lo permite explícitamente, no se hace la petición completa. En algunos casos más relajados se permite hacer directamente la petición completa, pero si el servidor no especifica explícitamente que cierta página externa puede peticionarla (ya sea por no haber sido configurado o por otras razones), el mismo navegador no permite a la página leer la respuesta a la petición.

Ya disponemos de las bases para entender la vulnerabilidad. Como bien sabemos, la parte principal de una web está compuesta por HTML, que a su vez se compone de etiquetas especificando el contenido de la web. Pues bien, en Google Chrome, las etiquetas ‘audio’ y ‘video’, tienen un pequeño fallo. Estas etiquetas son usadas para insertar audio y vídeo en las páginas, y uno de sus atributos es la URL en la que está el recurso, (audio o vídeo). El fallo que tienen es que no comprueban el tipo de recurso (básicamente, que sea audio o vídeo) antes de permitir acceder a cierta información del recurso. Concretamente, sin saber si el recurso es audio o vídeo y mientras lo descarga, esta etiqueta lanza una serie de eventos que el código JavaScript de la página puede capturar y extraer información de éstos.

¿Cuál es el problema de ésto? Que según el número de eventos de cierto tipo que arroje la etiqueta HTML mientras va cargando el recurso sea audio o no, es posible estimar el tamaño del recurso. ¿Realmente esto es un problema? Sí. Y lo entenderemos describiendo el escenario del ataque propuesto por el autor:

  1. Crea una página en Facebook
  2. Publica un post restringido a personas con 18 años
  3. Publica otro post restringido a persona con 19 años
  4. Publica más posts con la misma idea hasta cubrir todo el rango de edad, año a año
  5. Crea una página maliciosa con tantas etiquetas ‘audio’ como posts has creado en Facebook, y que cada una apunte a un post.
  6. Controla la cantidad de veces que se lanza este evento por cada etiqueta, para estimar el tamaño de cada página.
  7. Consigue que la víctima visite tu página maliciosa
La idea de esto es que el post restringido a la edad que tiene el usuario tendrá un tamaño distinto al resto de páginas, que serán más pequeñas porque en vez del ofrecer el contenido del post, devolverán un mensaje del estilo “no estás autorizado a ver este post”. El autor describía esto como jugar a un juego de preguntas de sí o no para adivinar algo, al estilo de Quién es Quién. Este escenario en concreto quizás no se pueda reproducir ahora mismo, ya que Facebook ha cambiado hace poco el sistema de restricción y parece que no se puede restringir por edad a nivel de año, sino por rangos concretos. Igualmente, el autor describe otros campos que se pueden extraer yno sólo es posible con Facebook, sino con cualquier web en realidad que tenga características similares.
Afortunadamente, este fallo (CVE-2018-6177) se reportó por las vías adecuadas (aGoogle de forma privada) y actualmente se encuentra corregido en la versión estable 68. ¿Cómo lo ha corregido Google? Ahora no permite que se dispare ese evento hasta que el navegador no sepa a ciencia cierta que lo que está cargando es un recursos de audio o vídeo. Esta vulnerabilidad es compleja, aunque comparada con el resto de vulnerabilidades que se suelen encontrar hoy en día tampoco es extraordinaria. Eso permite hacerse una idea de la cantidad de conocimiento que es necesario tener sobre un sistema para encontrar una vulnerabilidad medio graveen éste, sobre todo si es el navegador más usado en todo el mundo.
Más información:
 
A Bug in Chrome Gives Bad Actors License to Play ‘20 Questions’ with Your Private Data
https://www.imperva.com/blog/2018/08/a-bug-in-chrome-gives-bad-actors-license-to-play-20-questions-with-your-private-data/

Stable Channel Update for Desktop – Tuesday, July 24, 2018
https://chromereleases.googleblog.com/2018/07/stable-channel-update-for-desktop.html

Control de acceso HTTP (CORS)
https://developer.mozilla.org/es/docs/Web/HTTP/Access_control_CORS

Política Same-origin

Security: Cross Site Resource Size Estimation via OnProgress events
defeat cors attacks on audio/video tags

Chrome dice que mi sitio no es seguro ¿Qué hago?

Hoy es el día elegido (no os quejéis, podrían haber escogido un viernes) para que el navegador Google Chrome comience a marcar los sitios que no posean un certificado como “No seguro”. De momento es un mensaje adosado al nombre del dominio visitado, en gris. No salta a la vista, es algo discreto y con las prisas con las que vivimos hoy día no parece que a muchos les vaya a molestar…hasta que en octubre de este mismo año, ese mismo mensaje, se cabree y se torne de color rojo chillón…Ya lo contaba nuestro compañero Carlos ‘Maestro‘ Ledesma en otra UAD.

Casi es seguro, el resto de navegadores menos uno seguirá la estela marcada por Chrome. Con el tiempo añadirán el mismo mensaje o similar. Así que toca extender un certificado y configurar adecuadamente el cifrado del servidor para que ese mensaje desaparezca cuando nuestros visitantes entren en nuestros dominios. Pero no queremos que esa sea la motivación principal. Existe otra (y muchas más) importantes por las que ya deberías estar ofreciendo cifrado incondicional en todos y cada uno de tus sitios. Además vamos a derribar unos cuantos mitos acerca de los costes y complejidades inherentes a su despliegue.

1.- Respeta la privacidad de tus clientes o visitantes

Las conexiones cifradas no son un adorno ni están ahí para que “salga el candadito”. Están para que otros no capturen y lean el tráfico que se produce entre cliente y servidor. Es posible que creas que ese tráfico “no es importante”, pero en muchos contextos sí que lo es e importa mucho. Incluso si tu sitio es presencial y no existen formularios o campos de búsqueda, la propia traza de visitas de URLs del sitio ya permite crearse un perfil de la persona afectada por no cifrar las comunicaciones.

2.- Da autenticidad a tu dominio

Sin un certificado debidamente extendido un visitante no sabría diferenciarlo de un sitio falsificado. Visitar un dominio no implica que sea el sitio correcto, tanto con un ataque de envenenamiento de la caché DNS como con un ataque sobre rutas BGP nos permite falsificar un sitio si este no posee un certificado adecuado.

3.- Es gratis

Muchas personas y organizaciones piensan que extender un certificado es caro y un gasto innecesario (o simplemente, no dan importancia a los motivos del punto 1). No solo no es caro, es gratis. Iniciativas como Let’s Encrypts nos permiten poseer un certificado libre de costes directos. No hay excusas si habías mirado la inversión en certificados como un gasto inútil. Es gratis. 0 euros. Nada.

4.- Es sencillo

No tengo/No voy a dedicar personal/tiempo para una tarea así. A veces no es cuestión de dineros sino de tiempo o no tener el personal adecuado para extender e instalar un certificado. En realidad es una tarea sencilla, no es compleja. Elige el certificado adecuado (recuerda, Let’s Encrypts…es gratis!), lo obtienes, sigues los pasos indicados por el emisor (todos tienen una guía, por ejemplo), reinicias el servidor y a funcionar.

5.- Mejora tu imagen

A ver. ¿Cómo va a ser lo mismo una conexión plana, ahí, sin candado ni verde y con un mensaje de “No seguro” que una conexión cifrada con un buen candadazo TLS 1.3? Eso dice mucho. Da fuerza, vigor y sienta principios: “Esto es seguro, bueno (toc, toc) y de confianza”. Aunque no lo hagas por la privacidad, te salga gratis y te lo instale un amigo con conocimientos informáticos al que invitarás a una paella a cambio, al menos piensa que va a reforzar tu imagen.

Desbloquea un logro más:

6.- HSTS o mata tus conexiones inseguras

No es suficiente con el certificado y las conexiones bien configuradas, que eso es otro menester. Mientras no configuremos nuestros servidores para que les diga al navegador de nuestros clientes que no usen conexiones inseguras cuando nos visiten, todo esto podría no servir de mucho.

Aunque dispongamos de lo anterior, los ataques de hombre en el medio suelen usar herramientas del tipo ssltrip, donde se puentea la conexión segura hacia una insegura. Sin embargo, si el navegador visitó antes de ese ataque nuestro sitio y recibió la cabecera HSTS entonces optará por no establecer una conexión plana (no cifrada) y cortará las comunicaciones que se dirijan a nuestro dominio. ¿Sencillo verdad?.

HSTS (https strict transport security) no es para nada difícil de implementar. Hay miles de guías para ello. Una sola cabecera http puede proteger a tus clientes y visitantes de ataques de hombre en el medio de forma bastante sencilla y eficaz.

Vulnerabilidad CRÍTICA en Chrome

La vulnerabilidad descubierta por Michal Bentkowski fue reportada a finales de Mayo.

Sin dar a conocer ningun detalle técnico, el equipo de seguridad de Chrome ha descrito el problema como un manejo incorrecto del encabezado CSP (CVE-2018-6148) en su blog.

Para quien no lo conozca, el encabezado de la Política de Seguridad de Contenido (CSP) permite a los administradores de sitios web añadir una capa adicional de seguridad al permitirles controlar los recursos que el navegador puede cargar. 

El manejo incorrecto de estos encabezados por el navegador web podría volver a habilitar vulnerabilidades de tipo XSS, Clickjacking o de inyección de código en varias webs que securizaran su sitio con este encabezado.

Para los que no conozcan estos ataques, aquí tenéis algunas UAD escritas sobre ellos:
– XSS: https://unaaldia.hispasec.com/search?q=xss
– Clickjackinghttps://unaaldia.hispasec.com/search?q=clickjacking
 Inyección de código: https://unaaldia.hispasec.com/search?q=inyeccion

El parche para esta vulnerabilidad ya ha sido lanzado, por lo que todos los usuarios deben de asegurarse que su sistema está ejecutando la última version actualizada del navegador Chrome.

Más información:

Perfil de Twitter de Michal Bentkowski:
https://twitter.com/securitymb

Vulnerabilidad en el blog de Google:

Google Chrome corrige una vulnerabilidad crítica en su sandbox

Google Chrome ha actualizado su reciente versión 66 para corregir cuatro importantes vulnerabilidades, entre ellas una crítica que permitía tomar el control total del navegador saltándose las restricciones de la sandbox.
La actualización 66.0.3359.170, que ya está disponible para todos los sistemas operativos, corregiría las siguientes 4 vulnerabilidades:
  • Crítica: Vulnerabilidad por evasión de la sandbox, que permitiría ejecución remota de código.
  • Alta: Escalada de privilegios a través de las extensiones (CVE-2018-6121)
  • Alta: Denegación de servicio a través del motor V8 (CVE-2018-6122)
  • Alta: Denegación de servicio a través a través de PDFium (CVE-2018-6120)
Como siempre, y hasta que la mayoría de usuarios no hayan actualizado a esta versión, no se publicarán más datos sobre las vulnerabilidades.

Esta actualización está disponible a través de Chrome Update automáticamente en los equipos así configurados, o a través de “Información sobre Google Chrome” (chrome://chrome/).