¿Son dañinos los indicadores de optimización?

0

Parece que hay un consenso, que

-D_FORTIFY_SOURCE=2 -O1

es una medida de endurecimiento que debe aplicarse como opción de compilación. Esta también fue una recomendación en el Informe de Dovecot Pentest .

Lo que me confunde es que _FORTIFY_SOURCE=2 necesita un indicador de optimizador, a pesar del hecho de que, al menos de acuerdo con esto informe de error : puede tener implicaciones de seguridad.

Tengo muy poca comprensión para comprender la gravedad de -O1 en la seguridad.

¿Alguien puede arrojar algo de luz sobre por qué -O1 es un problema (preferiblemente también cómo puede mitigarse esto) o por qué esto no es un problema? Además, si tiene ambos lados, ¿cuáles serían los factores a considerar?

    
pregunta user857990 13.04.2017 - 14:01
fuente

1 respuesta

2

En el informe de error que vinculaste, el desarrollador intenta sobrescribir la contraseña en la memoria. Esto cambia solo el contenido de la memoria y no tiene otros efectos secundarios.

Un compilador optimizador puede cambiar el código de cualquier manera que le guste siempre y cuando no cambie el comportamiento del programa. El comportamiento del programa es su entrada y salida, pero no su contenido de memoria. Por lo tanto, si sobrescribe una contraseña en la memoria, el compilador puede eliminarla, ya que eliminarla no tiene ningún efecto en el funcionamiento del programa.

Creo que como desarrollador necesitas aceptar el hecho de que no tienes control sobre los contenidos de la memoria, en lugar de luchar contra el compilador.

    
respondido por el Sjoerd 13.04.2017 - 16:20
fuente

Lea otras preguntas en las etiquetas