¿Hay alguna forma de evitar que los piratas informáticos utilicen cookies para evitar la verificación en dos pasos?

16

Tomemos como ejemplo los inicios de sesión de Steam / Google / FB / Microsoft / Twitter.

Todos ellos ofrecen verificación en dos pasos a través del mensaje SMS. Digamos que el hacker no tiene acceso a mi teléfono. Pero él tiene acceso a mi computadora en un momento dado.

El hacker extrajo mi cookie de mi navegador (es fácil de hacer) y luego la coloca en su navegador.

En teoría, podría utilizarlo para iniciar sesión en el servicio sin tener que pasar por el proceso de verificación en dos pasos.

¿Hay alguna forma de detectar este tipo de comportamiento o evitar que esto suceda?

Además, para los proveedores de servicios que utilizan la autenticación OAuth proporcionada por los mencionados anteriormente, ¿hay algo que puedan hacer para detectar ese comportamiento?

    
pregunta Steve 26.03.2018 - 17:48
fuente

2 respuestas

20

La respuesta de Matthew es definitivamente la correcta, pero pensé en seguir con más detalles:

La autenticación basada en cookies tiene una gran debilidad: la cookie es todo lo que necesita para autenticar. Si alguien es capaz de robar la cookie de un usuario, no hay nada integrado en el proceso de autenticación de cookies que permita al servidor saber que han ocurrido shenanigans. Utiliza el ejemplo de un atacante que tiene acceso físico a la computadora, pero ese es un caso raro a tener en cuenta. Las vulnerabilidades de XSS en sitios con cookies inseguras son una forma mucho más común de que las cookies sean robadas. También es común: ataques de fijación de sesión, rastreo de paquetes en redes inalámbricas inseguras para sitios que no usan https y varias otras formas de ataques MITM. Para que quede claro, esto no es solo un problema para la autenticación basada en cookies. El problema subyacente es que HTTP es un protocolo sin estado, lo que significa que si puede reproducir una solicitud anterior por completo, no hay forma (integrada en HTTP) de que el servidor sepa que usted no es la misma persona.

Entonces, ¿cómo se aseguran los servicios de que la persona con la que hablan sea la persona con la que realmente quieren hablar? La respuesta no es necesariamente sencilla. Como menciona Matthew, debe monitorear sus credenciales de acceso de otras maneras: cambios de dirección IP, cambios de navegador, cambios de agente de usuario, etc. En esencia, realiza un seguimiento de los metadatos relacionados con los dispositivos con los que está hablando y presta mucha atención. a cualquier cambio sospechoso.

Como se nota en un comentario, incluso esto no es infalible. La gente, obviamente, puede falsificar a los usuarios de agentes. Esto podría ser contrarrestado mediante el uso de técnicas de toma de huellas dactilares del dispositivo ( Huellas dactilares del dispositivo y vigilancia masiva por computadora ) sobre el cual un atacante tiene sustancialmente menos control. Las direcciones IP no son fijas, especialmente para los operadores de telefonía móvil, pero siempre que cada dispositivo tenga su propia cookie, incluso esto puede ser rastreado y contabilizado. Si una cookie determinada se ha asociado con la misma dirección IP durante 6 meses y aparece repentinamente en otro país, es probable que tenga un problema. Si un dispositivo cambia con frecuencia las direcciones IP (es decir, un teléfono) pero ahora aparece con una dirección IP no asociada con un operador de telefonía móvil o su área geográfica habitual, es probable que tenga un problema. La otra cosa a tener en cuenta es que cada dispositivo debe tener una cookie única. Por lo tanto, incluso si la dirección IP asociada con una cookie cambia normalmente, si ahora recibe solicitudes de esa cookie desde dos direcciones IP diferentes al mismo tiempo , es probable que tenga un problema.

Al final, la forma más sencilla de arreglar las cosas si parece que está pasando algo raro es simplemente invalidar todas las cookies (es decir, cerrar la sesión del usuario). El usuario legítimo solo tiene un pequeño inconveniente: solo tiene que volver a iniciar sesión. Aunque el atacante ha perdido todo acceso y debe volver a empezar.

La quita

Debería haber un par de conclusiones obvias de la discusión anterior:

  1. No hay una respuesta definitiva. Un atacante lo suficientemente inteligente tiene muchas maneras de tratar de ocultar que ha robado credenciales, una vez que son robadas.
  2. Un sistema que no haya configurado una seguridad / supervisión extensiva en torno a sus credenciales de inicio de sesión no tendrá forma de saber que algo está sucediendo ni de cómo reaccionar.
  3. No hay un punto claro "De acuerdo, ahora estás seguro". El sistema puede hacer muchas cosas para asegurar las credenciales de inicio de sesión, pero en última instancia, hay cosas que no están bajo el control del servidor y que pueden permitir el robo de credenciales. Hay formas de detectar las credenciales robadas, pero no siempre son fáciles o directas y pueden requerir mucho esfuerzo para configurarlas, ajustarlas y usarlas. También es posible ser demasiado entusiasta y causar problemas a los usuarios legítimos.

Entonces, ¿cómo minimizan los chicos grandes el daño potencial causado por las personas que se marchan con credenciales? Respuesta corta: Defensa en profundidad. Asegure las credenciales de acceso en todas las capas de la aplicación, supervise los metadatos de los clientes que usan credenciales de acceso y, en caso de duda, cierre la sesión.

    
respondido por el Conor Mancone 26.03.2018 - 20:31
fuente
18

El método básico es cambiar la cookie de forma bastante regular: haga que el atacante que obtiene una cookie de su computadora solo tenga un período limitado de validez. Incluso si la sesión se mantiene abierta durante más tiempo, puede reemplazar la cookie asociada a la sesión de forma más regular.

Para detectar este tipo de abuso, los servicios también pueden proporcionar una lista de sesiones activas, asociadas con la dirección IP / tipo de dispositivo / etc. Esto permite a los usuarios ver si hay sesiones inesperadas abiertas y cerrarlas.

También es una buena idea solicitar un segundo factor para cada acción importante dentro de la aplicación (como se menciona en @ Xavier59 en el comentario): podrían ser cosas como cambiar la contraseña, cambiar la dirección de correo electrónico asociada o intentar desactivar 2FA.

    
respondido por el Matthew 26.03.2018 - 18:00
fuente

Lea otras preguntas en las etiquetas