Pregunta

Bien, básicamente aquí está el escenario de ataque del proveedor OpenId de Bodysnatcher.

  1. El identificador de Bob's Google de Bob es el siguiente, ttps: //www.google.com/accounts/o8/id? Id = aatawkqvytybnuhprhn36f8mlvfijvzg8tene

  2. Jane ha encontrado de alguna manera el identificador reclamado "actual" de Bob.

  3. Ella sale y crea aquí su propio proveedor OpenId, www.jane.com/accounts/o8/id, de modo que cuando se le solicite devolverá el identificador reclamado por Bob.

  4. Ella va a un sitio mal codificado, www.bcs.com, que usa Open ID y Bob tiene una cuenta en.

  5. Ella le dice a www.bcs.com que utilice el proveedor OpenId www.jane.com/accounts/o8/id.

  6. Ahora bien, esta es la parte que no conozco y me gustaría saber si es posible/realista...www.jane.com/id de alguna manera hace que www.bcs.com crea que el identificador reclamado "cadena" (es decir,el valor que finalmente verá el sitio) es ttps://www.google.com/accounts/o8/id?id=AAtawkQvytyBNNuHpRhn36f8MLvFiJvZg8teNE.

¿Es posible, de alguna manera, aunque el servidor sea www.jane.com?

Estamos trabajando para implementar OpenId y no queremos ser ese "sitio mal codificado".Estamos utilizando una biblioteca .NET de terceros que nos proporciona el identificador reclamado, por lo que no estamos seguros de dónde ni cómo lo crea.Si es posible que sea falso, entonces estamos considerando hacer algunas comprobaciones para que la URL del OpenId del proveedor coincida con lo que está en el Identificador reclamado.

Esto también plantea la preocupación sobre si deberíamos dar un paso adicional de codificar o codificar nuestros identificadores reclamados.Creemos que sí, porque Google cambia su identificador según el sitio que solicita el OpenId.Quiero decir, ¿por qué si no se tomaría la molestia de hacer esto si no es para tratar de proteger a sus miembros?

¿Fue útil?

Solución

Básicamente, estás preguntando si es posible escribir una implementación del consumidor OpenID que viole la especificación lo suficiente como para introducir vulnerabilidades de seguridad.Sí, lo es.Podrías omitir todo el proceso de validación y creer todo lo que te diga tu usuario.

Pero con un consumidor que sigue de cerca la especificación OpenID, tal ataque no es posible.

Como dijiste que usas una biblioteca .NET, probablemente uses DotNetOpenAuth.Es la misma biblioteca que usa stackoverflow y probablemente no tenga que preocuparse por ninguna vulnerabilidad al usarla.Si está utilizando otra biblioteca, probablemente la mejor opción sea cambiar a DotNetOpenAuth.

En cuanto al motivo por el que Google devuelve identificadores basados ​​en dominios:se hace para proteger la privacidad de sus usuarios, no para aumentar la seguridad.Básicamente, esto garantiza que no puedas vincular la cuenta de tu usuario a su cuenta de Google.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top