___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | يقوم هذا Repo بإنشاء appthreat/sast-scan (و quay.io/appthreat/sast-scan ) ، وهي صورة حاوية مع عدد من أدوات اختبار أمان التحليل الثابت مفتوح المصدر (SAST). هذا يشبه سكين الجيش السويسري لمهندسي DevSecops.
| لغة البرمجة | أدوات |
|---|---|
| Ansible | ansible-lint |
| قمة | PMD |
| AWS | cfn-lint ، cfn_nag |
| سحق | shellcheck |
| بوم | CDXGEN |
| CredScan | gitleaks |
| depscan | DEP-SCAN |
| يذهب | GoSec ، staticcheck |
| جافا | Cdxgen ، Gradle ، Find-Sec-Bugs ، PMD |
| JSP | PMD |
| جيسون | JQ ، Jsondiff ، Jsonschema |
| كوتلين | Detekt |
| Kubernetes | كوبي درعة |
| Nodejs | cdxgen ، nodejsscan ، eslint ، الغزل |
| دمية | دمية لينت |
| PLSQL | PMD |
| بيثون | Bandit ، Cdxgen ، pipenv |
| روبي | Cyclonedx-Ruby |
| الصدأ | CDXGEN ، البضائع |
| terraform | TFSEC |
| القوة البصرية (VF) | PMD |
| سرعة أباتشي (VM) | PMD |
| يامل | Yamllint |
يتم تحويل بعض التقارير إلى معايير مفتوحة تسمى SARIF. يرجى الاطلاع على قسم Viewing reports لمختلف خيارات المشاهد لهذا الغرض.
يعد Sast-Scan مثاليًا للاستخدام مع CI وأيضًا كخطاف مسبق للتنمية المحلية.
الرجوع إلى المستند
يمكن استخدام هذه الأداة مع إجراءات github باستخدام هذا الإجراء. يمكن استخدام جميع اللغات المدعومة.
هذه الاختبارات ذاتية الريبو مع SAST-SCAN! تحقق من ملف سير عمل GitHub لهذا الريبو.
- 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 باش
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
لا تنسى المائلة (/) قبل $ 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 (بدون أي قياس عن بعد)
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 والتحليل الثابت التجاري لعدد من اللغات Simillar إلى Sast-Scan. هناك عرض مجاني في صندوق ، لكن الإعداد مرهق بعض الشيء. يستخدمون تنسيق XML يسمى Scarf مع عدد من المحولات القائمة على Perl. على النقيض من ذلك ، يعتمد Sarif على أساس JSON وهو أسهل بكثير في العمل من أجل التكامل وأغراض واجهة المستخدم. من خلال تبني Python ، من السهل العمل مع Sast-Scan للتخصيص.
يتم تمويل AppThreat ودعمه بواسطة shiftleft. للمناقشات والاقتراحات العامة ، لا تتردد في استخدام إما قضايا جيثب أو منتدى المناقشة shiftleft