#c-20" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3808195/order/20">#20
¿Que aporta Rust?
Su manejo de memoria es seguro por diseño, no hay "nulos" como tal si no que se devuelven tipos opcionales y tienes que mirar explícitamente si hay valor para poder acceder a el y la gestion de errores por como está diseñado es también explicita... y así varias cosas.
¿Es imposible corregir vulnerabilidades de manejo de memoria en C?
No, solo necesitas que el programador se asegure de hacer las liberaciones cuando toca, de borrar memoria cuando toca, de no hacer accidentalmente doble frees, comprobar siempre si un valor no es nulo, no usar valores que ya has liberado... y así con un montón de cosas más. Vamos que todo lo que te aporta Rust de serie es "manual".
¿Solo Rust permite corregir esas vulnerabilidades?
No, hay varios lenguajes que se pueden considerar con memoria segura, ellos mismos lo dicen aquí https://www.memorysafety.org/docs/memory-safety/ (Go, Java, Python, C#, ...), pero en este caso que hablamos de sistemas lo más adecuado por su forma de ser es Rust y que puede interactuar facilmente con otras cosas hechas en C (por ejemplo el kernel o las librerías de sistema). Un su o sudo en Python huiría de ello, me quedaría con el de C, y en Go me parecería absurdo no es el campo para el que está diseñado Go a parte de tener un binario de varios MB para una función a priori simple (he puesto Go y Python como ejemplo ya que son mis lenguajes principales).
No soy yo fan de la reescritura de absolutamente todo lo que estaba en C en Rust, por ejemplo una reescritura del kernel de linux es inviable pero han empezado a admitir módulos de kernel en Rust como segundo lenguaje y eso está bien.
#22 Los overflows también son de gestion de memoria CVE-2002-0184 y CVE-2019-18634 mirando rápido y sin pararme a ver detalles del resto de CVEs. sudo y su son componentes relativamente pequeños y con muchos ojos, por eso quizá no han tenido tantos problemas de este tipo.
Mira por ejemplo curl que hace estadísticas al respecto de las vulnerabilidades si están relaccionadas con temas de errores en C o de lógica/diseño: https://curl.se/dashboard1.html#c-vulns