Investigadores de la empresa de seguridad de codificación web SALT acaban de publicar una descripción fascinante de cómo encontraron un error de autenticación doblado CVE-2023-28131 en un popular conjunto de herramientas de creación de aplicaciones en línea conocido como Expo.
La buena noticia es que Expo respondió muy rápidamente al informe de error de SALT, y se le ocurrió una solución a las pocas horas de la divulgación responsable de SALT.
Afortunadamente, la solución no dependía de que los clientes descargaran nada, porque el parche se implementó dentro del servicio en la nube de Expo y no requirió parches para ninguna aplicación preinstalada o código del lado del cliente.
Expos asesor no solo explicó lo que sucedió y cómo la empresa lo arregló, sino que también ofreció consejos de programación a sus clientes sobre cómo evitar este tipo de posible vulnerabilidad con otros servicios en línea.
Luego, SALT esperó tres meses antes de publicar su informe, en lugar de apresurarlo con fines publicitarios tan pronto como pudo, dando así a los usuarios de Expo la oportunidad de digerir y actuar sobre la respuesta de Expo.
Manteniendo la sencillez
El proceso de autenticación con errores se explica en detalle en informe de sal, pero aquí presentaremos una descripción muy simplificada de lo que salió mal en el servicio OAUTH de Expo.
Aura, corto para Marco de autorización abierto, es un proceso que le permite acceder a datos privados en un servicio en línea (como editar su perfil en línea, agregar un nuevo artículo de blog o aprobar un servicio web para hacer publicaciones en redes sociales para usted), sin configurar una contraseña con , o iniciar sesión directamente en ese servicio.
Cuando vea servicios web que le ofrecen una Iniciar sesión con Google o Facebook opción, por ejemplo, casi siempre usan OAUTH en segundo plano, por lo que no necesita crear un nuevo nombre de usuario y una nueva contraseña con otro sitio web, o dar su número de teléfono a otro servicio en línea.
Estrictamente hablando, usted se autentica indirectamente, solo colocando sus credenciales de Google o Facebook en uno de esos sitios.
A algunos usuarios no les gusta esto, porque no quieren autenticarse en Google o Facebook solo para probar su identidad en otros sitios no relacionados. A otros les gusta porque asumen que sitios como Facebook y Google tienen más experiencia en el manejo del proceso de inicio de sesión, el almacenamiento seguro de hashes de contraseñas y la realización de 2FA que un sitio web boutique que ha tratado de tejer sus propios procesos de seguridad criptográfica.
Autenticación subcontratada
Muy simplificado, un inicio de sesión estilo OAUTH, a través de su cuenta de Facebook a un sitio llamado example.com
, va algo como esto:
- El sitio
example.com
dice a su aplicación o navegador, “Hola, X, ve y obtén un token de acceso mágico para este sitio de Facebook”. - Visitas una URL especial de Facebook, inicias sesión si aún no lo has hecho, y decir: "Dame un token de acceso mágico para
example.com
." - Si Facebook está satisfecho de que eres quien dices, responde: "Hola, X, aquí está tu token de acceso mágico".
- Entregas el token de acceso a
example.com
, que luego puede contactar a Facebook para validar el token.
Tenga en cuenta que solo Facebook ve su contraseña de Facebook y el código 2FA, si es necesario, por lo que el servicio de Facebook actúa como intermediario de autenticación entre usted y example.com
.
Detrás de escena, hay una validación final, como esta:
- El sitio
example.com
dice a Facebook, "¿Emitiste este token y valida al usuario X?" - Si Facebook está de acuerdo, dice
example.com
, “Sí, consideramos que este usuario está autenticado”.
secuencia subvertible
El error que los investigadores de SALT encontraron en el código de Expo puede activarse al subvertir maliciosamente el manejo de Expo de lo que podría llamarse el proceso de "corretaje de autenticación".
Los puntos clave son los siguientes:
- Expo en sí agrega un envoltorio alrededor del proceso de verificación, para que maneje la autenticación y la validación por usted, pasando finalmente un token de acceso mágico para el sitio web deseado (
example.com
en el intercambio anterior) de vuelta a la aplicación o sitio web desde el que se está conectando. - Los parámetros utilizados en el manejo de la verificación. se empaquetan en una gran URL que se envía al servicio Expo.
- Uno de estos parámetros se almacena temporalmente en una cookie web que especifica la URL a la que se enviará el token de seguridad mágico final para habilitar el acceso.
- Antes de que se entregue el token de seguridad, una ventana emergente le pide que verifique la URL que está a punto de ser autorizada, para que pueda descubrir a cualquiera que intente sustituir una URL falsa en el proceso de inicio de sesión.
- Si aprueba la ventana emergente, Expo te redirige al proceso de verificación de Facebook.
- Si Facebook aprueba la verificación, devuelve un token de acceso mágico al servicio Expo, y Expo lo pasa a la URL que acaba de aprobar en la ventana emergente, denominada
returnURL
. - La aplicación o sitio web escuchando en el especificado
returnURL
recibe la devolución de llamada de Expo, adquiere el token de acceso y, por lo tanto, se autentica como usted.
Desafortunadamente, los investigadores de SALT descubrieron que podían subvertir el proceso de inicio de sesión mediante el uso de código JavaScript para activar el acceso a la URL de inicio de sesión inicial de Expo, y luego eliminar la ventana emergente de verificación antes de que tuviera tiempo de leerla o aprobarla usted mismo.
En este punto, sin embargo, el servicio de Expo ya había establecido una cookie llamada ru
(corto para returnURL
) para decirle dónde devolver la llamada con su token de acceso mágico al final.
Esto significaba que un ciberdelincuente podía engañar al código de Expo para que "recordara" un returnURL
como https://roguesite.example
, sin que haya visto el cuadro de diálogo para advertirle que se estaba produciendo un ataque, y mucho menos aprobarlo por error.
Luego, los investigadores usaron un segundo fragmento de código JavaScript para simular la redirección de Expo al proceso de verificación de Facebook, que automáticamente tendría éxito si (como muchas personas) ya había iniciado sesión en Facebook.
La verificación de Facebook, a su vez, redirigiría el proceso de inicio de sesión de Expo de nuevo al propio código JavaScript de Expo...
… que tomaría con confianza pero erróneamente el nunca verificado en realidad returnURL
por su devolución de llamada de esa magia ru
cookie que estableció al principio, sin su aprobación o conocimiento.
¿Falla abierta o falla cerrada?
Como puede ver en la descripción anterior, la vulnerabilidad se debió a que el código de Expo falló de manera inapropiada.
El código de autenticación generalmente debe error cerrado, en la jerga, lo que significa que el proceso no debería tener éxito a menos que se haya señalado algún tipo de aprobación activa.
Suponemos que Expo no tenía la intención de que el sistema falla abierta, dado que el informe de SALT muestra que su diálogo de aprobación emergente se veía así:
La aplicación en https://roguesite.example le pide que inicie sesión en su cuenta de Facebook. ¿Confía plenamente en https://roguesite.example y acepta dejarlo?: [No] [Sí]
La respuesta predeterminada, como era de esperar, se estableció en [No]
, pero esto solo provocaría que el sistema fallara al cerrarse si utilizó religiosamente el propio código del lado del cliente de Expo para controlar el proceso de verificación.
Al proporcionar su propio JavaScript para ejecutar la secuencia de solicitudes de verificación, los investigadores pudieron tratar el cuadro de diálogo de aprobación como si hubiera dicho:
Si no nos dice explícitamente que bloqueemos https://roguesite.example para que no inicie sesión a través de su cuenta de Facebook, dejaremos que lo haga: [Permitir] [Bloquear]
La solución, entre otros cambios, fue que el código de inicio de sesión inicial de Expo estableciera esa magia ru
galleta solo después de haber aprobado explícitamente el llamado returnURL
, de modo que el código de inicio de sesión de JavaScript posterior de Expo fallaría si se omitiera la ventana emergente de verificación, en lugar de confiar ciegamente en una URL que nunca había visto o aprobado.
En muchos sentidos, este error es similar al Enchufe inteligente Belkin Wemo error que escribimos hace dos semanas, a pesar de que la causa raíz en el caso de Belkin fue un desbordamiento de búfer, no una devolución de llamada web no autorizada.
El código de Belkin asignó un búfer de memoria de 68 bytes en su código del lado del servidor, pero se basó en verificar en su código del lado del cliente que no intentó enviar más de 68 bytes, dejando así el servidor a merced de los atacantes que decidieron para hablar con el servidor utilizando su propio código del lado del cliente que omitió el proceso de verificación.
¿Qué hacer?
- Al informar y escribir errores, considere seguir SALT ejemplo. Divulgar de manera responsable, dando al proveedor un tiempo razonable para solucionar la vulnerabilidad, además de un tiempo razonable para informar a sus propios usuarios, antes de publicar detalles que permitirían a cualquier otra persona crear un exploit propio.
- Al recibir informes de errores, considere seguir Expo's ejemplo. Responda rápidamente, manténgase en contacto con el informador del error, corrija la vulnerabilidad tan pronto como pueda, proporcione un informe de investigación útil para sus usuarios y manténgalo objetivo. (Resístase a las sugerencias de su equipo de marketing de elogiarse a sí mismo por "tomar la seguridad en serio" o de descartar el problema como algo sin importancia. Eso lo deben decidir sus usuarios, en función de la prontitud y la pertinencia de su respuesta, y su propia evaluación del riesgo).
- Asegúrese de que su código de autenticación no se cierre. Asegúrese de no tener pasos de verificación o aprobación que puedan neutralizarse simplemente ignorándolos o cancelándolos.
- Nunca asuma que su propio código del lado del cliente controlará el proceso de verificación. Suponga que los atacantes realizarán ingeniería inversa de su protocolo y crearán su propio código de cliente para eludir tantas comprobaciones como puedan.
- Cierre la sesión de las cuentas web cuando no las esté utilizando activamente. Muchas personas inician sesión en cuentas como Google, Amazon, Facebook, Apple y otras, y luego permanecen conectadas indefinidamente, porque es conveniente. Cerrar sesión evita que muchas acciones (incluidas autenticaciones, publicaciones, me gusta, compartir y mucho más) sucedan cuando no las espera; en su lugar, verá un aviso de inicio de sesión.
No olvide que al cerrar la sesión de los servicios web siempre que pueda y al borrar todas las cookies de su navegador y los datos web almacenados con frecuencia, también reduce la cantidad de información de seguimiento que los sitios pueden recopilar sobre usted mientras navega.
Después de todo, si no ha iniciado sesión y no le quedan cookies de seguimiento anteriores, los sitios ya no saben exactamente quién es usted o qué hizo la última vez que los visitó.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoAiStream. Inteligencia de datos Web3. Conocimiento amplificado. Accede Aquí.
- Acuñando el futuro con Adryenn Ashley. Accede Aquí.
- Compra y Vende Acciones en Empresas PRE-IPO con PREIPO®. Accede Aquí.
- Fuente: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- :posee
- :es
- :no
- :dónde
- $ UP
- 1
- 15%
- 2FA
- a
- Poder
- Nuestra Empresa
- arriba
- Absoluto
- de la máquina
- Mi Cuenta
- Cuentas
- Adquiere
- Actúe
- acciones
- lector activo
- activamente
- hechos
- la adición de
- Añade
- consejos
- asesorar
- Después
- .
- Todos
- asignado
- permitir
- permite
- solo
- ya haya utilizado
- también
- hacerlo
- Amazon
- entre
- cantidad
- an
- y
- Otra
- https://www.youtube.com/watch?v=xB-eutXNUMXJtA&feature=youtu.be
- cualquier
- nadie
- cualquier cosa
- applicación
- Apple
- aprobación
- aprobar
- aprobado
- aplicaciones
- somos
- en torno a
- artículo
- AS
- evaluación
- At
- atacar
- autenticar
- autenticado
- Autenticación
- autor
- autorizado
- autorización
- auto
- automáticamente
- evitar
- Atrás
- fondo
- background-image
- basado
- BE
- porque
- esto
- antes
- entre
- Big
- ciegamente
- Bloquear
- Blog
- frontera
- Fondo
- corredor
- cada navegador
- cookies del navegador
- buffer
- desbordamiento de búfer
- Error
- loco
- pero
- by
- llamar al
- , que son
- PUEDEN
- case
- lucha
- Causar
- causado
- Reubicación
- oportunidad
- Cambios
- comprobación
- Cheques
- reclamo
- proceso de Compensación.
- cliente
- cerrado
- Soluciones
- código
- Codificación
- recoger
- Color
- viniendo
- compañía
- Conectándote
- Considerar
- contacte
- control
- Conveniente
- galleta
- galletas
- podría
- Protectora
- Para crear
- Referencias
- criptográfico
- Clientes
- CIBERCRIMINAL
- datos
- decidir
- decidido
- Predeterminado
- liberado
- descripción
- deseado
- detalle
- detalles
- diálogo
- HIZO
- Digest
- directamente
- Revelar
- revelación
- Descartar
- Pantalla
- do
- sí
- "Hacer"
- don
- No
- doblado
- .
- más
- habilitar
- final
- Incluso
- NUNCA
- exactamente
- Examinar
- ejemplo
- Intercambio
- esperar
- experience
- explicado
- Explotar
- Exposición
- FALLO
- fallando
- falla
- fascinante
- pocos
- final
- Fijar
- fijas
- siguiendo
- siguiente
- encontrado
- frecuentemente
- en
- completamente
- en general
- obtener
- Donar
- dado
- Diezmos y Ofrendas
- Go
- Va
- candidato
- agarrar
- muy
- tenido
- mano
- Manijas
- Manejo
- pasó
- En Curso
- Tienen
- altura
- serviciales
- esta página
- HORAS
- flotar
- Cómo
- Como Hacer
- Sin embargo
- HTTPS
- Identidad
- if
- implementado
- in
- Incluye
- indirectamente
- información
- inicial
- la intención de
- dentro
- investigador
- IT
- SUS
- sí mismo
- jerga
- JavaScript
- solo
- Guardar
- Clave
- tejer
- Saber
- especialistas
- conocido
- Apellido
- luego
- dejarlo
- izquierda
- como
- Escucha Activa
- ll
- conectado
- registro
- Inicie sesión
- por más tiempo
- miró
- magic
- para lograr
- muchos
- muchas personas
- Margen
- Marketing
- max-ancho
- sentido
- significó
- Medios
- Salud Cerebral
- podría
- Error
- meses
- más,
- mucho más
- Llamado
- ¿ Necesita ayuda
- nunca
- Nuevo
- noticias
- no
- normal
- número
- juramento
- objetivo
- of
- off
- LANZAMIENTO
- Ofrecido
- on
- ONE
- en línea
- , solamente
- habiertos
- Optión
- or
- Otro
- Otros
- salir
- Más de
- EL DESARROLLADOR
- llena
- parámetros
- pasa
- Pasando (Paso)
- Contraseña
- Patch
- Parches
- Paul
- Personas
- teléfono
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- más
- punto
- puntos
- Popular
- posición
- posible
- Artículos
- presente
- evita
- privada
- en costes
- Mi Perfil
- Programación
- protocolo
- Demostrar.
- proporcionar
- publicidad
- publicado
- DTP
- fines
- Poniendo
- con rapidez
- más bien
- Leer
- realmente
- mejor
- recibe
- aprovecha
- reorientar
- reducir
- confiar
- responder
- reporte
- molécula indicadora
- Informes
- Informes
- solicitudes
- exigir
- investigadores
- respuesta
- responsable
- devoluciones
- Derecho
- Riesgo
- raíz
- Ejecutar
- Said
- sal
- satisfecho
- dices
- dice
- Escenas
- Segundo
- segura
- EN LINEA
- token de seguridad
- ver
- ver
- visto
- ve
- envío
- expedido
- Secuencia
- grave
- de coches
- Servicios
- set
- pólipo
- Acciones
- En Corto
- tienes
- Shows
- firmar
- similares
- simplificado
- simplemente
- página web
- Sitios Web
- inteligente
- So
- Social
- redes sociales
- Publicaciones en redes sociales
- sólido
- a medida
- algo
- algo
- Pronto
- hablar
- especial
- especificado
- comienzo
- quedarse
- pasos
- almacenados
- Subido
- tener éxito
- tal
- abastecimiento
- SVG
- te
- escuchar
- les digas
- decirles
- que
- esa
- El
- su
- Les
- luego
- por lo tanto
- Estas
- ellos
- así
- aquellos
- ¿aunque?
- Tres
- equipo
- a
- ficha
- caja de herramientas
- parte superior
- Seguimiento
- transición
- transparente
- sorpresa
- probado
- detonante
- desencadenados
- Confía en
- confiando en
- try
- GIRO
- dos
- Finalmente, a veces
- bajo
- a
- Enlance
- us
- usado
- Usuario
- usuarios
- usando
- VALIDAR
- validación
- vendedor
- Verificación
- verificar
- vía
- Visite
- visitado
- vital
- vulnerabilidad
- quieres
- fue
- Camino..
- formas
- we
- web
- servicios web
- Página web
- Semanas
- fuimos
- tuvieron
- ¿
- cuando
- cuando
- que
- QUIENES
- seguirá
- dentro de
- sin
- se
- la escritura
- Mal
- X
- si
- aún
- Usted
- tú
- a ti mismo
- zephyrnet