Protección mejorada contra virus (EVP) o Prevención de ejecución de datos (DEP)

El desbordamiento de búfer
Fecha: 2004-11-19 00:00:00por: A. David Garza Marín (adgarza@mexico.com)

¿Recuerda esos ataques de virus como el Blaster, SASSER, MyDoom, etcétera? ¿Y se ha dado cuenta de la forma en que lo han atacado? En la mayoría de los casos, son archivos adjuntos a mensajes que se ejecutan automáticamente gracias a características intrínsecas (para facilitar la vida) de programas como Microsoft Outlook (sin ningún tipo de actualización).

Estos virus inundan muchas de las máquinas que actualmente se encuentran en funcionamiento, y sus daños pueden ser muy diversos: desde sólo replicarse mediante envíos masivos de correo electrónico a la lista de contactos, hasta borrar archivos que se ejecuten o lean.

La ejecución de estos virus se basa en una característica propia de los procesadores de 32 bits, y que es la de carecer de un verdadero control de la forma en que se asignan y usan los recursos de la memoria (aún cuando es más una característica del controlador de memoria que del procesador de 32 bits). En la actualidad, todos los procesadores y controladores de memoria de 32 bits (Intel, VIA y AMD) no cuentan con controladores de memoria que se aseguren que los programas o datos utilicen únicamente el espacio de memoria que se ha pedido para ellos (o los datos que contienen).

De esa forma, un programa podría solicitar, por ejemplo, 1KB de espacio en la memoria para almacenar datos, pero, al final –por error o intencionalmente– asignar una mayor cantidad de datos a ella (más de 1KB). Ello desbordaría el búfer; es decir, el área de 1KB que se había solicitado originalmente, y el resto de los datos se grabaría fuera de esta área. Ello podría desde no traer ninguna consecuencia (si es que no hay datos o código en el área sobrepasada), o provocar un grave error en el sistema, o permitir la ejecución de algún código fuera del área de seguridad. Esto último es de lo que se aprovechan los actuales virus, que inician la ejecución de su código, sin que al procesador le importe que, originalmente, el área solicitada haya sido asignada para almacenar datos (no código).

Abundo, cuando un programa solicita espacio en la memoria para almacenar cierta cantidad de datos, esa área queda marcada como área de datos. Se supone que si es un área de datos *no se debería permitir la ejecución de lo que allí se contiene, sino sólo su lectura y escritura*. Pero al desbordarse el búfer, el microcódigo del área desbordada mueve un apuntador de código hacia esta área de datos (que, en realidad, contiene el código ejecutable del virus) e inicia su ejecución. El procesador no se da por enterado que aquella área que originalmente había sido asignada para almacenar datos, está ejecutándose como un programa. Y no se da por enterado, porque carece del control de ello. Debe confiar en que el controlador de memoria está haciendo lo que el procesador le está pidiendo que haga.

Así pues, los procesadores de 32 bits tienen este enorme riesgo, a menos que cuenten con la ayuda de alguna característica propia del sistema operativo que coadyuve a vigilar que las áreas asignadas se comporten como se espera: que lo que contenga código se ejecute, y que lo que contenga datos sólo se lea y escriba. GNU/Linux en sus nuevas versiones del núcleo ya tiene esta característica, así como FreeBSD, OpenBSD y Microsoft Windows XP con el Service Pack 2. Así es, con el Service Pack 2 se agrega la característica Prevención de ejecución de datos (a la que puede acceder, si ya cuenta con el Service Pack 2 instalado, si entra Inicio | Panel de control | Rendimiento y mantenimiento, hace doble clic en el icono Sistema, entra a la ficha Opciones avanzadas, hace clic en el botón Configuración de la sección Rendimiento, y hace clic en la ficha Prev. de ejecución de datos). Con la prevención de ejecución de datos podrá ver el cuadro de diálogo que le aparece en la siguiente figura:

Prevención de ejecución de datos

Sin embargo, cualquier esfuerzo del sistema operativo para hacer esto per se puede verse opacado por la subsecuente lentificación del sistema por tener que hacer este tipo de revisiones todo el tiempo. Por añadidura, al ser una revisión por software, podrían existir formas de inhabilitar semejante característica y, por ende, burlarla fácilmente.

El mejor caso es cuando este tipo de revisiones se realizan directamente por hardware; es decir, que el procesador y su controlador de memoria realicen esta revisión y que el sistema operativo no tenga que recibir las notificaciones de éste. Ello es, precisamente, lo que hace el procesador AMD Athlon 64 (en cualquiera de sus modalidades: Mobile, 64 y 64 FX), así como la serie AMD Opteron (ningún procesador AMD Sempron tiene esta facultad) mediante su característica Protección Mejorada contra Virus (EVP). Precisamente, lo que hace es coordinarse con DEP para llevar a cabo esta protección sin reducir el rendimiento del equipo. De hecho, el Service Pack 2 de Microsoft Windows XP se beneficia enormemente de este tipo de procesadores, dado que el cúmulo de verificaciones que antes tenía que realizar por software ahora se las delega directamente al procesador AMD64, con lo que el rendimiento del equipo puede mejorar su rendimiento entre un 5 y un 20% respecto al Service Pack 1 y versiones anteriores.

El EVP también se ve aprovechado por las nuevas versiones de las distintas distribuciones de GNU/Linux, FreeBSD y OpenBSD (entre otros) en sus ediciones de 32 bits, dado que en las ediciones de 64 bits para AMD64 (o x86-64) el uso de esta característica es intrínseco en cualquiera de los sistemas operativos. Esta protección, así, evita automáticamente que se ejecute código en áreas marcadas para datos. Si algún código intenta ejecutarse en un área marcada para datos, le aparecerá un cuadro de diálogo que se lo avisará, y se detendrá abruptamente el intento de ejecución del código (no así el sistema), con lo que podrá tener mayor seguridad en el uso de su equipo de cómputo. Así pues, EVP y DEP son tecnologías que se apoyan mutuamente para dar el mejor rendimiento y la mayor posibilidad de seguridad en los equipos actuales.

Si quiere saber si su DEP está trabajando en modo de software o con apoyo del hardware, vea el cuadro de diálogo Opciones de rendimiento en su página Prev. de ejecución de datos, y si en la parte inferior le aparece una leyenda como en la siguiente figura:

Prevención de ejecución de datos sólo por software

Sabrá que su procesador no tiene la característica EVP integrada y que su sistema podría estarse ejecutando con menor confiabilidad y agilidad que con un procesador que sí lo admita. En la primera figura de ejemplo, no aparece ninguna leyenda porque el sistema donde escribí este artículo es un AMD Athlon 64 3800+ :-) ¡Nos seguimos leyendo!


Más artículos de A. David Garza Marín
Artículos de hoy en Lapalabra.com

Fecha: 2004-11-19 00:00:00por: A. David Garza Marín (adgarza@mexico.com)