Descripción

Por naturaleza, todo programa ejecutado en una computadora puede servir como punto de entrada para hackers atacaren el Sistema Operacional. Las versiones recientes de Windows reducen esta preocupación permitiendo que programas sean desarrollados con caracteristicas que hacen mucho más dificil para los hackers operaren. El Wrapper contribuye a mejorar la seguridad del systema y mantiene su sistema seguro haciendo uso de esas funciones.

A partir de la versión 3.5.33, el Wrapper especifica que sus binarios (wrapper.exe, wrapperw.exe y wrapper.dll) son compatibles con la Prevención de Ejecución de Datos (DEP, Data Execution Prevention en inglés) y con la Aleatorización de Distribución del Espacio de Memoria (ASLR, Address Space Layout Randomization en inglés) al cargar.

- DEP marca las regiones de memoria asignadas por el Wrapper como no ejecutables, evitando que algún shellcode sea inyectado por un malware para ser ejecutado.

- ASLR protege contra ataques de desbordamiento de búfer aleatorizando las ubicaciones de diferentes partes del programa en la memoria. Cada vez que el Wrapper es ejecutado, el stack, heap, y las bibliotecas son movidos a una dirección diferente en la memoria virtual, y los atacantes ya no pueden aprender a través de pruebas donde está su objetivo.

Los términos usados para describir esas funciones pueden sonar un tanto técnicos, pero es suficiente con acordarse que el uso de DEP y ASLR no tiene ningún impacto notable en el rendimiento y permite que el Wrapper funcione de una manera mucho más segura en su sistema operativo.

Prevención de Ejecución de Datos (DEP)

El Wrapper habilita DEP cuando es ejecutado en Windows XP SP3 o cualquier versión más reciente de Windows. "java.exe" y "javaw.exe" especifican soporte a DEP de una forma distinta, con la opción (/NXCOMPAT) añadida a la cabecera del binario. Esta opción es comprendida por Windows Vista y versiones más nuevas, pero no por Windows XP. Para coincidir con este comportamiento, la biblioteca nativa (wrapper.dll) usada por el proceso Java usa la misma opción y habilita DEP para las mismas versiones de Windows.

La presencia de esta opción puede ser confirmada al verificar que dumpbin.exe muestra "NX Compatible" entre las características de DLL.

dumpbin /headers <PATH_TO_WRAPPER_DLL>

