¿No es OAuth, OpenID, Facebook Connect y otros locos desde un punto de vista de seguridad?

51

Trabajo con API todo el tiempo y trabajo con desarrolladores web que insisten en que OAuth, OpenID, etc. son muy superiores a los métodos de elaboración casera. Cada sitio parece estar usando estos también ahora para facilitar el uso para el usuario, pero también para la seguridad. Lo escucho todos los días casi que es más seguro, pero me parece extremadamente difícil de creer por varias razones:

  1. Si un pirata informático obtiene de alguna manera su contraseña para un sitio, sabe que tiene acceso a la mayoría de los sitios que visita ahora.

  2. Facilita el phishing 10 veces. Con tanta gente que usa los mismos inicios de sesión y vuelve a hacerlo, una y otra vez es menos probable que las personas lean todo y comprueben la URL arriba.

¿Podría enumerar más razones por las que no es seguro o podría explicarme por qué es más seguro? No veo por qué aguantaría la molestia de integrar uno de estos cuando parece que un usuario estaría bien ingresando en 3 campos (nombre de usuario, contraseña, correo electrónico) en lugar de hacer clic en el logotipo del servicio para iniciar sesión (Twitter, Google, FB, etc.), ingresando su nombre de usuario / contraseña, haciendo clic en enviar, haciendo clic en aprobar.

== Actualizar ==

Para ampliar mi pregunta según la solicitud.

A mis dos puntos anteriores, # 1 , no importa cómo lo obtenga el hacker. No estoy seguro de cómo ampliarlo exactamente. Usted podría forzarlo, adivinarlo, usar la contraseña olvidada y hacer un ataque de diccionario a preguntas comunes, etc. Sin embargo, como quiera que sea, 1 contraseña para acceder a 1000 servidores es mucho menos segura que 1000 contraseñas para acceda a 1000 sitios diferentes. Personalmente, puedo adivinar algunas de las contraseñas de mis amigos y familiares y tendré acceso a todo tipo de cuentas. Ni siquiera tendría que buscarlos. Mientras navego por la web, simplemente inicie sesión ... Si era un hacker, muchas de estas contraseñas son muy fáciles de descifrar. Algunas de las contraseñas de mi amigo son, pepsi , tina (entonces año de nacimiento), 123456 , y otras estúpidas. Aunque mi favorito es tomcruisesucks LOL.

Para el punto # 2 , para ampliar más, podría ir a enlace , enlace , enlace , enlace y todos tienen un nombre de usuario de Twitter. Confío en los sitios (en su mayor parte) así que, honestamente, no reviso la URL de la ventana emergente que aparece para iniciar sesión y asumo que la mayoría no lo hace. Esa ventana emergente podría haber sido fácilmente pirateada por un pirata informático que ingresa a uno de sus servidores, un empleado malvado o simplemente un sitio de aplicaciones falsas que un bot está enviando a las personas a través de Twitter que varias personas inician sesión en esta aplicación falsa, pero usando el inicio de sesión de Twitter.

Las personas están acostumbradas a ver las mismas páginas de inicio de sesión que ya no se ven . Si este hilo se vuelve lo suficientemente popular, puedo hacer fácilmente una prueba súper simple en Twitter o FB enviando a todos un enlace a una aplicación falsa, tener una ventana emergente que se parece a Twitter o FB y ellos iniciarán sesión. Lo garantizo. Si hago que la pantalla de inicio de sesión vaya a, digamos, enlace o enlace se preguntarán por qué estoy aquí, por qué necesitan esta información, etc. Los mismos sitios utilizados para iniciar sesión una y otra vez son extremadamente malos en la práctica.

Ese es mi punto de discusión ampliado;)

    
pregunta Oscar Godson 22.05.2011 - 08:18
fuente

10 respuestas

23

Supongo que no hay una solución realmente buena para los sitios web de uso cotidiano (por ejemplo, no sitios de alto perfil, como bancos para los que los usuarios aceptan y económica permite una autenticación de dos factores). Solo se puede elegir una solución con el menor impacto negativo posible.

Desafortunadamente, las personas no son buenas para recordar un gran número de contraseñas. Esto hace que reutilicen la misma contraseña en diferentes servicios o que la escriban (en papel o con un administrador de contraseñas). Sí, hay consejos para crear un sistema de contraseñas que incluya el nombre del sitio.

Pero la gente es perezosa. La reutilización de la contraseña es peor que una cuenta central porque significa que una vulnerabilidad en cualquier aplicación revela la contraseña.

En el juego Stendhal , la mayoría de los trucos de cuentas los realizan miembros de la familia. Supongo que eso es especial para juegos. El siguiente grupo es la adivinación aleatoria de nombres de usuario / contraseñas. Pero hay una pequeña cantidad de intentos de pirateo que se basan en obtener acceso a la cuenta de correo electrónico . Si bien no permitimos el restablecimiento automático de contraseñas mediante correo electrónico, muchos sitios web lo hacen. La administración superior de Twitter fue hackeada explotando una cuenta de correo electrónico de Hotmail caducada y reutilizada contraseñas.

