Sin embargo, no pude encontrar nada sobre si el error en get se corrige o no, es decir, si get, scanf, fscanf, etc. comprueba los límites de los buffers de entrada o no.
Si entendemos cómo funciona C o si echamos un vistazo a la documentación, es difícil pasar por alto que estos errores no se han solucionado y no pueden solucionarse manteniendo la misma interfaz de funciones.
Dado que estas funciones solo obtienen un puntero a un búfer ( char*
) y no el tamaño del búfer y dado que no hay un tamaño implícito asociado con el búfer en C, es imposible que estas funciones lo verifiquen. Los límites (desconocidos). Esto significa que es imposible corregir estas funciones inseguras por diseño que mantendrán la API.
Esto incluso se describe claramente, por ejemplo, en man man :
Nunca use get (). Debido a que es imposible saber sin saber de antemano la cantidad de caracteres que leerán (), y get () continuará almacenando caracteres más allá del final del búfer , es extremadamente peligroso utilizar. Se ha utilizado para romper la seguridad informática. Utilice fgets () en su lugar.
Además, ¿hay algún estudio o estimación sobre cuál sería el costo si alguien pudiera lanzar un ataque similar al de hoy?
No estoy al tanto de ninguna investigación seria y no podría imaginarme ninguna ya que hay demasiadas incógnitas: hasta qué punto se pudo propagar el gusano, cuál es el daño real que causa en cada sistema ... Pero, si tal Si el gusano tiene éxito, el daño será mucho mayor que en el pasado, ya que hay más sistemas conectados que están conectados y, además, la criticidad de estos sistemas es mucho mayor. Recomiendo echar un vistazo a los ataques recientes como WannaCry .