___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | repo นี้สร้าง appthreat/sast-scan (และ quay.io/appthreat/sast-scan ) ภาพคอนเทนเนอร์ที่มีเครื่องมือการทดสอบความปลอดภัยการวิเคราะห์แบบคงที่โอเพ่นซอร์ส (SAST) จำนวนมาก นี่เป็นเหมือนมีดกองทัพสวิสสำหรับวิศวกร DevSecops
| ภาษาการเขียนโปรแกรม | เครื่องมือ |
|---|---|
| ตอบได้ | ANSIBLE-LINT |
| ปลายยอด | PMD |
| aws | cfn-lint, cfn_nag |
| ทุบตี | หอยเชลล์ |
| ระเบิด | cdxgen |
| ความเชื่อมั่น | Gitleaks |
| นักบวช | สแกน |
| ไป | Gosec, StaticCheck |
| ชวา | Cdxgen, Gradle, Find-Sec-Bugs, PMD |
| JSP | PMD |
| JSON | JQ, JSONDIFF, JSONSCHEMA |
| Kotlin | ทำให้เสียชีวิต |
| Kubernetes | คะแนน Kube |
| nodejs | cdxgen, nodejsscan, eslint, เส้นด้าย |
| หุ่นเชิด | หุ่นเชิด |
| กรุณา | PMD |
| งูหลาม | โจร, cdxgen, pipenv |
| ทับทิม | Cyclonedx-ruby |
| สนิม | cdxgen, การตรวจสอบสินค้า |
| รูปปั้น | TFSEC |
| พลังภาพ (VF) | PMD |
| Apache Velocity (VM) | PMD |
| ยม | Yamllint |
รายงานบางฉบับได้รับการแปลงเป็นมาตรฐานที่เรียกว่า Sarif โปรดดูส่วนเกี่ยวกับ Viewing reports สำหรับตัวเลือกผู้ชมที่หลากหลายสำหรับสิ่งนี้
Sast-Scan เหมาะอย่างยิ่งสำหรับการใช้งานกับ CI และเป็นเบ็ดล่วงหน้าสำหรับการพัฒนาในท้องถิ่น
อ้างถึงเอกสาร
เครื่องมือนี้สามารถใช้กับการกระทำของ GitHub โดยใช้การกระทำนี้ สามารถใช้ภาษาที่รองรับทั้งหมดได้
การทดสอบตัวเอง repo ตัวเองด้วย sast-scan! ตรวจสอบไฟล์เวิร์กโฟลว์ GitHub ของ repo นี้
- 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 ใช้ตัวสร้างที่กำหนดเองนี้เพื่อเพิ่ม Sast-Scan เป็นขั้นตอนการสร้าง
ขั้นตอนเต็มจะทำซ้ำด้านล่าง
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"] อ้างถึงเอกสาร
สามารถดูโครงการตัวอย่างที่มีการกำหนดค่าได้ที่นี่
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/ รายงาน Sarif ที่ผลิตโดย Sast-Scan สามารถรวมเข้ากับเครื่องมือที่เข้ากันได้อื่น ๆ นอกจากนี้ยังสามารถนำเข้าสู่ฐานข้อมูลได้อย่างง่ายดายเช่น BigQuery เพื่อจุดประสงค์ในการสร้างภาพ อ้างถึงเอกสารการรวมสำหรับคำอธิบายโดยละเอียดเกี่ยวกับรูปแบบ SARIF
โครงการสแกน Python
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type pythonบน Windows คำสั่งจะเปลี่ยนไปเล็กน้อยขึ้นอยู่กับเทอร์มินัล
CMD
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" quay.io/appthreat/sast-scan scan
PowerShell และ 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
เครื่องปั่นป่วน
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" quay.io/appthreat/sast-scan scan
อย่าลืม Slash (/) ก่อน $ PWD สำหรับ Git-Bash!
สแกนหลายโครงการ
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/reportsสแกนโครงการ Java
สำหรับโครงการที่ใช้ภาษา Java และ JVM เป็นสิ่งสำคัญที่จะต้องรวบรวมโครงการก่อนที่จะเรียก Sast-Scan ในเวิร์กโฟลว์ DEV และ 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 javaโครงการสแกน Python (ไม่มี telemetry ใด ๆ )
docker run --rm -e " WORKSPACE= ${PWD} " -e " DISABLE_TELEMETRY=true " -v $PWD :/app quay.io/appthreat/sast-scan scan --src /app --type pythonการตรวจจับโครงการอัตโนมัติ
อย่าลังเลที่จะข้าม --type เพื่อเปิดใช้งานการตรวจจับอัตโนมัติ หรือผ่านค่าที่คั่นด้วยเครื่องหมายจุลภาคหากโครงการมีหลายประเภท
โจร
docker run --rm -v < source path > :/app quay.io/appthreat/sast-scan bandit -r /app รายงานจะถูกสร้างขึ้นในไดเรกทอรีที่ระบุไว้สำหรับ --out_dir ในตัวอย่างข้างต้นมันถูกตั้งค่าเป็น reports ซึ่งจะเป็นไดเรกทอรีภายใต้ไดเรกทอรีรากซอร์สโค้ด
รายงานบางฉบับจะถูกแปลงเป็นมาตรฐานที่เรียกว่า Sarif รายงานดังกล่าวจะจบลงด้วยการขยาย .sarif ในการเปิดและดูไฟล์ sarif ต้องมีผู้ชมเช่น:
ตัวอย่างรายงาน:
ผู้ดูออนไลน์สามารถใช้เพื่ออัปโหลดไฟล์. sarif ด้วยตนเองตามที่แสดง

