¿Cómo puede detectar un token no aleatorio y no seguro?

3

Sé que algunas de las funciones aleatorias de PHP son inseguras debido a que no son completamente aleatorias y se consideran una mala práctica. Mi pregunta es cómo un atacante encuentra que el desarrollador usó una función insegura para crear un token, como un token de contraseña olvidado o un token CSRF.

    
pregunta Michael Blake 18.04.2014 - 06:18
fuente

2 respuestas

1

En realidad no puedes determinar cuán aleatorio es un número, porque es la naturaleza de la aleatoriedad. Sin embargo, si tuviera una serie de valores, podría realizar pruebas de aleatoriedad estadística en los valores y posiblemente encontrar patrones / debilidades en El generador de números aleatorios. Ciertos patrones pueden revelar qué generador aleatorio se usó. Pero incluso suponiendo que los números fueran aleatorios en un sentido estadístico, el problema que queda después es la seguridad. ¡Algo que pasa las pruebas de aleatoriedad puede no ser realmente seguro!

En resumen:

  • verdadera aleatoriedad = seguridad
  • aleatoriedad estadística ≠ verdadera aleatoriedad
respondido por el Kevin Li 18.04.2014 - 13:29
fuente
1

Además de la respuesta de Kevin Li, la evaluación de la aleatoriedad de sus sesiones se cubre aquí: Cómo probar la fuerza del identificador de sesión con OWASP WebScarab

Debe solicitar un montón de tokens de sesión y realizar un análisis estadístico en ellos para determinar si parecen mostrar el nivel de aleatoriedad deseado. 10 ^ 4 ID de sesión sería un buen punto de partida mínimo, pero sería mejor analizar más si puedes.

También hay una herramienta automatizada en el proxy Burp de PortSwigger para hacer lo mismo que uso, pero eructo es bastante caro.

(comentaría en la otra respuesta pero no tengo el representante)

    
respondido por el Stu W 18.04.2014 - 17:01
fuente

Lea otras preguntas en las etiquetas