___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | Repo ini membangun appthreat/sast-scan (dan quay.io/appthreat/sast-scan ), gambar kontainer dengan sejumlah alat pengujian keamanan analisis statis open-source (SAST) yang dibundel. Ini seperti pisau tentara Swiss untuk insinyur devsecops.
| Bahasa pemrograman | Peralatan |
|---|---|
| semu | ansible-lint |
| puncak | PMD |
| AWS | CFN-LINT, CFN_NAG |
| pesta | kerang |
| Bom | CDXGen |
| Credscan | Gitleaks |
| Depscan | DEP-SCAN |
| pergi | Gosec, StaticCheck |
| Jawa | CDXGen, Gradle, Find-sec-Bugs, PMD |
| jsp | PMD |
| json | JQ, JSONDIFF, JSONSCHEMA |
| Kotlin | Detekt |
| Kubernetes | Kube-score |
| NodeJS | CDXGen, NodeJsscan, Eslint, Benang |
| wayang | boneka-lint |
| plsql | PMD |
| Python | Bandit, CDXGen, Pipenv |
| rubi | Cyclonedx-Ruby |
| karat | CDXGen, Audit kargo |
| Terraform | tfsec |
| Visual Force (VF) | PMD |
| Apache Velocity (VM) | PMD |
| yaml | Yamllint |
Beberapa laporan dikonversi menjadi standar terbuka bernama Sarif. Silakan lihat bagian Viewing reports untuk berbagai opsi penampil untuk ini.
Sast-scan sangat ideal untuk digunakan dengan CI dan juga sebagai kait pra-komit untuk pengembangan lokal.
Lihat dokumen
Alat ini dapat digunakan dengan tindakan GitHub menggunakan tindakan ini. Semua bahasa yang didukung dapat digunakan.
Repo ini menguji diri dengan sast-scan! Periksa file alur kerja GitHub dari repo ini.
- name : Self sast-scan
uses : AppThreat/[email protected]
with :
output : reports
type : python,bash
- name : Upload scan reports
uses : actions/[email protected]
with :
name : sast-scan-reports
path : reports Gunakan pembangun khusus ini untuk menambahkan sast-scan sebagai langkah build.
Langkah lengkap direproduksi di bawah ini.
git clone https://github.com/CloudBuildr/google-custom-builders.git
cd google-custom-builders/sast-scan
gcloud builds submit --config cloudbuild.yaml . steps :
- name : " gcr.io/$PROJECT_ID/sast-scan "
args : ["--type", "python"] Lihat dokumen
Proyek sampel dengan konfigurasi dapat ditemukan di sini
sast :
stage : test
image :
name : appthreat/sast-scan
script :
- scan --src ${CI_PROJECT_DIR} --type nodejs --out_dir ${CI_PROJECT_DIR}/reports
artifacts :
paths :
- $CI_PROJECT_DIR/reports/ Laporan Sarif yang diproduksi oleh SAST-Scan dapat diintegrasikan dengan alat yang kompatibel lainnya. Ini juga dapat dengan mudah diimpor ke dalam database seperti BigQuery untuk tujuan visualisasi. Lihat dokumen integrasi untuk penjelasan terperinci tentang format Sarif.
Pindai proyek Python
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type pythonPada Windows, perintah berubah sedikit tergantung pada terminal.
cmd
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" quay.io/appthreat/sast-scan scan
PowerShell dan PowerShell Core
docker run --rm -e "WORKSPACE=$(pwd)" -e "GITHUB_TOKEN=$env:GITHUB_TOKEN" -v "$(pwd):/app:cached" quay.io/appthreat/sast-scan scan
WSL Bash
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "$PWD:/app:cached" quay.io/appthreat/sast-scan scan
Git-bash
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" quay.io/appthreat/sast-scan scan
Jangan lupa slash (/) sebelum $ PWD untuk git-bash!
Pindai beberapa proyek
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type credscan,nodejs,python,yaml --out_dir /app/reportsProyek Pindai Java
Untuk proyek berbasis bahasa Java dan JVM, penting untuk menyusun proyek sebelum memohon sast-scan dalam alur kerja Dev dan CI.
docker run --rm -e " WORKSPACE= ${PWD} " -v ~ /.m2:/.m2 -v < source path > :/app quay.io/appthreat/sast-scan scan --src /app --type java
# For gradle project
docker run --rm -e " WORKSPACE= ${PWD} " -v ~ /.gradle:/.gradle -v < source path > :/app quay.io/appthreat/sast-scan scan --src /app --type javaPindai proyek Python (tanpa telemetri)
docker run --rm -e " WORKSPACE= ${PWD} " -e " DISABLE_TELEMETRY=true " -v $PWD :/app quay.io/appthreat/sast-scan scan --src /app --type pythonDeteksi Proyek Otomatis
Jangan ragu untuk melewatkan --type untuk mengaktifkan deteksi otomatis. Atau lulus nilai-nilai yang dipisahkan koma jika proyek memiliki banyak jenis.
Bandit
docker run --rm -v < source path > :/app quay.io/appthreat/sast-scan bandit -r /app Laporan akan diproduksi di direktori yang ditentukan untuk --out_dir . Dalam contoh di atas, diatur ke reports yang akan menjadi direktori di bawah Direktori Root Kode Sumber.
Beberapa laporan akan dikonversi menjadi standar yang disebut Sarif. Laporan semacam itu akan berakhir dengan ekstensi .sarif . Untuk membuka dan melihat file sarif memerlukan penampil seperti:
Contoh Laporan:
Penampil online dapat digunakan untuk mengunggah file .sarif secara manual seperti yang ditunjukkan.

Plugin Azure DevOps Sarif dapat diintegrasikan untuk menunjukkan analisis yang terintegrasi dengan Build Run seperti yang ditunjukkan.


Gitlab Sast menggunakan banyak penganalisa tujuan tunggal dan konverter berbasis GO untuk menghasilkan format JSON khusus. Model ini memiliki kelemahan dari peningkatan waktu pembangunan karena beberapa gambar kontainer harus diunduh dan karenanya tidak cocok untuk lingkungan CI seperti pipa Azure, CodeBuild dan Google CloudBuild. Ditambah lisensi yang digunakan oleh GitLab bukan OpenSource meskipun analisis hanya membungkus alat OSS yang ada!
Mir Swamp adalah layanan online gratis untuk menjalankan analisis statis OSS dan komersial untuk sejumlah bahasa yang disimillar ke sast-scan. Ada penawaran rawa-in-a-box gratis tetapi pengaturannya agak rumit. Mereka menggunakan format XML yang disebut syal dengan sejumlah konverter berbasis perl. Sarif, sebaliknya, berbasis JSON dan jauh lebih mudah untuk dikerjakan untuk tujuan integrasi dan UI. Dengan mengadopsi Python, Sast-Scan agak mudah dikerjakan untuk kustomisasi.
Appthreat didanai dan didukung oleh ShiftLeft. Untuk diskusi dan saran umum, jangan ragu untuk menggunakan masalah Github atau Forum Diskusi ShiftLeft