ปลั๊กอิน Azure DevOps Sarif สามารถรวมเข้าด้วยกันเพื่อแสดงการวิเคราะห์ที่รวมเข้ากับการสร้างการทำงานดังที่แสดง


Gitlab Sast ใช้เครื่องวิเคราะห์วัตถุประสงค์เดียวจำนวนมากและตัวแปลงจาก GO เพื่อสร้างรูปแบบ JSON ที่กำหนดเอง โมเดลนี้มีข้อเสียของการเพิ่มเวลาในการสร้างเนื่องจากภาพคอนเทนเนอร์หลายภาพควรดาวน์โหลดและดังนั้นจึงไม่เหมาะสำหรับสภาพแวดล้อม CI เช่นท่อ Azure, Codebuild และ Google CloudBuild บวกกับใบอนุญาตที่ใช้โดย Gitlab ไม่ได้เป็น opensource แม้ว่าตัววิเคราะห์จะห่อเครื่องมือ OSS ที่มีอยู่!
Mir Swamp เป็นบริการออนไลน์ฟรีสำหรับการใช้งานทั้ง OSS และการวิเคราะห์แบบคงที่เชิงพาณิชย์สำหรับภาษาหลายภาษาไปยัง Sast-Scan มีข้อเสนอฟรีหนองในกล่อง แต่การตั้งค่าค่อนข้างยุ่งยาก พวกเขาใช้รูปแบบ XML ที่เรียกว่า Scarf กับตัวแปลงที่ใช้ Perl จำนวนหนึ่ง ในทางตรงกันข้าม Sarif นั้นใช้ JSON และง่ายต่อการทำงานกับวัตถุประสงค์ในการรวมและ UI ด้วยการใช้ Python ทำให้ Sast-Scan เป็นเรื่องง่ายที่จะทำงานกับการปรับแต่ง
AppTherat ได้รับการสนับสนุนและสนับสนุนโดย Shiftleft สำหรับการอภิปรายและข้อเสนอแนะทั่วไปโปรดอย่าลังเลที่จะใช้ปัญหา GitHub หรือ Forum Shiftleft Discussion Forum