¿La extensión MPX de Intel hará que C / C ++ sea completamente seguro de usar?

4

Aparentemente, esta es una extensión que eliminará el desbordamiento del búfer y las vulnerabilidades de las cadenas de formato en los programas C / C ++, supongo que al proporcionar soporte de hardware, por ejemplo. convirtiendo scanf a fgets automáticamente, o algo por el estilo. ¿Cambiará esta extensión la reputación de C / C ++ como un lenguaje peligroso? ¿Será C / C ++ finalmente completamente seguro de usar? ¿O otras vulnerabilidades como los desbordamientos de enteros seguirán siendo una preocupación? ¿Hay alguna razón por la cual MPX no convertiría C / C ++ en un lenguaje completamente seguro? No estoy muy familiarizado con MPX y quiero saber de las personas que están.

Pido disculpas si esta pregunta es demasiado general. Las sugerencias para reducirlo son bienvenidas.

    
pregunta Zen Hacker 03.01.2016 - 00:03
fuente

1 respuesta

4

En primer lugar, C ++ tiene suficientes grados de libertad como para que una computadora no pueda hacerlo completamente seguro. C ++, literalmente, le da acceso completo a cualquier cosa que la CPU pueda hacer.

Las funciones como fscanf son rutinas que realizan bucles y comprobaciones internas para ofrecerle una funcionalidad de nivel superior. Sin embargo, fscanf no tiene conocimiento de qué tan lejos va un búfer (es decir, qué tan grande es). La única parte del código que tiene esa información es la biblioteca malloc, pero también es un algoritmo de nivel superior para facilitar las cosas que el hardware no conoce.

Teóricamente, el compilador puede almacenar esta información y pasarla a las extensiones MPX, pero en muchas aplicaciones será casi imposible de hacer porque la mayoría de las cosas se almacenan como void* y se pasan manualmente, por lo que un analizador estático no puede tener Información requerida para establecer esos registros. La única forma de hacer esto sería almacenar información adicional en tiempo de ejecución, cambiando así el tamaño de void* que violaría las reglas de C ++, por lo que tendría que ser un tipo especial que muy pocos desarrolladores implementarán realmente porque cuesta demasiado.

Un desbordamiento de búfer ocurre cuando el desarrollador es perezoso con su poder, no cuando el hardware falla.

Esto es solo uno de los posibles errores en el software que lo hacen inseguro. Ha habido VARIOS errores que son desbordamientos de enteros, lógica no válida, etc.

Así que no, no hará que C ++ sea completamente seguro de usar, nada lo hará.

    
respondido por el iAdjunct 03.01.2016 - 03:08
fuente

Lea otras preguntas en las etiquetas