Hace unos días Google lanzó una extensión open source para Google Chrome, "Password Alert", que busca principalmente mitigar los ataques de phishing dirigidos a obtener cuentas de Google.
Además de comprobar si
cada página visitada "parece" un phishing de cuentas de Google
(comprobando el código HTML en busca de patrones), compara lo que escribes en
ésta con tu contraseña de Google, que la extensión almacena localmente de forma
segura. Concretamente, guarda parte (37 bits) del SHA1 salteado, lo que evita
recuperar la contraseña original en un ataque de fuerza bruta. Ya que se
almacenan pocos bits del hash, habría muchas entradas de la función hash cuya
salida coincidiese con el hash parcial que se almacena, evitando la fácil
recuperación de la contraseña original.
Esto último tendría
relevancia en el caso de que el atacante pudiese obtener el hash parcial
almacenado localmente, lo que sería una grave vulnerabilidad. Pero no se conoce
que sea posible realizar un ataque de estas características. Lo que sí es
posible es evitar que la extensión sea completamente efectiva. Tan pronto como
publican un parche que corrige una forma de evasión, se publica otra. Y en el
momento de publicación de esta noticia, vuelve a ser posible evitar que
funcione correctamente la extensión.
Paul Moore, un
consultor de seguridad informática publicó en menos de 24 horas tras la
publicación de la extensión, la primera forma de evitar el aviso que genera la
extensión cuando se detecta un phishing de Google. El problema residía en que
el aviso se ejecutaba en el mismo contexto que el código JavaScript de la
página, y bastaba con ejecutar cada 5 milisegundos una función que buscase el
aviso por 'id' y lo eliminase.
La respuesta de Google
no se hizo esperar. El mismo día (30 de abril) se publicó un parche que
corregía esta forma de evasión, trasladando el aviso a una nueva pestaña, evitando
así que fuese eliminado por el código JavaScript de la web sospechosa al estar
en un contexto distinto. La versión 1.4 de la extensión veía la luz.
El día siguiente (1 de
mayo), Moore desarrolló otra prueba de prueba de concepto que evitaba que se detectase
el tecleo de la contraseña. Esta vez lo consiguió registrando una función para
el evento 'keypress', que refrescase la página cada vez que se registrase una
pulsación de teclado. Este método no es tan estable como el anterior, ya que
requiere que el usuario teclee la contraseña a una velocidad moderada o alta,
para que no le dé tiempo a la extensión a ejecutarse entre actualizaciones de
la página. En cualquier caso, Moore afirma que funciona la mayoría de las
veces. Pero se publica la versión 1.6 de la extensión y deja de hacerlo.
Tal y como hemos han comprobado desde Hispasec, la última versión de la extensión disponible en la
Chrome Web Store en el momento de escribir esta publicación (la 1.6) sigue
siendo evadible. Basta con incluir la página que se quiere disimular en un
'iframe' con el atributo 'sandbox="allow-forms"'. Esto hará que se
desactive JavaScript para ese 'iframe' (entre otras cosas) y por ese atributo,
permitirá formularios, que es lo que usan típicamente los phishings para robar credenciales.
Y si además se quiere evitar el aviso inicial consecuencia de la búsqueda de
patrones en la página web, se puede aprovechar que la extensión sólo comprueba
los primeros 100 kilobytes de la página. Repetir cualquier etiqueta 'meta' al
principio para rellenar, por ejemplo, es suficiente.
A pesar de que esta
extensión está cubierta por el programa de Google que recompensa por encontrar
vulnerabilidades en sus productos, lo cierto es que Google nunca se ha pillado
los dedos con esta extensión. Antes de anunciarse ésta públicamente, ya
especificaron en el SECURITY.md en GitHub que ninguna forma de evitar la
detección de phishings iba a estar cubierta por el programa. Y que de hecho
esperaban tener que jugar al gato y al ratón según los atacantes fuesen
desarrollando formas de evasión. Y que si los atacantes se esforzasen con
ahínco en ello, se pensarían el meter la funcionalidad directamente en Chrome,
para complicarlo aún más.
Más información:
- Protect your Google Account with Password
Alert (Anuncio oficial) http://googleblog.blogspot.com.es/2015/04/protect-your-google-account-with.html
- Código fuente relacionado con guardar la
contraseña https://github.com/google/password-alert/blob/bbd2aa3b3fdd44204f7f747646049ce81b9dc6d9/chrome/background.js
- Behold: the drop-dead simple exploit that
nukes Google’s Password. Alert
(Primeraprueba de concepto). http://arstechnica.com/security/2015/04/30/behold-the-drop-dead-simply-exploit-that-nukes-googles-password-alert/
- Google’s new version of Password Alert
blocking bypass is bypassed.
(Segunda prueba de concepto). http://arstechnica.com/security/2015/05/01/googles-new-version-of-password-alert-blocking-bypass-is-bypassed/
- Conversación en Twitter sobre la última
prueba de concepto para la versión 1.6. https://twitter.com/securifybv/status/594403213882818560
- Elemento HTML 'iframe'. https://developer.mozilla.org/es/docs/Web/HTML/Elemento/iframe