I flag di ottimizzazione sono dannosi?

0

Sembra esserci un consenso, che

-D_FORTIFY_SOURCE=2 -O1

è una misura di rafforzamento che dovrebbe essere applicata come opzione del compilatore. Questa è stata anche una raccomandazione nel report Pentest di Dovecot .

Ciò di cui sono confuso è che _FORTIFY_SOURCE=2 ha bisogno di un flag di ottimizzazione, nonostante il fatto che - almeno secondo questo bug report - può avere implicazioni sulla sicurezza.

Ho troppa poca comprensione per comprendere la gravità di -O1 sulla sicurezza.

Qualcuno può per favore chiarire perché -O1 è un problema (preferibilmente anche come questo può essere mitigato) o perché questo non è un problema? Anche se ha entrambi i lati, quali sarebbero i fattori da considerare?

    
posta user857990 13.04.2017 - 14:01
fonte

1 risposta

2

Nel rapporto sui bug che hai collegato, lo sviluppatore tenta di sovrascrivere la password in memoria. Questo cambia solo il contenuto della memoria e non ha altri effetti collaterali.

Un compilatore ottimizzante può cambiare il codice in qualsiasi modo a suo piacimento purché non cambi il comportamento del programma. Il comportamento del programma è il suo input e output, ma non il suo contenuto di memoria. Quindi, se si sovrascrive una password in memoria, il compilatore è libero di rimuoverlo, dal momento che rimuoverlo non ha alcun effetto sul funzionamento del programma.

Penso che come sviluppatore devi accettare il fatto che non hai il controllo sul contenuto della memoria, invece di combattere il compilatore.

    
risposta data 13.04.2017 - 16:20
fonte

Leggi altre domande sui tag