Si los sistemas operativos mantuvieran el tamaño de la memoria de página menor que el tamaño del programa ‘shell’ más pequeño posible, ¿el sistema operativo sería más seguro contra ataques de desbordamiento de búfer?

No, no lo haría. Si el tamaño de la página se reduce para decir ‘x’ desde ‘y’ y si una imagen ejecutable de un programa anteriormente requería 100 páginas, ahora requeriría más de 100 páginas dependiendo del factor en cuanto a que ‘x’ sea menor que ‘ y ‘. Básicamente, el tamaño de página no tiene nada que ver con que el sistema operativo sea seguro contra ataques de desbordamiento de búfer.

Para concreción, permítanme agregar un ejemplo. Supongamos que el tamaño de página reducido es de 256 bytes, mientras que el tamaño de página original es de 4k bytes. Tiene un búfer de aproximadamente 512 bytes que ocupará 2 páginas en su esquema de tamaño de página reducido, mientras que ocupará solo una parte de una página en el esquema original. Para que los exploits de desbordamiento de pila tengan éxito, necesitamos algo de espacio para alojar la memoria, ya que nuestro búfer es lo suficientemente grande como para contener el código shell, podemos alojar el código shell dentro de nuestro búfer antepuesto con nops para aumentar la probabilidad de explotación (supongo que no tener cualquier protección de desbordamiento de búfer como NX, cookies de pila, ASLR, etc.), luego sobrescribimos la dirección de retorno guardada con la dirección de nuestro shellcode. Ahora observe que el tamaño de la página no es un factor en cuanto a si la explotación es una posibilidad o no, el tamaño del búfer es el factor , lea más sobre egghunters que se pueden usar para remediar pequeños problemas de búfer.

No soy un experto de ninguna manera, pero los códigos de shell tienden a ser muy pequeños, mucho más pequeños que los tamaños de página típicos. Entonces, incluso si su idea funciona (que no sé), el impacto en el rendimiento probablemente sería prohibitivo.