Son alrededor de las 12 a.m. durante un frío invierno en Washington en 2019 : estaba en la cama y estaba a punto de quedarme dormido cuando me despertó una breve ráfaga de música increíblemente alta. “¿Era un auto afuera?”, pensé, tratando de entender lo que estaba pasando. Después de asomar la cabeza por la ventana y no encontrar nada , volteé a mi televisor y vi Spotify reproduciendo algo. Cansado, confundido y sin mis lentes, lo apagué sin leer la pantalla.

Después de saltar , más asustado que la mayoría de las películas de terror, intenté volver a dormir . Cuando finalmente logré relajarme…

“Seni asla bırakmayacağım, seni asla yüzüstü bırakmayacağım !!!”

Salté de la cama ( con gafas esta vez ) , revisé mi televisor y, efectivamente, era la fuente del ruido. Después de apagar todo desde la regleta, revisé mi cuenta de Spotify y encontré la lista de reproducción inmediatamente sospechosa llamada “Rap Türkçe.”

Reconstruyendo las cosas, pensé que mi cuenta debía haber sido pirateada y que el hacker había agregado una lista de reproducción y trató de transmitir música a mi televisor.

Examinando mi correo electrónico, encontré uno de Spotify escrito en un idioma extranjero que confirmaba que se había agregado un correo electrónico a mi cuenta. Al día siguiente , me comuniqué con Spotify y su atención al cliente me ayudó a recuperar mi cuenta. Curiosamente me recomendaron quitar la conexión que me permitía iniciar sesión con mi cuenta de Facebook. Pensé que era extraño, pero lo archivé en el fondo de mi cerebro para más tarde.

Un avance rápido hasta hace un par de semanas, y algunos de mis compañeros de trabajo mencionaron que buscaban ideas para la publicación de blog de este mes. No hace falta decir que este incidente fue mi primer pensamiento. Decidimos echar un vistazo más de cerca a lo que sucedió desde una perspectiva técnica para ver si hay algo que una empresa pueda hacer para mitigar este tipo de incidente.

Nos enteramos de que esto era parte de una violación a gran escala de tokens de acceso de Facebook que ocurrió a fines de 2018 , lo que permitió a los atacantes acceder a cualquier cosa con la opción “Iniciar sesión con Facebook”.

Facebook es solo uno de los muchos proveedores de identidad social (IdP ). Cuando permite que sus usuarios se registren con cualquiera de estos proveedores, está confiando en ellos para mantener las cosas seguras. Eventos como este demuestran que la plena confianza en un IdP de terceros tiene su propio conjunto de riesgos . La recomendación fácil aquí es habilitar solo el registro basado en correo electrónico, pero esto introduce más fricción cuando los usuarios se registran para obtener una cuenta, que es lo que estos IdP de terceros fueron diseñados para evitar en primer lugar. Entonces, la siguiente pregunta es: ¿podemos tener nuestro pastel y comérnoslo también? Para responder eso, primero debemos echar un vistazo a los tokens de acceso.

Antecedentes: ¿Qué son los tokens de acceso y por qué son tan importantes?

From https://tools.ietf.org/html/rfc6749 Section 1.2 

De https://tools.ietf.org/html/rfc6749 Sección 1.2

El diagrama anterior es un flujo de inicio de sesión de alto nivel del RFC de OAuth 2.0. En mi caso, yo sería el propietario del recurso , Facebook el servidor de autorización y las API de Spotify serían el servidor de recursos para el que se requieren los tokens de acceso. Observe cómo tener un token de acceso le permite omitir el proceso de autorización, por lo que el atacante no tiene que demostrar quién es . Pero afortunadamente, tampoco conocen la contraseña real del usuario.

Solution 1: Two-factor authentication 

Solución 1: Autenticación de dos factores

Dado que dos factores es algo que el servidor de autorización normalmente realizaría antes de emitir un token de acceso, esto no ayuda si el atacante ya tiene un token de acceso . Sin embargo, una aplicación podría evitar el bloqueo del usuario real al requerir que el atacante inicie sesión nuevamente o complete un factor de autenticación adicional antes de modificar el nombre de usuario, la contraseña u otros datos críticos.

Solución 2: Correos electrónicos de modificación de cuenta

Si el #1 no está implementado o el atacante tiene las credenciales, el usuario real aún recibirá una notificación de que su cuenta fue modificada sin su consentimiento. Este fue el caso en mi situación y me ayudó a tener plena confianza de que alguien había secuestrado mi cuenta.

El mensaje de cambio de correo electrónico que recibí fue un poco sospechoso considerando que no vivo en Turquía.

Solución 3: Detección de IP y geolocalización

Si juegas juegos de PC y también tienes la mala suerte de tener intentos de piratería en tu cuenta, sabrás que Steam envía correos electrónicos si se intenta iniciar sesión desde un dispositivo con una IP inusual. Esto es posible con la geolocalización de IP , que funciona mediante el uso de una base de datos de direcciones IP para asignaciones de ubicación . Hay muchas opciones para elegir, como bibliotecas, API web y grandes servicios en la nube.

