Páginas não executáveis (NX-bit) são um recurso de hardware. Permite que o sistema operacional marque quais páginas podem ser executadas. Falha no processador se o programa tentar executar código na página de memória não executável.
Além disso, se a pilha é / não é executável, depende também das opções do compilador (e do binário resultante). As distribuições Linux modernas permitem muitas técnicas de proteção para binários de espaço do usuário, como pilhas não executáveis, canários de pilha, randomização de layout de espaço de endereço. Por exemplo, endurecimento do espaço do usuário do Ubuntu .
É possível possível compilar seus binários com uma pilha executável e sem canários de pilha para tornar possível o estouro de pilha, como foi feito para o exemplo de vídeo (não foi possível ver o programa compilado / quais opções foram usadas, mas por padrão o gcc não deve habilitar pilhas executáveis para um programa tão simples).
Além disso, o SELinux (e outros Módulos de Segurança do Linux) também podem ser configurados para impedir que o sistema execute binários que exijam memória executável + gravável (heap ou pilha).