La compilazione del codice non sicuro è sicura?

5

Sono curioso di compilare con gcc / g ++ / clang con il presupposto che le intestazioni e i file di implementazione sono forniti dall'utente, ma non la configurazione di build. (cioè, non cd lib && make )

E se l'utente potesse fornire anche file oggetto da collegare (librerie statiche)? Che ne dici di compilatori / linker forniti dall'utente forniti nel mix?

Un utente malintenzionato potrebbe portare un sistema inattivo (risorse di esaurimento) o potrebbe anche eseguire codice arbitrario in questo modo se tutto ciò che potrebbero fare è inviare *.cc , *.hh e *.a file, eventualmente flag del compilatore, e far compilare il sistema e collegarlo tutti insieme (ma non eseguirlo)?

    
posta PSkocik 01.07.2015 - 14:05
fonte

2 risposte

7

Non solo è possibile, è stato documentato diverse volte in passato.

link

Ad esempio, il link mostra un attacco di corruzione della memoria che potrebbe portare a vari tipi di compromessi, se fossero sufficientemente sfruttati.

Un compilatore è suscettibile come qualsiasi altro programma ai bug e agli input non corretti.

    
risposta data 01.07.2015 - 19:39
fonte
4

Almeno la compilazione C ++ è completa, quindi è possibile / facile produrre un ciclo infinito con impatto sulle prestazioni del sistema e produrre un output infinito (ram esaustivo e / o posto disco).

Ulteriori informazioni su come la compilazione C ++ è completa: link

    
risposta data 01.07.2015 - 16:54
fonte

Leggi altre domande sui tag