___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ |此存储库构建appthreat/sast-scan (以及quay.io/appthreat/sast-scan ),这是一个具有许多捆绑开放式静态分析安全测试(SAST)工具的容器映像。这就像Devsecops工程师的瑞士军刀。
| 编程语言 | 工具 |
|---|---|
| Ansible | Ansible薄荷 |
| 顶点 | PMD |
| AWS | cfn-lint,cfn_nag |
| bash | 壳牌 |
| bom | CDXGEN |
| CredScan | gitleaks |
| DepScan | depscan |
| 去 | Gosec,静态 |
| 爪哇 | CDXGEN,Gradle,Find-Sec-Bugs,PMD |
| JSP | PMD |
| JSON | JQ,Jsondiff,Jsonschema |
| 科特林 | detekt |
| Kubernetes | Kube得分 |
| nodejs | cdxgen,nodejsscan,eslint,纱线 |
| 木偶 | 木偶薄荷 |
| PLSQL | PMD |
| Python | 强盗,CDXGEN,PIPENV |
| 红宝石 | Cyclonedx-Ruby |
| 锈 | CDXGEN,货物审计 |
| Terraform | TFSEC |
| 视觉力(VF) | PMD |
| Apache速度(VM) | PMD |
| yaml | 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/ Sast-Scan生产的SARIF报告可以与其他兼容工具集成在一起。它也可以轻松导入到数据库中,例如用于可视化目的的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核心
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击
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" quay.io/appthreat/sast-scan scan
不要在$ PWD之前忘记斜杠(/)!
扫描多个项目
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语言的项目,在调用DEV和CI工作流程中的SASTSCAN之前进行编译很重要。
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 ,该报告将是源代码root目录下的目录。
一些报告将转换为称为SARIF的标准。此类报告将以扩展名.sarif结束。打开并查看SARIF文件需要一个查看器,例如:
示例报告:
如图所示,在线查看器可用于手动上传.sarif文件。

可以集成Azure Devops Sarif插件,以显示与构建运行集成的分析,如图所示。


Gitlab Sast使用众多单一目的分析仪和GO基转换器来生成自定义JSON格式。该模型具有增加构建时间的缺点,因为多个容器图像应下载,因此不适合CI环境,例如Azure Pipelines,CodeBuild和Google CloudBuild。再加上Gitlab使用的许可证并不是开放源,即使分析仪仅包装现有的OSS工具!
Mir Swamp是一项免费的在线服务,用于运行多种语言Simillar到Sast-Scan的OSS和商业静态分析。有一个免费的沼泽产品,但设置有点麻烦。他们使用带有许多基于Perl的转换器的XML格式。相比之下,萨里夫(Sarif)是基于JSON的,并且为集成和UI目的而更容易使用。通过采用Python,Sast-Scan可以轻松地进行自定义。
AppThreat由Shiftleft资助和支持。有关一般讨论和建议,请随时使用GitHub问题或Shiftleft讨论论坛