Si un adversario pudiera identificar la capacidad de un amortiguador, ¿cuáles serían las posibles consecuencias?
El atacante ya conoce la capacidad de todos tus buffers. Esta es la suposición básica normal: los buffers en su software están definidos por el propio software, que existe como código fuente, ejecutable, copias de respaldo y en los jefes de los diseñadores. El mismo software puede haber sido comprado por el atacante y diseñado por ingeniería inversa; o el software podría ser simplemente de código abierto. No se puede considerar que el software sea secreto de ninguna manera, porque hay demasiadas formas para que personas externas aprendan ese software secreto.
Supongamos que ejecuta algún software en su servidor, que espera de los clientes conectados un nombre de usuario y una contraseña. El software almacenará los datos recibidos en buffers en memoria antes de procesar esa información. Supongamos que los buffers son aptos para recibir 200 caracteres cada uno. El atacante también lo sabe (ver arriba). Hasta ahora todo bien.
El problema no es que el atacante sepa el tamaño de tus búferes; el problema es cuando el atacante suministra más datos de los que pueden caber en dichos buffers, y el software, erróneamente, intenta introducir los datos en el buffer a pesar de que no tiene sentido. Este es el desbordamiento del búfer: el software estúpido y crédulo es inducido a intentar hacer algo sin sentido, y los datos se derraman sobre otros elementos de datos en la RAM de la máquina.
Algunos lenguajes de programación, de hecho la mayoría de ellos, excepto los lenguajes prehistóricos como C, comprueban sistemáticamente los accesos a los arreglos y, por lo tanto, detectan el intento de desbordamiento del búfer incluso si el desarrollador no incluyó las comprobaciones necesarias. Esto no resuelve el problema (el problema es que el software todavía quiere hacer cosas que no tienen sentido), pero al menos contiene el daño (el proceso ofensivo se mata rápidamente, y esa es la medida). / P >
Lea otras preguntas en las etiquetas attacks data-leakage known-vulnerabilities buffer-overflow threats