https://ipstack.com/ tiene una buena demostración en su página principal que mostrará su ubicación. Tienen un nivel gratuito de 10k solicitudes por mes. También hay un proyecto de código abierto afiliado a ellos . A pesar de que ha quedado en desuso, esto aún podría funcionar si desea alojarlo usted mismo.

Microsoft también lanzó recientemente el bloqueo de IP geográfica como parte de una función de vista previa en B2C llamada Acceso condicional. Cualquier aplicación protegida por una solución de identidad administrada como B2C no aceptará tokens directamente de un IDP de terceros como una red social.

Supongamos que un atacante obtiene las credenciales válidas de un tercero que está configurado como proveedor en B2C. Con el acceso condicional, podemos bloquearlos incluso con el inicio de sesión válido de un tercero definiendo algunas políticas.

A continuación, definí una regla personalizada simple que demuestra esto. Desde el menú principal en “Seguridad à Acceso condicional (vista previa), fui a “Administrar à Ubicaciones con nombre” e hice esta ubicación :

Dejar la casilla “incluir áreas desconocidas” nos permite excluir IPs anónimas de fuentes como TOR . Después de definir la ubicación, la usé para hacer la siguiente política.

La aplicación seleccionada apunta a https://jwt.ms/, que le permite ver el contenido de un token. Esta configuración impidió que un usuario de Google válido e iniciado sesión se autenticara detrás de una VPN de otro país. También bloqueó al mismo usuario válido sin una VPN usando TOR.

Puede consultar mi demostración aquí y el código de mis políticas personalizadas en GitHub. Puede implementar esto usted mismo siguiendo las instrucciones para los flujos integrados o la referencia del perfil técnico si usa políticas personalizadas.

Sin embargo, esto se puede falsificar usando cosas que ocultan su dirección IP, como una VPN o un proxy. Un atacante que haga sus deberes podría usar una VPN ubicada en el país de origen del usuario real . Es posible que esto no siempre valga la pena para un pirata informático, ya que generalmente juegan un juego de grandes números. ¿O qué pasa si el usuario real viaja a otro país? Si tuviéramos una forma de identificar de forma única el dispositivo de un usuario, podríamos dejarlo entrar desde un país diferente o bloquear a un atacante que suplantara su dirección IP desde otro dispositivo.

Solución 4: huellas dactilares del dispositivo

Según Electronic Frontier Foundation , la recopilación de suficientes puntos de datos sobre un usuario se puede utilizar para identificar de forma única su dispositivo en una población completa. ¿Escéptico o curioso? Tienen una demostración que mostrará si su huella digital es única entre todas las que han visto.

Curiosamente, existen servicios en la nube que realizan tanto la toma de huellas dactilares como la geolocalización de IP. FingerprintJS Pro y Microsoft Dynamics Fraud Protection ( DFP) son dos opciones . Orientados a usuarios empresariales que procesan pagos , ambos servicios cuentan con todas las funciones y , por lo tanto , no son baratos. Aquí hay una tabla de comparación rápida

  Microsoft DFP  FingerprintJS Pro 
Geolocalización IP     
Dispositivo de huellas dactilares     
Historial de acceso del usuario  No   
Protección contra el fraude en el comercio electrónico    No 
Precios y escalabilidad  $ 1000 / mes para consultas de protección de cuenta de usuario de 100k $100/mes por 100k consultas

Una vez que tenga la ID de dispositivo única de un usuario, puede almacenarla de forma segura como uno de sus dispositivos registrados y aprobados. Esto ayuda con los problemas de usar solo la geolocalización IP anterior, pero tendría que tener en cuenta si el costo adicional y la complejidad valen la seguridad adicional.

Solución 5: Evaluación de acceso continuo

Todas las soluciones anteriores requieren que implementemos una característica o un servicio. ¿No sería bueno si no tuviéramos que hacer ningún trabajo extra? Afortunadamente, la fundación OpenID , Microsoft y Google están trabajando en una solución llamada Evaluación de acceso continuo (CAE). El problema es que una cuenta comprometida crea un “vínculo débil” que se puede utilizar para acceder a otras cuentas que posee el usuario. El servidor de autorización puede reaccionar a esos eventos y notificar al cliente, que luego invalida su token de acceso en caché n. También reconocen que muchas soluciones actuales se centran en la autorización. durante el inicio de sesión y no mucho más allá de eso , que es otro vacío que se pretende llenar.

Enlaces débiles , enfoque en la autorización únicamente, solución del lado del cliente … ¿le suena familiar ? Espero que esto se convierta en un estándar de la industria que pueda proteger a los usuarios de experimentar mi situación o algo peor.

Nuestro objetivo aquí no es asustarlo, sino crear conciencia sobre una cosa más que puede salir mal con la administración de identidad y cómo podría detenerla. Mantente a salvo y no, me temo que no puedo recomendarte ningún buen rap turco.

Ingeniero de software Matt Takemoto