Página principal » cómo » ¿Qué es ASLR y cómo mantiene su computadora segura?

    ¿Qué es ASLR y cómo mantiene su computadora segura?

    La asignación aleatoria del diseño del espacio de direcciones (ASLR) es una técnica de seguridad utilizada en los sistemas operativos, implementada por primera vez en 2001. Las versiones actuales de los principales sistemas operativos (iOS, Android, Windows, macOS y Linux) cuentan con protección ASLR. Pero en la semana pasada, se ha encontrado un nuevo método para evitar ASLR. Entonces, ¿debería estar preocupado??

    Para aquellos sin un fondo de programación de bajo nivel, ASLR puede ser confuso. Para entenderlo, primero debes entender la memoria virtual..

    ¿Qué es la memoria virtual??

    La memoria virtual es una técnica de administración de memoria con muchos beneficios, pero se creó principalmente para facilitar la programación. Imagina que tienes Google Chrome, Microsoft Word y otros programas abiertos en una computadora con 4 GB de RAM. En general, los programas en esta computadora utilizan mucho más de 4 GB de RAM. Sin embargo, no todos los programas estarán activos en todo momento o necesitarán acceso simultáneo a esa RAM.

    El sistema operativo asigna trozos de memoria a los programas llamados páginas. Si no hay suficiente RAM para almacenar todas las páginas a la vez, las páginas con menos probabilidades de ser necesarias se almacenan en el disco duro más lento (pero más espacioso). Cuando se necesiten las páginas almacenadas, cambiarán los espacios con las páginas menos necesarias actualmente en la RAM. Este proceso se llama paginación, y le da su nombre al archivo pagefile.sys en Windows.

    La memoria virtual facilita que los programas administren su propia memoria y también los hace más seguros. Los programas no tienen que preocuparse por dónde otros programas almacenan datos o cuánta RAM queda. Solo pueden solicitar al sistema operativo una memoria adicional (o devolver la memoria no utilizada) según sea necesario. Todo lo que el programa ve es una sola porción continua de direcciones de memoria para su uso exclusivo, llamadas direcciones virtuales. El programa no tiene permitido mirar la memoria de otro programa..

    Cuando un programa necesita acceder a la memoria, le da al sistema operativo una dirección virtual. El sistema operativo contacta con la unidad de administración de memoria de la CPU (MMU). La MMU traduce entre direcciones virtuales y físicas, devolviendo esa información al sistema operativo. En ningún momento el programa interactúa directamente con RAM.

    ¿Qué es ASLR??

    La asignación aleatoria del diseño del espacio de direcciones (ASLR) se usa principalmente para proteger contra ataques de desbordamiento de búfer. En un desbordamiento de búfer, los atacantes alimentan una función con la mayor cantidad de datos basura que puede manejar, seguidos de una carga maliciosa. La carga útil sobrescribirá los datos a los que el programa pretende acceder. Las instrucciones para saltar a otro punto en el código son una carga útil común. El famoso método JailbreakMe de jailbreaking iOS 4, por ejemplo, usó un ataque de desbordamiento de búfer, lo que llevó a Apple a agregar ASLR a iOS 4.3.

    Los desbordamientos de búfer requieren que un atacante sepa dónde se encuentra cada parte del programa en la memoria. Determinar esto es generalmente un proceso difícil de prueba y error. Después de determinar eso, deben crear una carga útil y encontrar un lugar adecuado para inyectarla. Si el atacante no sabe dónde se encuentra su código objetivo, puede ser difícil o imposible explotarlo.

    ASLR trabaja junto con la administración de la memoria virtual para aleatorizar las ubicaciones de diferentes partes del programa en la memoria. Cada vez que se ejecuta el programa, los componentes (incluidos la pila, el montón y las bibliotecas) se mueven a una dirección diferente en la memoria virtual. Los atacantes ya no pueden saber dónde está su objetivo a través de prueba y error, porque la dirección será diferente cada vez. En general, las aplicaciones deben compilarse con el soporte ASLR, pero esto se está convirtiendo en el predeterminado, e incluso se requiere en Android 5.0 y versiones posteriores..

    Así que ASLR todavía te protege?

    El martes pasado, investigadores de SUNY Binghamton y de la Universidad de California en Riverside, presentaron un artículo titulado Jump Over ASLR: Atacando a los Predictores de Sucursales para eludir ASLR. El documento detalla una forma de atacar el búfer objetivo de rama (BTB). El BTB es parte del procesador que acelera las afirmaciones al predecir el resultado. Usando el método de los autores, es posible determinar ubicaciones de instrucciones de rama conocidas en un programa en ejecución. El ataque en cuestión se realizó en una máquina Linux con un procesador Intel Haswell (lanzado por primera vez en 2013), pero probablemente podría aplicarse a cualquier sistema operativo y procesador modernos.

    Dicho esto, no necesariamente debes desesperarte. El documento ofreció algunas formas en que los desarrolladores de hardware y sistemas operativos pueden mitigar esta amenaza. Las nuevas técnicas de ASLR de grano fino requerirían más esfuerzo por parte del atacante, y aumentar la cantidad de entropía (aleatoriedad) puede hacer que el ataque Over Over no sea factible. Lo más probable es que los sistemas operativos y procesadores más nuevos sean inmunes a este ataque.

    Entonces, ¿qué queda para ¿que hacer? El bypass de Jump Over es nuevo y aún no se ha visto en la naturaleza. Cuando los atacantes lo explotan, la falla aumentará el daño potencial que un atacante puede causar en su dispositivo. Este nivel de acceso no tiene precedentes; Microsoft y Apple solo implementaron ASLR en sus sistemas operativos lanzados en 2007 y posteriores. Incluso si este estilo de ataque se convierte en algo común, no estarás peor que en los días de Windows XP..

    Tenga en cuenta que los atacantes aún tienen que obtener su código en su dispositivo para hacer cualquier daño. Esta falla no les proporciona ninguna forma adicional de infectarte. Como siempre, debe seguir las mejores prácticas de seguridad. Use antivirus, manténgase alejado de sitios web y programas incompletos y mantenga su software actualizado. Al seguir estos pasos y mantener a los actores maliciosos fuera de tu computadora, estarás tan seguro como nunca antes..

    Crédito de la imagen: Steve / Flickr