Gokart ist ein statisches Analyse -Tool für GO, das Schwachstellen mithilfe der SSA -Form des GO -Quellcodes findet. Es ist in der Lage, die Quelle von Variablen und Funktionsargumenten zu verfolgen, um festzustellen, ob die Eingabemöder sicher sind, was die Anzahl der falsch positiven Aspekte im Vergleich zu anderen GO -Sicherheitsscannern verringert. Zum Beispiel könnte eine SQL -Abfrage, die mit einer Variablen verkettet wird, traditionell als SQL -Injektion gekennzeichnet werden. Gokart kann jedoch herausfinden, ob die Variable tatsächlich ein konstantes oder konstantes Äquivalent ist. In diesem Fall gibt es keine Anfälligkeit.
Gokart hilft auch dabei, Streitwagen , die Sicherheitsplattform von Praetorianer, mit Strom zu versorgen, mit der Sie Schwachstellen in Ihrem Quellcode und in Cloud -Umgebungen finden, verwalten und behoben werden können. Chariot macht es einfach, automatisierte, kontinuierliche Gokart -Scans auf Ihrem Quellcode auszuführen. Wenn Sie Gokart ausprobieren möchten, können Sie in Minuten ein kostenloses Wagenkonto einrichten, indem Sie hier klicken.
Die statische Analyse ist eine leistungsstarke Technik, um Schwachstellen im Quellcode zu finden. Der Ansatz hat jedoch unter lautem Laut gelitten - das heißt, viele statische Analyse -Tools finden einige "Schwachstellen", die eigentlich nicht real sind. Dies hat zu einer Reibung von Entwicklern geführt, da Benutzer die Tools "weinen Wolf" einst zu viele müde.
Die Motivation für Gokart bestand darin, dies anzusprechen: Könnten wir einen Scanner mit deutlich niedrigeren falsch positiven Raten als vorhandene Tools erstellen? Basierend auf unserer Experimente lautet die Antwort Ja. Durch die Nutzung von Quell-zu-Sin-Verfolgung und SSA kann Gokart zwischen variablen Zuordnungen eine variable Mühe verfolgen, wodurch die Genauigkeit der Ergebnisse signifikant verbessert wird. Unser Fokus liegt auf der Benutzerfreundlichkeit: Pragmatisch bedeutet dies, dass wir unsere Ansätze optimiert haben, um Fehlalarme zu reduzieren.
Für weitere Informationen lesen Sie bitte unseren Blog -Beitrag.
Sie können Gokart lokal mit einer der unten aufgeführten Optionen installieren.
go install $ go install github.com/praetorian-inc/gokart@latestLaden Sie die Binärdatei für Ihr Betriebssystem von der Seite "Releases" herunter.
(Optional) Laden Sie die Datei checksums.txt herunter, um die Integrität des Archivs zu überprüfen
# Check the checksum of the downloaded archive
$ shasum -a 256 gokart_ ${VERSION} _ ${ARCH} .tar.gz
b05c4d7895be260aa16336f29249c50b84897dab90e1221c9e96af9233751f22 gokart_ ${VERSION} _ ${ARCH} .tar.gz
$ cat gokart_ ${VERSION} _ ${ARCH} _checksums.txt | grep gokart_ ${VERSION} _ ${ARCH} .tar.gz
b05c4d7895be260aa16336f29249c50b84897dab90e1221c9e96af9233751f22 gokart_ ${VERSION} _ ${ARCH} .tar.gz$ tar -xvf gokart_ ${VERSION} _ ${ARCH} .tar.gzgokart -Binärer in Ihren Weg: $ mv ./gokart /usr/local/bin/ # clone the GoKart repo
$ git clone https://github.com/praetorian-inc/gokart.git
# navigate into the repo directory and build
$ cd gokart
$ go build
# Move the gokart binary into your path
$ mv ./gokart /usr/local/binErstellen Sie das Docker -Bild
docker build -t gokart .Ausführen des Containers mit einem lokalen Scan (das lokale Scan -Verzeichnis muss am Containerbild montiert werden)
docker run -v /path/to/scan-dir:/scan-dir gokart scan /scan-dirAusführen des Containers mit einem Remote -Scan (bei Angabe eines privaten Schlüssels für Auth, der auch am Container montiert werden muss)
docker run gokart scan -r https://github.com/praetorian-inc/gokart
# specifying a private key for private repository ssh authentication
docker run -v /path/to/key-dir/:/key-dir gokart scan -r [email protected]:praetorian-inc/gokart.git -k /key-dir/ssh_key # running without a directory specified defaults to '.'
gokart scan < flags >gokart scan < directory > < flags > gokart help Sie können die folgenden Schritte ausführen, um Gokart on Go Test Bench auszuführen, eine absichtlich gefährdete Go -Anwendung vom Kontrastsicherheitsteam.
# Clone sample vulnerable application
git clone https://github.com/Contrast-Security-OSS/go-test-bench.git
gokart scan go-test-bench/Die Ausgabe sollte einige identifizierte Schwachstellen zeigen, die jeweils eine gefährdete Funktion und Quelle der identifizierten Benutzereingaben identifizieren.
Um einige zusätzliche Gokart -Funktionen zu testen, können Sie mit den unten vorgeschlagenen CLI -Flags scannen.
# Use verbose flag to show full traces of these vulnerabilities
gokart scan go-test-bench/ -v
# Use globalsTainted flag to ignore whitelisted Sources
# may increase false positive results
gokart scan go-test-bench/ -v -g
# Use debug flag to display internal analysis information
# which is useful for development and debugging
gokart scan go-test-bench/ -d
# Output results in sarif format
gokart scan go-test-bench/ -s
# Output results to file
gokart scan go-test-bench/ -o gokart-go-test-bench.txt
# Output scarif results to file
gokart scan go-test-bench/ -o gokart-go-test-bench.txt -s
# Scan remote public repository
# Repository will be cloned locally, scanned and deleted afterwards
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -v
# Specify the remote branch to scan
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -b actions_fix
# Scan remote private repository via ssh
gokart scan -r [email protected]:Contrast-Security-OSS/go-test-bench.git
# Scan remote private repository and optionally specify a key for ssh authentication
gokart scan -r [email protected]:Contrast-Security-OSS/go-test-bench.git -k /home/gokart/.ssh/github_rsa_key
# Use remote scan and output flags together for seamless security reviews
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -o gokart-shiftleft-go-demo.txt -v
# Use remote scan, output and sarif flags for frictionless integration into CI/CD
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -o gokart-shiftleft-go-demo.txt -s Um die Erweiterbarkeit von Gokart zu testen, können Sie die Konfigurationsdatei, die Gokart verwendet, um eine neue anfällige Spüle in eine Analyse einzuführen. Es gibt einen Testssensanalysator, der in der enthaltenen Standardkonfigurationsdatei unter util/analyzers.yml definiert ist. Ändern Sie util/analyzers.yml um die Kommentare zum Testssensanalysator zu entfernen, und direkt Gokart direkt zur Verwendung der geänderten Konfigurationsdatei mit dem -i -Flag.
# Scan using modified analyzers.yml file and output full traces
gokart scan go-test-bench/ -v -i < path-to-gokart > /util/analyzers.ymlDie Ausgabe sollte nun zusätzliche Schwachstellen enthalten, einschließlich neuer Schwachstellen "Testsenke durch Benutzereingaben".
Sie können die enthaltenen Tests mit dem folgenden Befehl ausführen, der aus dem Gokart -Root -Verzeichnis aufgerufen wurde.
go test -v ./...