stringtranslate.com

Pila de sombras

En seguridad informática , una pila oculta es un mecanismo para proteger la dirección de retorno almacenada de un procedimiento , [1] como, por ejemplo, contra un desbordamiento del búfer de la pila . La pila de sombra en sí es una segunda pila separada que " sombrea " la pila de llamadas del programa . En el prólogo de la función , una función almacena su dirección de retorno tanto en la pila de llamadas como en la pila oculta. En el epílogo de la función , una función carga la dirección de retorno tanto de la pila de llamadas como de la pila de sombra, y luego las compara. Si los dos registros de la dirección del remitente difieren, entonces se detecta un ataque; el curso de acción típico es simplemente finalizar el programa o alertar a los administradores del sistema sobre un posible intento de intrusión. Una pila oculta es similar a los canarios de pila en el sentido de que ambos mecanismos tienen como objetivo mantener la integridad del flujo de control del programa protegido mediante la detección de ataques que alteran la dirección de retorno almacenada por parte de un atacante durante un intento de explotación .

Las pilas de sombras se pueden implementar recompilando programas con prólogos y epílogos modificados, [2] mediante técnicas de reescritura binaria dinámica para lograr el mismo efecto, [3] o con soporte de hardware. [4] A diferencia de la pila de llamadas, que también almacena variables del programa local, argumentos pasados, registros dispersos y otros datos, la pila oculta normalmente solo almacena una segunda copia de la dirección de retorno de una función.

Las pilas ocultas brindan más protección para las direcciones de retorno que los canarios de pila, que dependen del secreto del valor canario y son vulnerables a ataques de escritura no contiguas. [5] Las pilas de sombra en sí mismas pueden protegerse con páginas de protección [6] o ocultando información, de modo que un atacante también necesitaría ubicar la pila de sombra para sobrescribir una dirección de retorno almacenada allí.

Al igual que los valores controlados de pila, las pilas ocultas no protegen los datos de la pila que no sean las direcciones de retorno y, por lo tanto, ofrecen una protección incompleta contra las vulnerabilidades de seguridad que resultan de errores de seguridad de la memoria .

En 2016, Intel anunció el próximo soporte de hardware para pilas de sombra con su tecnología Control-flow Enforcement. [7]

Las pilas de sombras enfrentan algunos problemas de compatibilidad. Después de que un programa genera una excepción o se produce un longjmp , la dirección de retorno en la parte superior de la pila oculta no coincidirá con la dirección de retorno extraída de la pila de llamadas. La solución típica para este problema es extraer entradas de la pila oculta hasta que se encuentre una dirección de retorno coincidente y solo finalizar el programa cuando no se encuentre ninguna coincidencia en la pila oculta. [3]

Un programa multiproceso , que tendría una pila de llamadas para cada subproceso en ejecución, también tendría una pila de sombra que vigilaría cada una de las pilas de llamadas.

Ver también

Referencias

  1. ^ Delshadtehrani, Leila; Eldridge, Schuyler; Canakci, Sadullah; Egele, Manuel; Joshi, Ajay (1 de enero de 2018). "Nile: un coprocesador de monitoreo programable". Cartas de arquitectura informática IEEE . 17 (1): 92–95. doi : 10.1109/LCA.2017.2784416 . ISSN  1556-6056.
  2. ^ "StackShield: una herramienta de protección técnica de" destrucción de pilas "para Linux". Vendedor.
  3. ^ ab Sinnadurai, Saravanan; Zhao, Qin; Wong, Weng Fai (2008). "Pila de sombra de tiempo de ejecución transparente: protección contra modificaciones maliciosas de la dirección de retorno" (PDF) .
  4. ^ Ozdoganoglu, H.; Brodley, C .; Vijaykumar, T.; Kuperman, B. (2006). "SmashGuard: una solución de hardware para evitar ataques a la función de dirección de retorno" (PDF) . Transacciones IEEE en computadoras . 55 (10): 1271-1285. doi :10.1109/TC.2006.166.
  5. ^ Székeres, Laszlo; Pagador, Mathías ; Wei, Tao; Canción, amanecer (2003). "SoK: Guerra eterna en la memoria" (PDF) . Simposio IEEE sobre seguridad y privacidad : 48–63.
  6. ^ Chieuh, Tzi-cker; Hsu, Fu-Hau (2001). "RAD: una solución en tiempo de compilación para ataques de desbordamiento de búfer". Actas de la XXI Conferencia Internacional sobre Sistemas Computacionales Distribuidos . págs. 409–417. doi :10.1109/ICDSC.2001.918971. ISBN 0-7695-1077-9. S2CID  32026510.
  7. ^ "Vista previa de la tecnología de aplicación de flujo de control" (PDF) . Corporación Intel .