Rischi associati alla compilazione di progetti open source

2

Dopo aver letto questa domanda su se è più sicuro scaricare e compilare il sorgente per un progetto open source o scaricare ed eseguire il programma di installazione, ho pensato ad un'altra possibile vulnerabilità: è concepibile che un compilatore possa essere progettato per lasciare una porta di servizio ( o altro malware) all'interno di un file che emette? In altre parole, il compilatore utilizzato per compilare il codice sorgente potrebbe essere compromesso? L'unico modo in cui una cosa del genere potrebbe essere catturata sarebbe dissasemblare un eseguibile compilato e confrontare il codice con l'originale. Questo sarebbe molto difficile.

Inoltre avresti bisogno di un compilatore preesistente per compilare un compilatore open source. E 'anche teoricamente possibile avere un sistema che è tutto software open source e il proprietario del computer (o un gruppo di persone fidate) ha revisionato il codice per i programmi utilizzati?

    
posta Celeritas 18.04.2014 - 14:03
fonte

2 risposte

1

Devi guardare la catena della fiducia. Ti fidi della fonte dell'autore del codice, se tu o qualcuno di cui ti fidi hai revisionato il codice, ti fidi del compilatore . È infatti possibile distribuire un compilatore che inserisca backdoor, codice dannoso, ecc.

Ken Thompson's Reflections on Trusting Trust, his Turing Award acceptance speech in 1984, was the first major paper to describe black box backdoor issues, and points out that trust is relative.

È anche possibile che il tuo compilatore non agisca come previsto e potrebbe ridurre l'insicurezza del codice :

Four researchers in MIT’s Computer Science and Artificial Intelligence Laboratory, in a paper which is to be presented next week at the ACM Symposium on Operating Systems Principles, looked at the problem of optimization-unstable code, which is code that gets removed by a compiler because it includes undefined behavior. Undefined behavior is code which can behave unpredictably, such as dividing by zero, null pointer dereferencing and buffer overflows. Unlike other code, compiler writers are free to deal with undefined behavior however they wish. In some cases, they choose to eliminate it completely, which can lead to vulnerabilities if the code in question contains security checks.

    
risposta data 18.04.2014 - 15:22
fonte
1

Sì, il compilatore, come qualsiasi altro programma che esegue codice sul tuo computer, può essere usato per aggiungere istruzioni dannose in un programma, prima o dopo averlo compilato (eg ELF intestazione e manipolazione delle sezioni ).

    
risposta data 18.04.2014 - 14:29
fonte

Leggi altre domande sui tag