Noticia iOS 7: Generador de Números Pseudo Aleatorios Inseguro

En la pasada CanSecWest, además de tener lugar el popular Pwn2Own del que ya os hemos hablado por aquí, contó con un nutrido grupo de presentaciones técnicas de las que tenemos que destacar la charla de Tarjei Mandt titulada "Revisiting iOS Kernel (In)Security: Attacking the early random() PRNG" en la que se explica cómo Apple ha introducido en iOS 7 un generador de números pseudo-aleatorios (PRNG) inseguro, al cambiar las funciones que había en iOS 6 por early_random() en iOS 7, una función inspirada en random_r() de glibc y rand() de ANSI C.


Figura 1: Paper que explica la debilidad del algoritmo PRNG utilizado en iOS 7

En iOS 7, para implementar el generador de números pseudo-aleatroios se ha elegido utilizar un LCG (Linear Congruential Generator) que calcula los números pseudo-aletaroios que irá entregando el sistema con una ecuación lineal que se inicializa con parámetros seleccionados al arranque del sistema operativo, lo que permite generar un ataque de fuerza bruta.


Figura 2: Funcionamiento del algoritmo PRNG en iOS 7

En iOS 7.0.3 y superiores se extendió el tamaño de los parámetros de inicialización para conseguir mejorar la seguridad del sistema, pero sigue siendo posible calcular todos los posibles valores en tiempo útil y saltarse cualquier medida de protección basada en ellos.

Un nuevo Goto FAIL pero en la elección de las funciones criptográficas que se suma a los últimos descubrimientos de fallos en el mundo de la criptografía como el de GNU-TLS, las noticias de que la NSA podía haber introducido errores en las implementaciones de sistemas criptográficos o el ya con unos años fallo de Debian en OpenSSL.

Publicado en Seguridad Apple - Google+ - RSS - Eleven Paths - El lado del mal




Continúar leyendo...