Entonces, si considera permitir el restablecimiento de la contraseña por correo electrónico, existe un pequeño riesgo adicional al delegar el proceso de autenticación a las grandes empresas. Todos ellos tienen medidas para dificultar a los atacantes (recuperación a través de mensajes de teléfono móvil en caso de actividad sospechosa, historial de inicio de sesión, advertencias sobre intentos de inicio de sesión de otros condados, etc.). Es mucho trabajo implementarlos en tu propio sitio.

En una nota personal, hubiera preferido el enfoque Account Manager ( especificación ) sobre la confianza en una de esas empresas. Además, no tiene el problema de phishing. Desafortunadamente, el proyecto no parece progresar.

Al final, decidimos que Stendhal sea compatible con OpenID y las cuentas locales y dejar que los usuarios decidan.

    
respondido por el Hendrik Brummermann 22.05.2011 - 10:59
fuente
16

Desde una perspectiva de seguridad, tener un mecanismo probado es casi siempre mejor que rodar el suyo. Los errores de implementación son una de las formas más comunes en que se rompe un buen concepto de seguridad.

Desde una perspectiva de usabilidad, prefiero un poco la verdad, es fácil de usar, por lo que para sus usuarios finales es un gran beneficio. Un usuario medio no técnico se deja intimidar por la seguridad manifiesta, por lo que minimizar la intrusión de la funcionalidad de seguridad es una ventaja para los sitios con gran cantidad de usuarios.

El riesgo de phishing no es realmente mayor. La gente no presta atención a la fuente de los correos electrónicos de todas formas :-)

    
respondido por el Rory Alsop 22.05.2011 - 10:46
fuente
16

Los beneficios de los sistemas como OAuth son:

  • hay menos bases de datos en el mundo que almacenan las credenciales de inicio de sesión de un usuario. Considerando un servicio como Twitter, esto significa que su nombre de usuario y contraseña son conocidos solo por Twitter y no por Favstar, Amazon, LinkedIn, New York Times y todas las demás aplicaciones que se basan en el servicio.
  • como dice @Rory, el sistema está en uso general y ha sido probado y (con suerte) asegurado en la medida apropiada.

Estos dos beneficios abordan su punto 1: está bien, entonces todos estos servicios usan la misma contraseña, pero tienen que hacerlo de todos modos porque deben usar su cuenta de Twitter. no se almacena en una variedad de lugares con una variedad de medidas de protección.

El inconveniente principal no es diferente del inconveniente que afecta a toda la IU de inicio de sesión: cualquier persona puede crear una IU de inicio de sesión que se vea así y usarla para obtener sus credenciales.

    
respondido por el user185 22.05.2011 - 10:58
fuente
13

Sin un escenario y un modelo de amenaza específicos en mente, es difícil responder a tu pregunta.

Pero una clara victoria es el clásico caso de uso de OAuth . Resulta que los usuarios están increíblemente dispuestos a dar a un sitio web su contraseña para otro sitio web, por ejemplo. su contraseña de Google a un sitio de redes sociales como Shelfari. Y como señala Kalsey, a veces se sorprendían horriblemente con lo que Shelfari hizo con esa contraseña y, como Shelfari podía hacerse pasar por ellos, Google no podía detener el abuso fácilmente.

Ahora, con OAuth, una aplicación como Shelfari solo obtendría un acceso parcial a través de una API a la base de datos de contactos del usuario, y Shelfari usaría una clave API que Google podría revocar fácilmente.

En el mundo real, es muy probable que los usuarios reutilicen las contraseñas en múltiples sitios, por lo que su ataque en el # 1 tiene la posibilidad de trabajar en muchos lugares como están. De hecho, podemos esperar que los usuarios utilicen una mejor contraseña para su importante sitio de OpenID, o que utilicen aut-factor de 2 factores, o lo que sea.

En cuanto al número 2, el punto con los inicios de sesión de OpenID es que se convierte en algo inusual en un sitio que cree que no ha iniciado sesión, cuando observa que ha iniciado sesión en sus otros sitios web. Por otro lado, ya es sencillo sin OpenID u OAuth hacer que un sitio se vea como twitter, y que se vincule al sitio y espero convencer a la gente para que inicie sesión y obtenga sus contraseñas. Si la gente siempre inicia sesión en Twitter (por ejemplo, para otros sitios a través de OAuth o OpenID), entonces es probable que pregunten por qué aún no han iniciado sesión.

    
respondido por el nealmcb 24.05.2011 - 23:54
fuente
10

Escribió esto sobre la ID federada.

Básicamente, se trata del problema del riesgo centralizado o de las claves del reino. Esto también se aplica a los administradores de contraseñas , pero asegurando un pequeño número Los sistemas de identidad y autenticación son mucho más fáciles y más efectivos que tener cientos de contraseñas débiles (o la misma contraseña débil cientos de veces). Los proveedores de Open-ID como Google ahora ofrecen autenticación de dos factores; Si no le gusta un token de software en su teléfono, los tokens de hardware USB de Yubikey también son compatibles con muchos proveedores de Open-ID. El control y la auditoría también se han mejorado mucho; ¿Conoces todas las aplicaciones donde has usado una contraseña? Yo tampoco. Sin embargo, muchos proveedores de Open-ID tienen todos los sitios en los que se le ha otorgado acceso a esa identidad.

