
🔎 Hilft, die Trojan Source-Sicherheitslücke im Code zu finden 👀 . Nützlich für Code-Reviews in Projekten mit mehreren Mitwirkenden (CI/CD).
Die Trojan-Source-Sicherheitslücke ermöglicht es einem Angreifer, bösartigen Code harmlos erscheinen zu lassen. Im Allgemeinen versucht der Angreifer, seinen Code als Kommentar (visuell) zu tarnen. Es ist eine ernsthafte Bedrohung, da sie viele Sprachen betrifft. Projekte mit mehreren „nicht vertrauenswürdigen“ Quellen könnten betroffen sein.
Böses erkennen 🔎
·
Böses verfolgen 👀
·
Trojan Source ❓
go> Über go install
go install github.com/ariary/TrojanSourceFinder/cmd/tsfinder@latest
Stellen Sie sicher, dass $GOPATH in Ihrem $PATH ist.
> Aus dem Quellcode
git clone https://github.com/ariary/TrojanSourceFinder
cd TrojanSourceFinder
make before.build
make build.tsfinder
Wenn der Befehl make build.tsfinder fehlschlägt, versuchen Sie es mit:
env GOOS=target-OS GOARCH=target-architecture
go build -o tsfinder cmd/main.go
curl> Aus der Veröffentlichung
curl -lO -L https://github.com/ariary/TrojanSourceFinder/releases/latest/download/tsfinder && chmod +x tsfinder
> Hilft bei der Erkennung von Trojan Source für manuelle Code-Überprüfung oder mit CI/CD-Pipelines (Unicode-Bidirektionszeichen)
Um Trojan Source in einer Datei oder einem Verzeichnis <Pfad> zu erkennen:
tsfinder [path]
> Quellcodedateien sind in der Regel Textdateien. Binärdateien aus dem Scan auszuschließen kann helfen, Fehlalarme zu vermeiden.
tsfinder -t [path]
Fügen Sie -v hinzu, um zu sehen, welche Datei vom Scan übersprungen wurde.
Trojan Source ist nicht neu und nicht die einzige Gefahr. Eine weitere sind „Homoglyphen“.(Kezako?)
tsfinder hilft bei der Erkennung mit dem Befehl homoglyph:
tsfinder homoglyph [filename] [flags]
Sie können sehen, ob es ein Geschwister (d.h. ein Wort mit demselben „Grundgerüst“) für die Homographen gibt, die in path gefunden wurden, indem Sie das Flag --sibling verwenden:
tsfinder homoglyph [filename] --sibling [path]
Funktionalität in Entwicklung, hauptsächlich abhängig von anderen Projekten
> Visualisieren, wie der Code tatsächlich von Maschinen/Compilern interpretiert wird
tsfinder ist bewusst nicht sehr ausführlich. Standardmäßig gibt es nur aus, ob Trojan-Source-Code erkannt wurde. Für mehr Ausführlichkeit und um die gefährliche Zeile zu visualisieren, fügen Sie das Flag -v hinzu.
Um besser zu sehen, wo Trojan Sources waren, können Sie die farbige Ausgabe mit dem Flag -c aktivieren (auch nützlich bei Verzeichnisscans):
tsfinder -c -v <directory>


Wie von @ioah86 hier erwähnt, könnte Trojan Source auch mit einem Einzeiler mit grep erkannt werden.
Der große Unterschied ist das Ausgabeformat und der Exit-Status-Code (tsfinder beendet sich mit Statuscode 0, wenn kein Trojan Source gefunden wurde, andernfalls mit 1; das Gegenteil gilt für grep)
Außerdem löst dieser Einzeiler das Homoglyphen-Problem nicht.
| Ziel | tsfinder | grep-Einzeiler |
|---|
| Alle Dateien scannen + Zeilen anzeigen | tsfinder -v . | grep -arE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| Nur menschenlesbare Dateien scannen | tsfinder -t . | grep -IrE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| Beenden mit Statuscode 1, wenn gefunden | Standard | [Einzeiler] && exit 1 || exit 0 |