用一套扫描替换 Semgrep、Trivy 和 Gitleaks 脚本

简介: 合并请求绿了,发版却被密钥或依赖漏洞拦下——多半是流水线里 Semgrep、Trivy、Gitleaks 各跑各的:三份日志、三种退出码、没有统一 Finding,误报也没法按同一指纹抑制。

合并请求绿了,发版却被密钥或依赖漏洞拦下——多半是流水线里 Semgrep、Trivy、Gitleaks 各跑各的:三份日志、三种退出码、没有统一 Finding,误报也没法按同一指纹抑制。

结论: 把代码安全(SAST,静态应用安全测试)、密钥扫描、依赖/镜像漏洞(SCA,软件成分分析)收进同一检查任务,归一成同一套 Finding,再由策略给出 PASSED / FAILED / SKIPPED。社区版 GPL-3.0 可自由使用、修改和分发(以仓库 LICENSE 为准)。这套路径可替代「流水线里一串独立扫描脚本」;不能替代全站 DAST、主机入侵检测或资产盘点平台。

采购上「商业 SAST / GitLab Ultimate / Snyk 怎么选」见文末参考:选型对照。下面讲替换拼凑脚本 + Semgrep 迁出。

1. 你现在卡在哪

现象 常见原因
PR 只拦了 SAST,主干才扫镜像 三条 Job 分期接入,没有统一门禁策略
同一问题在 Semgrep 日志和 Trivy 报告里各出现一次 没有跨引擎指纹与处置入口
CI 退出码「1」分不清是超门禁还是引擎挂了 脚本把所有非零都当失败
换规则包要改三处 YAML 规则版本没进同一任务模型
Finding 全空却 PASSED stub 引擎或漏洞库空(见翻车表)

最短路径:装引擎 → doctor 非 stub → 小仓 sast+secret → 控制台能看到 Finding 与门禁 → 并行一周再删独立 Job。

2. 能力怎么对应(术语一次说清)

能力 白话 默认引擎 典型目标
sast 静态看代码里的危险模式(注入、XSS、不安全反序列化等) OpenGrep 源码 / Git 仓库
secret 找硬编码 AK/SK、Token、私钥、连接串 Gitleaks 源码 / Git(可加深历史)
sca 看依赖、制品、镜像里的已知 CVE 与许可证相关问题 Trivy 目录依赖、制品、镜像

质量类(异味、复杂度等)可另开,默认不计入安全门禁;具体引擎以控制台/手册为准,不要把 SonarQube Scanner 当成默认安全内核。

目标类型主路径:上传包、Git 仓库、制品 URL、容器镜像;CLI 还可扫本机目录。控制台不以扫服务器任意路径为主。

3. 从三条脚本到一个门禁

3.1 替换前(示意)

# 问题:三份日志、三种退出码语义、结果无法统一治理
semgrep:
  script: [semgrep ci --config auto]
trivy-fs:
  script: [trivy fs --exit-code 1 .]
gitleaks:
  script: [gitleaks detect --source . --exit-code 1]

3.2 替换后:同一 Job

命令形态以当前发行包 angus-security --help 为准;下面是可复制示意:

export ANGUS_SECURITY_URL="https://security.example.com"   # 以控制台接入为准
export ANGUS_SECURITY_TOKEN="***"                          # 只放 CI Secret,勿写入仓库

# 本机/CI 工作区(DIRECTORY);或改 GIT_REPO / ARTIFACT / IMAGE
angus-security scan run \
  --target-type DIRECTORY \
  --path . \
  --capabilities sast,secret,sca \
  --fail-on high

退出码(以当前 CLI 为准;与产品文档约定一致时):

码 含义 CI 怎么处理
0 通过门禁 继续
1 扫描成功,但 Finding 超过策略 阻断合并/发布,去修或抑制
2 执行错误(引擎/网络等) 告警平台,勿当业务漏洞
3 配置或鉴权错误 修 Token / 参数,勿当业务漏洞

门禁还有 SKIPPED(例如策略未覆盖该能力)——跳过 ≠ 通过。

3.3 GitLab 最小一步(平台细节内链)

# .gitlab-ci.yml(示意)
security-scan:
  stage: security
  script:
    - angus-security tools doctor || true
    - angus-security scan run --target-type GIT_REPO
        --repo "$CI_REPOSITORY_URL"
        --ref "$CI_COMMIT_SHA"
        --capabilities sast,secret
        --fail-on high
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"

分层建议:PR 用 sast+secret + 较高阈值;夜间/发版再加 sca(制品或镜像)。GitHub Actions / Jenkins 差异与完整分层见文末参考:CI 集成清单。

4. 从 Semgrep 迁出:规则与门禁对照

OpenGrep 面向与 Semgrep 同类的规则匹配场景;迁出按「规则包 → 任务能力 → 门禁」三步,而不是逐条改写全部规则。

Semgrep 侧习惯 迁到统一任务时怎么做
semgrep ci --config auto / 自建 ruleset 任务勾选 sast;规则包版本绑在项目或任务上(以控制台为准)
PR 只扫变更文件 用较浅扫描级别(如 QUICK);完整库放夜间
--severity-threshold / 自写 exit 改用平台 --fail-on / 策略阈值,统一 PASSED/FAILED
SARIF 上传 GitHub 任务完成后从报告或 Finding 导出 SARIF(见文末参考:报告怎么出)
密钥另跑 Gitleaks Job 同一任务加 secret,不要再挂第二条脚本

