Español | English
rss facebook linkedin Twitter

Seguridad en el manejo de Sesiones Web – V

Identificador de sesión predecible

Retomamos la serie de Seguridad en  Manejo de Sesiones Web con este nuevo articulo.

Como hemos visto, para suplantar una sesión mediante hijacking, normalmente un atacante solo necesita conocer un identificador de sesión que este activo.

El atacante puede intentar robar este identificador en algún punto de la comunicación, pero existe una vía de ataque menos intrusiva. Adivinarlo.

Definición:

Un ataque de predicción de sesión consiste en intentar adivinar el identificador de sesión de algún usuario activo.


Dependiendo del algoritmo de generación de los identificadores de sesión la predicción será más o menos difícil. Cuanto más complejo e imprevisible sea el ID, mas difícil será la tarea. De ahí la insistencia en que el identificador sea totalmente aleatorio. Para que el atacante no tenga ningún patrón de partida.


Ataque:

El concepto de predicción o adivinación es algo engañoso. Ya que normalmente el código buscado no se acierta en un primer intento (excepto que el algoritmo de generación sea totalmente inseguro).


El ataque habitualmente consiste en probar mediante fuerza bruta una serie de IDs previstos, hasta dar con uno valido. La efectividad dependerá del número de intentos que haya que realizar hasta encontrar un identificador valido.


Si el identificador es totalmente aleatorio, el número de intentos necesarios será igual a todo el rango de posibles valores del identificador. En este caso será también importante la longitud del ID de sesión, ya que si el rango de posibles valores no es lo suficientemente grande, el atacante podría intentar probar todos los posibles valores.


Patrones vulnerables:

Tenemos por tanto que el éxito de un ataque de predicción de sesión depende de:

  • La longitud del ID. O sea el rango de todos los posibles valores.

  • El patrón de generación de este ID.


Los patrones que se suelen emplear para la generación de sesiones y que son predecibles, de menor a mayor dificultad de análisis:

  • Fijo: El ID tiene un valor fijo. No es necesario adivinarlo.

  • Basado en datos del usuario: Su nombre, su dirección IP. Sera diferente para distintos usuarios, pero constante para el mismo cliente. Puede estar ofuscado para complicar el análisis.

  • Rango de valores: El ID se elige entre un rango de valores prefijado. Tras un periodo de observación la predicción es trivial.

  • Basada en tiempo: Cada nuevo ID se genera incrementando el anterior en base a un reloj. La predicción es fácil.

  • Incremental: Similar al basado en tiempo, pero que solo se incrementa con cada nuevo ID generado. Si la aplicación tiene mucho tráfico será más complejo de atacar.

  • Pseudo-aleatorio: La generación intenta ser aleatoria, pero el algoritmo contiene vulnerabilidades que permiten predecir su comportamiento. Normalmente el atacante para tener éxito necesitara obtener los datos de partida que usa el algoritmo para generar la serie de IDs.

Protección

Ofuscar o combinar varios de estos patrones puede dificultar el análisis, pero la única protección efectiva consiste en generar de forma aleatoria los ID y utilizar un rango de valores lo suficientemente grande.


Hasta la próxima!

Ramon Pinuaga
S21sec Auditoría




(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login