___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | Этот репо сборка appthreat/sast-scan (и quay.io/appthreat/sast-scan ), изображение контейнера с несколькими комплексными инструментами статического анализа с открытым исходным кодом (SAST). Это как швейцарский армейский нож для инженеров DevSecops.
| Язык программирования | Инструменты |
|---|---|
| Ansible | Ansible-Lint |
| вершина | ПМД |
| AWS | CFN-Lint, CFN_NAG |
| избиение | ShellCheck |
| категория | cdxgen |
| credsscan | GitLeaks |
| Depscan | Dep-Scan |
| идти | Gosec, Staticcheck |
| Ява | Cdxgen, Gradle, Find-Sec-Bugs, PMD |
| JSP | ПМД |
| json | JQ, Jsondiff, Jsonschema |
| Котлин | Детект |
| Kubernetes | Kube-Score |
| Nodejs | cdxgen, nodejsscan, eslint, пряжа |
| кукольный | Кукол-линт |
| PLSQL | ПМД |
| питон | Bandit, Cdxgen, Pipenv |
| рубин | Cyclonedx-ruby |
| ржавчина | CDXGEN, CARGO-AUDIT |
| терраформ | Tfsec |
| Визуальная сила (VF) | ПМД |
| Apache Selocity (VM) | ПМД |
| Ямл | 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 Project
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
git-bash
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 Project
Для 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 javaScan Python Project (без какой -либо телеметрии)
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, как показано на рисунке.

Плагин Azure DevOps Sarif может быть интегрирован, чтобы показать анализ, интегрированный с запуска сборки, как показано.


Gitlab Sast использует многочисленные одноцелевые анализаторы и конвертеры на основе GO для производства пользовательского формата JSON. Эта модель имеет недостаток увеличения времени сборки, поскольку несколько контейнерных изображений должны быть загружены и, следовательно, не подходят для среды CI, таких как Azure Pipelines, Codebuild и Google CloudBuild. Кроме того, лицензия, используемая Gitlab, не является OpenSource, хотя анализаторы просто обертывают существующие инструменты OSS!
MIR Swamp-это бесплатный онлайн-сервис для управления OSS и коммерческим статическим анализом для ряда языков, выполненных SIMILLAR для SAST-Scan. Существует бесплатное предложение Swamp-in-a-box, но настройка немного громоздкой. Они используют формат XML, называемый шарфом с рядом конвертеров на основе Perl. SARIF, напротив, основан на JSON, и с ним гораздо проще работать для интеграции и пользовательского интерфейса. Приняв Python, Sast-Scan немного проста для работы для настройки.
Appthreat финансируется и поддерживается Shiftleft. Для общих дискуссий и предложений, пожалуйста, не стесняйтесь использовать либо дискуссионное форум GitHub, либо дискуссионное форум Shiftleft