Estoy haciendo un curso en la universidad, donde uno de los laboratorios es realizar exploits de desbordamiento de búfer en el código que nos dan. Esto abarca desde exploits simples como cambiar la dirección de retorno de una función en una pila para volver a una función diferente, hasta el código que cambia el registro de un programa / estado de memoria pero luego regresa a la función que usted llamó, lo que significa que el La función que llamaste es completamente ajena al exploit.
Investigué un poco sobre esto, y este tipo de exploits se usan prácticamente en todas partes, incluso ahora, en cosas como ejecutar homebrew en Wii y el jailbreak sin ataduras para iOS 4.3.1
Mi pregunta es por qué este problema es tan difícil de solucionar. Es obvio que esta es una de las principales vulnerabilidades utilizadas para hackear cientos de cosas, pero parece que sería bastante fácil de solucionar simplemente truncando cualquier entrada más allá de la longitud permitida y simplemente desinfectando toda la entrada que tome.
EDITAR: Otra perspectiva que me gustaría tener en cuenta las respuestas: ¿por qué los creadores de C no solucionan estos problemas al reimplementar las bibliotecas?