| Artículos | 01 MAR 2004

El bit NX

Tags: Histórico
O cómo proteger el sistema contra los desbordamientos de buffer
Desde hace ya relativamente bastante tiempo, tanto usuarios como empresas dedicadas a la seguridad informática nos enfrentamos a una nueva vulnerabilidad que se conoce popularmente como “desbordamiento de buffer”. Esta vulnerabilidad se origina en primer lugar en aplicaciones de uso común que permiten cargar en un bloque de memoria una mayor cantidad de información que la permitida por el tamaño de dicho bloque, lo que viene a producir el desbordamiento de buffer al que hace referencia el nombre de la vulnerabilidad. Se puede establecer, por lo tanto, que este tipo de peligros se origina en aplicaciones diseñadas de forma incorrecta que no comprueban al escribir en un bloque de memoria si lo están haciendo dentro de los límites de dicho bloque o fuera de ellos.
A lo anterior hay que añadir que la práctica totalidad del software empleado hoy en día es de tipo reentrante. Esto último quiere decir que se puede llamar a una determinada función de un programa, aunque dicha función se encuentre ya en ejecución, sin que se genere un resultado erróneo. Para que una función sea reentrante no debe emplear variables globales, sino variables locales que se creen en la stack (pila) del microprocesador. Esto hace que en cada ocasión en que se invoque una función se creen en la pila del procesador nuevas instancias de las variables locales que emplea la función, no machacándose los valores que contuviesen dichas variables si es que la función ya estuviese en ejecución.
Sin embargo, si se produce el desbordamiento de un buffer que se haya creado en la pila del procesador, se realizarán escrituras sobre dicha estructura de datos. Hay que recordar que la pila contiene información importante, como por ejemplo las direcciones de memoria a las que debe devolver el control el procesador al concluirse la ejecución de una rutina llamada desde otra zona del sistema. Si dicha información se corrompe es posible que tome el control algún tipo de código malicioso que se haya introducido en el ordenador mediante un desbordamiento de buffer.
Algunos fabricantes de microprocesadores están introduciendo en sus productos soporte por hardware para evitar estas vulnerabilidades, si bien hasta que Microsoft no publique su Service Pack 2 para Windows XP no estará activado dicho soporte. En concreto las familias de microprocesadores Athlon 64 y Opteron de AMD soportan por hardware el bit NX, el cual permite que las zonas de memoria a las que hacen referencia las tablas de descripción de páginas que tengan activado dicho bit permitan la lectura de dichas zonas de memoria pero no la ejecución de su contenido. Si el sistema intentase ejecutar código procedente de un bloque de memoria, cuya entrada correspondiente en la tabla de descripción de páginas tuviese activado el bit NX, se produciría inmediatamente una excepción que evitaría la ejecución de dicho código y cerraría la aplicación en la que se estuviese produciendo el desbordamiento de buffer.
El funcionamiento del bit NX afecta tanto al código que se ejecuta en el anillo tres (aplicaciones de modo usuario), como al que se ejecuta en el anillo cero (el kernel del sistema operativo). Esto hace que un sistema operativo que haga uso del bit NX en su gestión de memoria esté protegido contra los desbordamientos de buffer que se produzcan tanto en software de modo usuario, como en su propio kernel o incluso en los controladores de dispositivo que proporcionen los distintos fabricantes de hardware.
Parece que Intel ya tiene implementado el soporte del bit NX en su gama de procesadores de 64 bits Itanium, aunque no está aún claro si se soportará dicha característica en los nuevos microprocesadores de 32 bits basados en el núcleo conocido como Prescott.

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información