Gokart adalah alat analisis statis untuk GO yang menemukan kerentanan menggunakan bentuk kode sumber SSA (penugasan statis tunggal). Ini mampu melacak sumber variabel dan argumen fungsi untuk menentukan apakah sumber input aman, yang mengurangi jumlah positif palsu dibandingkan dengan pemindai keamanan GO lainnya. Misalnya, kueri SQL yang digabungkan dengan variabel mungkin secara tradisional ditandai sebagai injeksi SQL; Namun, Gokart dapat mengetahui apakah variabel tersebut sebenarnya adalah setara konstan atau konstan, dalam hal ini tidak ada kerentanan.
Gokart juga membantu memberi daya Chariot , platform keamanan Praetorian yang membantu Anda menemukan, mengelola, dan memperbaiki kerentanan dalam kode sumber dan lingkungan cloud Anda. Chariot membuatnya mudah untuk menjalankan pemindaian Gokart yang otomatis dan terus menerus pada kode sumber Anda. Jika Anda ingin mencoba Gokart, Anda dapat menyiapkan akun Chariot gratis dalam hitungan menit dengan mengklik di sini.
Analisis statis adalah teknik yang kuat untuk menemukan kerentanan dalam kode sumber. Namun, pendekatan tersebut menderita karena berisik - yaitu, banyak alat analisis statis menemukan beberapa "kerentanan" yang sebenarnya tidak nyata. Ini telah menyebabkan gesekan pengembang karena pengguna bosan dengan alat "menangis serigala" terlalu banyak.
Motivasi untuk Gokart adalah untuk mengatasi hal ini: Bisakah kita membuat pemindai dengan tingkat positif palsu yang jauh lebih rendah daripada alat yang ada? Berdasarkan eksperimen kami, jawabannya adalah ya. Dengan memanfaatkan penelusuran sumber-ke-tautan dan SSA, Gokart mampu melacak noda variabel antara penugasan variabel, secara signifikan meningkatkan keakuratan temuan. Fokus kami adalah pada kegunaan: secara pragmatis, itu berarti kami telah mengoptimalkan pendekatan kami untuk mengurangi alarm palsu.
Untuk informasi lebih lanjut, silakan baca posting blog kami.
Anda dapat menginstal Gokart secara lokal dengan menggunakan salah satu opsi yang tercantum di bawah ini.
go install $ go install github.com/praetorian-inc/gokart@latestUnduh biner untuk OS Anda dari halaman rilis.
(Opsional) Unduh file checksums.txt untuk memverifikasi integritas arsip
# 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 ke jalan Anda: $ 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/binBangun gambar Docker
docker build -t gokart .Menjalankan wadah dengan pemindaian lokal (direktori pemindaian lokal perlu dipasang ke gambar wadah)
docker run -v /path/to/scan-dir:/scan-dir gokart scan /scan-dirMenjalankan wadah dengan pemindaian jarak jauh (saat menentukan kunci pribadi untuk auth, yang juga perlu dipasang ke wadah)
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 Anda dapat mengikuti langkah -langkah di bawah ini untuk menjalankan Gokart on Go Test Bench, aplikasi GO yang sengaja rentan dari tim keamanan kontras.
# Clone sample vulnerable application
git clone https://github.com/Contrast-Security-OSS/go-test-bench.git
gokart scan go-test-bench/Output harus menunjukkan beberapa kerentanan yang diidentifikasi, masing -masing dengan fungsi yang rentan dan sumber input pengguna yang diidentifikasi.
Untuk menguji beberapa fitur Gokart tambahan, Anda dapat memindai dengan bendera CLI yang disarankan di bawah ini.
# 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 Untuk menguji ekstensibilitas Gokart, Anda dapat memodifikasi file konfigurasi yang digunakan Gokart untuk memperkenalkan wastafel rentan baru ke dalam analisis. Ada penganalisa wastafel uji yang ditentukan dalam file konfigurasi default yang disertakan di util/analyzers.yml . Ubah util/analyzers.yml untuk menghapus komentar pada penganalisa test wastafel dan kemudian mengarahkan Gokart untuk menggunakan file konfigurasi yang dimodifikasi dengan bendera -i .
# Scan using modified analyzers.yml file and output full traces
gokart scan go-test-bench/ -v -i < path-to-gokart > /util/analyzers.ymlOutput sekarang harus mengandung kerentanan tambahan, termasuk kerentanan "test wastafel yang dapat dijangkau oleh input pengguna" baru.
Anda dapat menjalankan tes yang disertakan dengan perintah berikut, dipanggil dari direktori Root Gokart.
go test -v ./...