Tenga en cuenta que Windows obliga el uso de DEP al ejecutar ejecutables de 64 bits y por lo tanto versiones del Wrapper de 64 bits (incluyendo versiones más antiguas que 3.5.33 siempre se ejecutan con DEP habilitada.

También tenga en cuenta que el Wrapper se ejecutará normalmente (pero con niveles de seguridad normales) en versiones antiguas de Windows que no soportan DEP.

DEP puede configurarse a nivel de sistema con 4 políticas diferentes:

- Las dos primeras políticas pueden configurarse por el usuario local, usando la interfaz gráfica de usuario (GUI, Graphical User Interface en inglés) de Windows. En Windows 10, haga clic con el botón derecho del ratón en "Mi PC" y después en "Propiedades".

En el menu a la izquierda en el panel de control, haga clic en "Configuración avanzada del sistema".

En "Propiedades del sistema", haga clic en "Opciones avanzadas", y despuén en "Configuración" en la parte de "Rendimiento".

En "Opciones de rendimiento", seleccione la pestaña "Prevención de ejecución de datos".

  • "Activar DEP sólo para los programas y servicios de Windows esenciales." especifica que Windows debe habilitar DEP para los procesos y servicios de Windows, procesos y servicios de 64 bits, asi como todos los binarios especificando que son compatibles con DEP (lo que es el caso de la version 3.5.33 del Wrapper y todas las futuras versiones).
  • "Activar DEP para todos los programas y servicios excepto los que seleccione:" habilitará DEP a todos los procesos, excepto los listados en la caja abajo de esta opción, asi como los binarios que especifican explícitamente que no son compatibles con DEP (lo que nunca es el caso de ninguna versión del Wrapper). Esta opción puede ser usada para habilitar DEP para las ediciones de 32 bits de Wrapper anteriores a 3.5.33, pero eso tambien habilitará DEP para otros procesos del sistema, podiendo arriesgar algunas funcciones si no son compatibles con DEP.

- Dos otras políticas están disponibles para administradores, aunque no deben ser necesarias en la mayoria de los casos. Windows hace posible forzar DEP a todos los procesos (ignorando cualquier lista de excepciones y opciones incorporadas a los binarios, o completamente lo opuesto y desactivar DEP para todos los procesos ejecutados en el sistema. Para esto, se usa bcdedit.exe en una línea de comando ejecutada por un administrador (o boot.ini en Windows XP).

Aleatorización de Distribución del Espacio de Memoria (ASLR)

ASLR fue introducida en Windows Vista e implementada en todas las versiones siguientes de Windows. "java.exe" y "javaw.exe" especifican una opción (/DYNAMICBASE) en las cabeceras de sus binarios para informar al sistema operativo que la aplicación Java debe ser rebasada al cargarse usando ASLR. "wrapper.exe", "wrapperw.exe" y "wrapper.dll" están vinculados con la misma opción para habilitar ASLR.

La presencia de esta opción se puede confirmar verificando que dumpbin.exe muestra "Dynamic base" entre las características de DLL.

dumpbin /headers <PATH_TO_WRAPPER_DLL_OR_EXE>

No es necesario ninguna configuración especial a nivel de sistema para ASLR. Windows Vista y sus siguientes versiones tienen ASLR habilitada para los ejecutables y DLL está especificamente vinculada para tener ASLR habilitada. Para compatibilidad, no está habilitado para otras aplicaciones por defecto. Las versiones 3.5.33 y siguientes del Wrapper se ejecutarán con ASLR habilitado.

Tenga en cuenta que el Wrapper se ejecutará normalmente (pero con niveles de seguridad normales) en versiones antiguas de Windows que no soportan ASLR.

Cómo verificar si el Wrapper se está ejecutando con DEP y ASLR activadas

En la pestaña "Detalles" de la ventana Administrador de tareas de Windows , es posible añadir una columna para ver si DEP está habilitado o no: haga clic con el botón derecho en la cabecera de la columna, pulse "Seleccionar columnas", seleccione "Prevención de ejecución de datos", y "Aceptar".

La columna mostrará "Habilitado" para todos los procesos ejecutados con DEP habilitada y "Deshabilitado" para los procesos ejecutados sin esta protección.

Infelizmente, no hay una columna en el Administrador de tareas para ver si ASLR está habilitado o no.

Una mejor manera de comprobar si DEP y ASLR están habilitados es usando el Process Explorer(explorador de procesos) proporcionado por Microsoft. Se puede bajar por el siguiente enlace (sólo en inglés):

https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx

Después de descargar, extraiga los archivos en una carpeta y ejecute procexp.exe o procexp64.exe, dependiendo de si su sistema operativo es de 32 bits o de 64 bits.

Una ventana mostrará los procesos de forma jerárquica. Cuando el Wrapper sea ejecutado, se podrá ver el proceso del Wrapper y su proceso hijo controlado or Java.

Para ver si DEP y ASLR están habilitadas para cada proceso, haga clic con el botón derecho en la cabecera de la columna y seleccione "Select Columns..." (seleccionar columnas). Ve a la pestaña "Process Image" y seleccione las casillas "DEP Status" y "ASLR Enabled". Después, pulse OK para agregar estas dos columnas.

Abajo se puede verificar los resultados al ejecutar las versiones 3.5.32 y 3.5.33 del Wrapper (32 bits y 64 bits) en Windows (Vista y más recientes):

Wrapper 3.5.32 - 32 bits: El proceso del Wrapper no usa DEP ni ASLR, pero Java habilita ambas funciones.


Wrapper 3.5.32 - 64bits: DEP es habilitada automaticamente para el proceso 64 bits del Wrapper, pero no tiene soporte a ASLR.


Wrapper 3.5.33 - 32 bits (y 64 bits): Tanto DEP como ASLR están habilitadas para el proceso del Wrapper.