4.1 并行迁出清单(建议一周)

  1. 新 Job 与旧 Semgrep Job 并行,先不删旧 stage。
  2. 同一小仓各跑一次:对比高危/阻断级数量级是否同量级(不要求条数逐条相等)。
  3. 打开 secret,确认密钥类不再依赖独立 Gitleaks Job。
  4. 抽 3~5 条高危:确认控制台有指纹,可走抑制(TTL 见存量抑制文)。
  5. 确认退出码 1/2/3 在 CI 通知里已分开(别再「非零=漏洞」)。
  6. 再删 semgrep / trivy-* / gitleaks 独立 stage;发版门禁加上 sca 前先做金丝雀镜像或制品。

规则细节与语言覆盖以当前规则包为准,不要宣称「覆盖所有语言/框架」。若依赖仅存在于 Semgrep 生态的第三方规则包,先核验 OpenGrep 规则包是否覆盖,再迁。

5. 控制台怎么确认「收成一套了」

纯文字路径(无截图):

  1. 打开对应检查任务:状态已完成;能力列同时含你勾选的 sast/secret/sca。
  2. Finding 列表能按引擎/能力筛选,而不是去三份外部日志里翻。
  3. 任务摘要上的门禁结果为 PASSED/FAILED/SKIPPED 之一,且与 CI 退出码语义一致(1=超门禁,不是 2/3)。
  4. 需要给领导/审计时,从报告出快照,不要截 Finding 首页——见文末参考:报告怎么出。

6. 翻车与边界

现象 常见原因 处理
Finding 全空且门禁 PASSED stub 引擎或库空 doctor 确认 OpenGrep/Gitleaks/Trivy 非 stub;SCA 假绿查漏洞库(见文末参考:内网漏洞库 / doctor)
仍出现三条 Job 只加了新 Job、旧 Job 未删 并行验收后删独立 stage
退出码 2 被当成漏洞 引擎未装 / Token 失效 区分门禁失败与执行失败
密钥刷屏 测试夹具、文档示例触发 抑制见文末参考:Finding 抑制
以为入库扫过就等于治理完成 把 Repo 轻量门禁当成 Security Repo 执法、Security 做深度 Finding——见文末参考:Repo 联动

明确不做: 全站 DAST、RASP/主机入侵检测、Qualys 类资产盘点、扫描即过等保、AI 自动开修复 PR。

FAQ

这能完全替代 Semgrep OSS 吗?

在「CI 里跑规则匹配 + 统一门禁」主路径上,可以替代多脚本拼凑。第三方规则包缺口先核验再迁。

社区版够不够跑通?

社区版 GPL-3.0 可自由使用;install-engines + 第一次扫描即可验证替代路径。席位、配额、商业能力以控制台/当前文档为准,本文不列报价。

和「只把 Sonar 当安全扫描」有什么差别?

质量分析与安全模式匹配不是一回事。安全主路径是 OpenGrep / Gitleaks / Trivy;质量门禁另开,默认不计入安全门禁结论。

多脚本合成后,旧 SARIF 还要吗?

治理以平台 Finding 为准;需要给 IDE/工单时再导出 SARIF。见文末参考:报告怎么出。

和选型文什么关系?

本文回答「三条脚本怎么收成一门禁」。云端 SCA / 商业 SAST / GitLab 套件怎么挑见文末参考:选型对照。

小结

  • 三条独立脚本 → 一个任务、一套 Finding、一门禁。
  • 先 doctor,再 sast+secret,并行一周再删旧 Job;发版再加 sca。
  • 退出码要分清「超门禁」和「没跑起来」。
  • 不替代 DAST/主机安全;Repo 轻量门禁 ≠ Security 深度治理。

参考文章

相关文章
|
5天前
|
云安全 人工智能 运维
当攻击全面Agent化,你的安全防御能否跟上AI Speed?
多起客户侧AK泄露事件应急的真实观察
1241 4
|
28天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
9782 32
|
8天前
|
存储 人工智能 安全
千问办公官网入口网页版登录:qwenwork.cn 注册送2000积分、登录送100积分
阿里云千问办公(QwenWork)是AI智能工作平台,支持一句话生成PPT、表格、网页、视频及数据分析。个人免费版送2000积分+每日登录赠100分,含1GB存储、5个发布页;企业版198元/席/月起。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
|
3天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
|
14天前
|
存储 人工智能 并行计算
大模型本地部署终端选型方法论:以 Qwen3.8-27B 为例的四档分层完整流程
本文提出一套大模型本地部署终端选型方法论:定约束、定档位、定框架、定参数四步决策法,配合入门、主力、质量、无损四档分层模型。以 Qwen3.8-27B 实测数据为例,逐环节解读显存、带宽、存储、散热、系统、预算等要素,给出面向不同预算的优选方案、决策自查清单与市场观察框架。文末前瞻 AI 笔记本的 CPU+GPU 与统一内存两条路线,论证四步决策法在新品类上的延续性。
|
5天前
|
Web App开发 人工智能 JavaScript
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
REA(Reverse Engineer Anything)是近期爆火的开源AI逆向工具,4月发布,1个月内斩获15万+ Star。它让AI Agent无需源码即可分析二进制、APK、JS/Electron、HAR包等17类目标,自动反编译、生成可运行代码,并强制返回带证据与局限的结论。全本地执行,MIT协议,支持Hopper/Ghidra/IDA等引擎,一行命令即可上手。
621 1
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
|
12天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
927 1
|
9天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型全解析:核心原理拆解,性能实战测评与落地部署教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为System One Model(系统一模型),对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
592 0