
🔎 Aiuta a trovare la vulnerabilità Trojan Source nel codice 👀 . Utile per la revisione del codice in progetti con più collaboratori (CI/CD)
La vulnerabilità Trojan Source permette a un attaccante di far apparire innocuo del codice malevolo.
In generale, l'attaccante cerca di ingannare facendo passare il suo codice per un commento (visivamente). È una minaccia seria perché riguarda molti linguaggi. Progetti con più fonti "non fidate" potrebbero essere interessati.
Rileva il male 🔎
·
Traccia il male 👀
·
Trojan Source ❓
go> Tramite go install
go install github.com/ariary/TrojanSourceFinder/cmd/tsfinder@latest
Assicurati che $GOPATH sia nel tuo $PATH
> Dal sorgente
git clone https://github.com/ariary/TrojanSourceFinder
cd TrojanSourceFinder
make before.build
make build.tsfinder
Se il comando make build.tsfinder fallisce, prova:
env GOOS=target-OS GOARCH=target-architecture
go build -o tsfinder cmd/main.go
curl> Dalla release
curl -lO -L https://github.com/ariary/TrojanSourceFinder/releases/latest/download/tsfinder && chmod +x tsfinder
> Aiuta il rilevamento di Trojan Source per la revisione manuale del codice o con pipeline CI/CD (caratteri bidirezionali Unicode)
Per rilevare Trojan Source in un file o directory <percorso>:
tsfinder [path]
> I file di codice sorgente sono solitamente file di testo. Escludere i binari dalla scansione può aiutare a escludere falsi positivi
tsfinder -t [path]
Aggiungi -v per vedere quali file sono stati saltati dalla scansione.
Trojan Source non è nuovo e non è l'unico pericolo. Un altro è "Omoglifo".(Che cos'è?)
tsfinder aiuta a rilevarli con il comando homoglyph:
tsfinder homoglyph [filename] [flags]
Puoi vedere se esiste un sibling (cioè una parola con lo stesso "scheletro") per gli omografi trovati in path usando il flag --sibling:
tsfinder homoglyph [filename] --sibling [path]
> Funzionalità in sviluppo, principalmente dipendente da altri progetti
> Visualizza come il codice è realmente interpretato da macchine/compilatore
tsfinder è deliberatamente non molto verboso. Per impostazione predefinita, produce output solo se è stato rilevato codice Trojan Source. Per avere più dettagli e visualizzare la riga pericolosa, aggiungi il flag -v.
Per vedere meglio dove si trovavano i Trojan Source, puoi abilitare l'output colorato con il flag -c (utile anche per la scansione di directory):
tsfinder -c -v <directory>


Come menzionato da @ioah86 qui, Trojan Source potrebbe anche essere rilevato con una one-liner usando grep.
La grande differenza è il formato dell'output e il codice di uscita (tsfinder esce con codice 0 se non viene trovato Trojan Source, 1 altrimenti; l'opposto per grep)
Inoltre, questa one-liner non risolve il problema degli omoglifi.
| Obiettivo | tsfinder | grep one-liner |
|---|
| Scansiona tutti i file + mostra le righe | tsfinder -v . | grep -arE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| Scansiona solo file leggibili dall'uomo | tsfinder -t . | grep -IrE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| Esci con codice 1 se trovato | default | [one-liner] && exit 1 || exit 0 |