Cosa cerchi nel codice Open Source per assicurarti che non ci siano codici maligni?

3

Mi rendo conto che le risposte saranno specifiche per la lingua, ma sono curioso di sapere quali termini si dovrebbero cercare quando si controlla qualcosa su Github? Stavo cercando uno strumento di amministrazione remota che potessi utilizzare con i client e ho trovato alcuni fantastici, che sono "virus"

Prendi il link (associato a metasploit), o il progetto QuasarRAT ad esempio: link

Ora ho visto strumenti aziendali costosi come SolarWinds MSP Connect, Dameware e così via che fanno la maggior parte di quelle stesse cose, ma QuasarRAT è elencato come virus quando provo a compilarlo.

Stavo giocando con l'idea di prendere a parte il programma QuasarRAT, segmentando ciascuna funzionalità in plugin, rimuovendo quelli che potrebbero essere solo dannosi, ma poi non sono sicuro che non sarebbe ancora elencato come virus.

In PHP dovrei cercare codice offuscato che usasse base64_decode (), exec () e così via, ma sono curioso di sapere quali termini dovrei essere alla ricerca di C #, C ++ C, Bash - in particolare quelli che potrebbero coinvolgere keylogging, trasmettere dati a un host remoto o scaricare cose aggiuntive sul computer?

Le cose che posso pensare sono TcpListener, AcceptTcpClient, stream, bind, socket, http, wget, curl, ftp, ssh, rsync. Dal momento che non parlo fluentemente in C ++, C, e so che ho ancora molto da imparare in Bash and C #, mi piacerebbe avere suggerimenti per quelle divertenti uova di Pasqua che le persone hanno nascosto che hai trovato.

Mentre mi rendo conto che solo perché questi termini sono usati, ciò non significa che sia malizioso, ma almeno posso focalizzare un po 'di tempo su quella funzione e decidere cosa sta facendo, cos'altro lo sta chiamando, e se è approvato.

SE possiamo ottenere una buona lista insieme, cercherò di creare uno script che cercherà automaticamente e riporterà le corrispondenze per la revisione.

    
posta Alan 29.08.2018 - 06:01
fonte

1 risposta

5

Se vuoi essere sicuro al 100% che alcuni repository git non contengano codice dannoso, scrivilo tu stesso; qualsiasi altra cosa sarà una battaglia in salita.

Se qualcuno sta veramente cercando di nascondere il codice dannoso in bella vista, probabilmente non lo noterai. Prendiamo ad esempio il famigerato 2003 quasi-backdoor in il kernel di Linux dove questo codice innocuo:

if ((options == (__WCLONE|__WALL)) && (current->uid == 0))
    retval = -EINVAL;

è stato trasformato in una backdoor in questo modo:

if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
    retval = -EINVAL;

(suggerimento: invece di controllare se sei root uid == 0 , ti trasforma in root uid = 0 . Quindi passa i flag _WCLONE|_WALL a qualsiasi chiamata di sistema e BAM! sei root. )

Questo esempio non è direttamente rilevante, ma mostra che il codice dannoso in C / C ++ può essere veramente sottile. Quindi, se pensi che ci sia una possibilità che qualcuno giochi a nascondino nel codice, vai avanti e trova un progetto diverso.

Spesso mi occupo di una versione più morbida della tua domanda, "Questa libreria / strumento open source è ok da usare?". Il mio approccio è vedere se ha una buona reputazione; è mantenuto attivamente? I loro biglietti github danno l'impressione di seguire un processo di sviluppo corretto? Pubblicano log di modifiche regolari, incluse correzioni di sicurezza? Ha CVE irrisolti contro di esso? Se ci sono file binari, sono firmati correttamente?

Non è infallibile, ma elimina i progetti più seri. (se qualcuno ha un modo migliore di controllare i progetti open source, mi piacerebbe ricevere suggerimenti!)

    
risposta data 29.08.2018 - 06:34
fonte

Leggi altre domande sui tag