Estoy trabajando en una presentación para dar a los estudiantes de ciencias de la computación de la escuela secundaria donde trabajo como voluntario. Parte de la presentación es sobre exploits locales y de red. Estoy planeando hablar sobre una historia en la que hace años pude obtener acceso a la raíz creando un programa con un desbordamiento de búfer intencional, configurando el bit setuid y ejecutando una diapositiva NOP para ejecutar shellcode. Cuando se ejecuta este programa en un sistema operativo moderno o en un hardware moderno, la vulnerabilidad ya no funciona debido al bit NX. (Obtuve esta técnica del libro "Hacking, el arte de la explotación").
También planeo hablar sobre el ransomware WannaCry. Haciendo referencia a este enlace de FireEye en WannaCry , comentan que después de que el paquete con formato incorrecto se envió a SMBv1 en el puerto 445, el software pudo ejecutar una diapositiva NOP y luego ejecutar Shellcode.
Mi pregunta es, ¿por qué el bit NX (ya sea del sistema operativo o de la CPU) no pudo impedir que WannaCry funcione?