Desde una perspectiva empresarial, usar algo como Facebook oAuth proporcionará acceso a toda esa información social, análisis y mayores posibilidades de volverse viral. Agregue que es más rápido y más barato que pagarle a un programador para que desarrolle una función de autenticación utilizando algún tipo de autenticación federada que me parece una obviedad.

    
respondido por el Rakkhi 23.05.2011 - 11:19
fuente
9

Uso Google para mi cuenta OpenID. Casi todos los sitios web que no usan OpenID me permiten restablecer la contraseña por correo electrónico, por lo que si alguien tuviera la contraseña de mi cuenta de Gmail, me atorarían.

    
respondido por el Kim 22.05.2011 - 08:53
fuente
7

Tener 1 password stored in 1000 servers es menos seguro que 1 password stored in 1 server which authenticates 999 servers es menos seguro que 1000 password for 1000 servers .

Sin embargo, esto último no es práctico, las personas no son capaces de recordar 1000 contraseñas para 1000 servidores, la única forma en que lo hacen es usar los administradores de contraseñas. ¿Y dónde se encuentra el administrador de contraseñas?

Tener 1 password stored using 1-way encryption in 1000 servers es menos seguro que 1 master password for a password manager which stores 1000 passwords in cleartext or 2-way encryption for 1000 servers es menos seguro que 1 password stored in 1-way encryption in 1 server which authenticates 999 servers es menos seguro que 1000 password stored using 1-way encryption in 1000 servers .

Por lo tanto, OAuth / OpenID puede ser más seguro, conveniente y práctico. Usar la contraseña 1000 sin un administrador de contraseñas no es práctico, y usar el administrador de contraseñas es menos seguro, ya que esas contraseñas deberían almacenarse en texto sin formato o usar cifrado bidireccional.

    
respondido por el Lie Ryan 23.06.2011 - 06:33
fuente
4

# 2 es absolutamente cierto, pero no es principalmente un problema de identificación federal, solo que es aún más crítico en este caso.

Tiene problemas similares con todos formularios de inicio de sesión incrustados en contenido no confiable (en realidad), especialmente porque la autenticación utilizada es la más insegura (el navegador simplemente transmite el secreto, y si tiene suerte el servidor coloca SSL debajo para su conveniencia ...).

Necesita dos cosas para solucionar este y la mayoría de los demás ataques de phishing:

  • interfaz segura para autenticación de usuario, por ejemplo, cuadro de diálogo desplegable de la barra de URL y NO es parte del contenido del servidor.

  • protocolo de autenticación implementado de forma nativa (no por contenido del servidor, como JavaScript) que no revelará el secreto a un servidor potencialmente malicioso (por ejemplo, SRP)

Por cierto, implementé SRP para NSS hace varios años y otros incluso implementaron extensiones GUI. A menos que las tarjetas inteligentes se vuelvan omnipresentes, este es el camino a seguir: enlace

    
respondido por el pepe 23.06.2011 - 04:40
fuente
4

Una forma en que OAuth y OpenID mejoran la seguridad es que hace que tengas que escribir tu contraseña con menos frecuencia. Vincular una cuenta nueva a OAuth / OpenID es solo que me redireccionen al proveedor de identidad, y como ya he iniciado sesión en el proveedor de identidad todo el tiempo, simplemente muestra un mensaje de Sí / No en lugar de un mensaje de contraseña. Ninguna contraseña viaja a lo largo de este intercambio.

Esto te hace más consciente de ti mismo si realmente te piden una contraseña en lugar de solo pasarla.

Entonces # 2 no es realmente un problema.

    
respondido por el Lie Ryan 21.09.2012 - 23:30
fuente
0

Los humanos siempre quieren transferir sus responsabilidades de sus hombros (No todos). La seguridad es una gran responsabilidad y la mayoría de las empresas quieren centrarse en el negocio principal y ofrecer a sus clientes lo mejor de sus productos en lugar de preocuparse por la seguridad.

El único punto de falla es definitivamente algo de qué preocuparse desde una perspectiva de seguridad, pero la gente quiere confiar en las grandes empresas debido al hecho de que obtuvieron gran cantidad de dinero y, con el dinero, vienen buenos ingenieros de seguridad (no exactamente, pero sí. Buenos ingenieros significa buenas prácticas de seguridad. Además, no van a mostrar su espalda a la gente (¡con suerte!).

El phishing es definitivamente un gran problema y la comunidad de seguridad ha estado trabajando en este problema desde hace bastante tiempo. Como mencionó @Rakkhi, las soluciones recientes como Yubikey, Fido U2F para resolver el problema del phishing podrían ayudar a reforzar la seguridad.

Lo único que podríamos esperar es un nuevo cambio de diseño en el que las personas no tengan que elegir sus contraseñas e ingresarlas para poder autenticarlas de forma segura.

    
respondido por el Vicky 26.05.2016 - 16:58
fuente

Lea otras preguntas en las etiquetas