Errores en los programas
Los errores o bugs a la hora de programar código de aplicaciones o del
propio
núcleo de Unix constituyen una de las amenazas a la seguridad que más
quebraderos de cabeza proporciona a la comunidad de la seguridad informática.
En la mayoría de situaciones no se trata de desconocimiento a la hora de
realizar programas seguros, sino del hecho que es prácticamente imposible no
equivocarse en miles de líneas de código: simplemente el núcleo de
Minix, un mini-Unix diseñado por Andrew Tanenbaum ([Tan91]) con fines
docentes, tiene más de 13000 líneas de código en su versión 1.0.
Cuando un error sucede en un programa que se ejecuta en modo usuario el
único problema que suele causar es la inconveniencia para quien lo estaba
utilizando. Por ejemplo, imaginemos un acceso no autorizado a memoria por parte
de cierta aplicación; el sistema operativo detectará que se intenta violar
la seguridad del sistema y finalizará el programa enviándole la señal SIGSEGV. Pero si ese mismo error sucede en un programa que corre con
privilegios de root - por ejemplo, un ejecutable setuidado -, un
atacante puede aprovechar el fallo para ejecutar código malicioso que el
programa a priori no debía ejecutar. Y si un error similar se
produce en el código del kernel del sistema operativo, las consecuencias
son incluso peores: se podría llegar a producir un Kernel Panic o,
dicho de otra forma, la parada súbita de la máquina en la mayoría de
situaciones; el error más grave que se puede generar en Unix.
Subsecciones
© 2002 Antonio Villalón Huerta