¿Qué tan peligroso es hacer referencia a una variable fuera de su vida útil?

5

Entiendo que hacer referencia a una variable fuera de su vida útil es una práctica peligrosa y puede permitir que alguien evite seriamente la lógica del programa. Sin embargo, el Estándar de codificación segura del lenguaje de programación CERT C (editado por última vez en 2007) hace referencia a esto como una vulnerabilidad de nivel 3 en términos de gravedad, lo que significa que puede llevar al usuario a ejecutar código arbitrario. Me gustaría una ilustración de cómo esto podría ser posible, o una referencia a un artículo que lo explique.

    
pregunta user109940 07.05.2016 - 20:00
fuente

1 respuesta

7

El problema de usar el uso de memoria fuera de su vida útil es que su contenido podría haber cambiado de forma inesperada.

Considere una estructura asignada dinámicamente con un puntero a función como campo. Si esta memoria se libera de alguna manera, es posible que la siguiente solicitud de asignación de memoria apunte a esta memoria. Un atacante que controla esta memoria puede colocar datos en ella, que luego se interpretan como un puntero de función a un código malicioso. Este es un ejemplo de ejecución de código arbitrario.

    
respondido por el Lekensteyn 07.05.2016 - 22:59
fuente

Lea otras preguntas en las etiquetas