2026年7月14日,GitHub在PR上推出AI安全检测,但明确仅限GitHub Code Security(即GitHub Advanced Security)付费客户。新支持的生态系统包括Shell/Bash、Dockerfiles、Terraform、PHP——恰恰是CodeQL免费版不分析的类型。对于大量使用部署脚本、Dockerfile和Terraform的基础设施仓库,免费扫描等于零覆盖。
开发者Booyaka101推出了免费Action「ghas-free-pack」,利用成熟的开源扫描工具填补这一空缺,并将结果统一成SARIF格式,直接上传到Code Scanning并生成PR评论。
工具工作原理
在workflow中引用:Booyaka101/ghas-free-pack@v1,并授予security-events: write和pull-requests: write权限。它会自动对.sh/.bash运行ShellCheck,对Dockerfile*运行Hadolint,对.tf运行tfsec,对.php运行PHPStan(需手动启用)。所有发现被合并为一个SARIF 2.1.0文档,上传后与CodeQL的显示效果完全一致,同样出现在Security标签页中。
实际捕获示例(来自测试夹具)
- SC2163:export $INPUT导出的是变量名而非值,典型的shell静默bug
- DL3002:最后的USER是root,容器以特权运行
- aws-ec2-no-public-ingress-sgr:CRITICAL级别安全组允许0.0.0.0/0入站
- PHPStan level 5:参数类型错误和未定义变量
使用限制
这是确定性基于规则的扫描器,不复制GitHub的LLM分析。PHPStan需手动启用(enable-phpstan: true),避免默认噪音。由于是Docker action,仅支持Linux runner,首次运行需拉取镜像。SARIF上传需要security-events: write,PR评论需要pull-requests: write,缺失时仍会写job summary但无法发布。
验证可靠性
仓库附带本地测试脚本test/run-local.ps1,构建镜像后对测试夹具运行,断言17项验收标准,包括合并后SARIF通过ajv验证(需使用json.schemastore.org提供的schema)、PR评论包含预期规则、重复运行会PATCH已有评论而非重复发布。MIT许可,可放心使用。
免费工具为那些被挡在付费墙之外的基础设施仓库提供了社区驱动的安全扫描替代方案。
GitHub
#开发者 #工具 #GitHub #CodeScanning #GHAS #ShellCheck #Hadolint #tfsec #PHPStan #SARIF #DevOps
@DevToolboxHub