¿Qué es un timing attack?

Esto del timing attack puede hacer que tu cabeza explote cuando veas dónde puede llegar a haber agujeros de seguridad en tu aplicación web.

El mecanismo de ataque se basa en medir el tiempo que tarda una aplicación en procesar una información.

Explicación muy por encima y simplificada al máximo para que se entienda (si te interesa el tema espera a que escriba un artículo más largo o investiga):

Por ejemplo, cuando un usuario hace login se comprueba su clave comparando la clave introducida por el usuario con la que está almacenada en la base de datos. Cuando se está comparando la clave, en el momento que un carácter es diferente se detiene la comprobación. Si tu clave cifrada fuese:

a49fhjroeagh2

Un atacante que ya supiera la longitud de la clave (que también se puede conseguir con un ataque de este tipo) podría probar con:

aaaaaaaaaaaa
baaaaaaaaaaa
caaaaaaaaaaa
daaaaaaaaaaa

Al medir los tiempos vería que la primera cadena tarda más en procesarse que las demás. Eso quiere decir que la 'b' y la 'c' no son las letras correctas. ¡Ya tendría la primera letra de la clave! Repitiendo el proceso podrían conseguir la clave completa.

¿Cómo evitarlo?

Para evitar este ataque hay que hacer que las comparaciones de cadenas en partes vitales (por ejemplo logins de usuarios) tengan siempre la misma duración en el tiempo. Para eso existen funciones como hash_equals (con las que hay que tener también cuidado, por cierto).

Con esto ya tienes una cosa más de la que preocuparte cuando desarrolles tu próxima aplicación web.


Tags: PHP, Seguridad


Y ahora descubre uno de los mejores libros de programación orientada a objetos en PHP.

Apúntate para conseguir capítulos de muestra, recibir el boletín y más información sobre los libros.