
如何把 TruffleHog 的 --sarif 结果上传到 GitHub Code Scanning【免费下载链接】trufflehogFind, verify, and analyze leaked credentials项目地址: https://gitcode.com/GitHub_Trending/tr/trufflehogTruffleHog 扫描完仓库后默认把结果打印到终端或输出成 JSON。如果你想让扫描结果直接出现在 GitHub 的 Code Scanning 中——在 PR diff 上内联显示、在仓库 Security 标签页跟踪、并跨次扫描把同一发现标记为 new/fixed 而不是每次重复上报——就需要用--sarif参数把结果导出为 SARIF 文件再交给github/codeql-action/upload-sarif上传。本文按 README.md 给出的官方流程走一遍这条集成路径。--sarif 参数做什么在trufflehog --help的输出中该参数的说明是--[no-]sarif Output in SARIF format for upload to GitHub code scanning (e.g. via github/codeql-action/upload-sarif).同页 man 文档 docs/man/trufflehog.1 的描述一致。也就是说--sarif的存在目的就是把输出格式切换为可被 GitHub code scanning 直接消费的 SARIF而不是普通的逐行流式输出。两点需要知道SARIF 要求把整次扫描的所有结果写成单个 JSON 文档因此与其他输出格式不同SARIF 结果会在内存中缓存整次扫描、扫描结束后一次性写出。普通规模的扫描没有问题结果数量非常大的扫描会占用成比例的更多内存README 明确给出了这一限制。输出的 SARIF 遵循 SARIF 2.1.0。根据 pkg/output/sarif.go 的实现已验证verified的结果以error级别上报未验证的以warning级别上报每条结果带有partialFingerprints这是 GitHub code scanning 跨次扫描识别同一发现、从而标记 new/fixed 的依据。行号只在来源元数据带行号时git、filesystem、S3 等写入 regionPostman、Elasticsearch 这类没有文件/行号概念的来源会用sourcetype://sourcename形式的 URI 兜底。准备工作安装 trufflehog。README 给出了多种安装方式任选其一# MacOS brew install trufflehog或用安装脚本会把二进制装到/usr/local/bincurl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin也可以从 releases 页面下载二进制、编译源码或用 Docker 运行本文的上传流程基于直接调用trufflehogCLI所以前几种方式都可以。在 GitHub 仓库中启用 Actions本文流程通过一个 workflow 触发。仓库本身是上传目标扫描对象可以是工作目录、git 仓库或远端仓库取决于你选择的扫描命令。配置 workflow扫描并上传 SARIFREADME 的 TruffleHog Github Action 小节给出了官方示例README.md 第 732 行起不通过trufflesecurity/trufflehogAction而是直接运行 TruffleHog 并加--sarif把标准输出重定向到results.sarif再用github/codeql-action/upload-sarifv3上传。放进你的.github/workflows下结构如下on: push: branches: - main pull_request: jobs: secret-scanning: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkoutv4 with: fetch-depth: 0 - name: TruffleHog run: trufflehog filesystem . --sarif --no-verification results.sarif - name: Upload SARIF results uses: github/codeql-action/upload-sarifv3 with: sarif_file: results.sarif说明第二个 step 的trufflehog filesystem . --sarif --no-verification results.sarif原样来自 README 示例扫描当前工作目录的文件系统。 results.sarif是必要的一步——SARIF 文档从 stdout 写出必须落到文件才能交给 upload-sarif。--no-verification表示不做凭证有效性验证不调用各服务的 API 确认密钥是否有效。如果你的扫描环境配置了凭证、希望结果带 verified/unverified 状态可以去掉该参数--results控制输出哪些类型的结果取值有 verified、unverified、unknown、filtered_unverified默认是verified,unverified,unknown。扫描对象按你的需求替换比如扫描远端 git 仓库就用trufflehog git repo-url --sarif results.sarif各子命令的完整参数可用trufflehog command --help查看man 页在 docs/man/trufflehog.1。如果 runner 上通过 Docker 跑 trufflehog参考 README 的 Docker 安装一节把-v挂载当前目录后在容器内执行同样的命令行即可。上传后如何确认结果生效README 对这条路径的说明即验证标准上传后发现项会出现在两处——PR diff 内联pull request 的代码差异上会显示扫描标注仓库 Security 标签页发现项进入 code scanning 告警列表并且由于 SARIF 中的指纹同一发现跨次扫描会被跟踪为 new/fixed而不是每次运行都当作新告警上报。判断流程是否跑通workflow 中 Upload SARIF results 这一步执行成功无报错然后在上述两个位置查看结果。另外扫描 step 本身的退出码含义README Exit Codes 一节0 表示无错误且无结果1 表示扫描过程中出错183 仅在加了--fail参数且发现结果时返回。如果你希望发现即失败的 CI 行为可以像 README 第 13 节的 CI 示例那样在命令上加--fail。限制与可选分支内存占用如上所述SARIF 结果整次扫描缓存在内存、结束时一次性写出。结果量极大的扫描会成比例增加内存这是 README 明确标注的边界。与官方 GitHub Action 的关系README 同时提供了trufflesecurity/trufflehogmain这个 ActionGeneral Usage 小节它默认按--resultsverified,unknown扫描并以 GitHub Actions 格式输出。README 明确写道To upload results to GitHub code scanning instead, run TruffleHog directly with--sarif——即走 code scanning 路线时官方推荐的就是本文这条直接调用 CLI 的路径而不是官方 Action。两者目标不同不要混在同一个 step 里。输出格式别选错--json、--github-actions也是可选输出格式见 README.md 的 help 输出片段但只有--sarif是 README 指明用于 GitHub code scanning 上传的格式。上传后如果发现项没有内联到 diff注意检查扫描命令的.是否指向 checkout 后的仓库目录以及来源是否带行号元数据无行号的来源 region 会被省略见 pkg/output/sarif.go。完成以上配置后每次 push / PR 触发 workflow扫描结果就会以 SARIF 形式进入 Code Scanning后续维护重点就是关注 Security 标签页里状态变化为 fixed 的告警以及新增的 error 级verified发现。【免费下载链接】trufflehogFind, verify, and analyze leaked credentials项目地址: https://gitcode.com/GitHub_Trending/tr/trufflehog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考