SuperAPI AI 工具集

ci-security-gates

安全与审计

查看项目

更新于 10-15 10:39

技能介绍

用途

CI/CD 安全门禁用于在持续集成与持续部署流水线中自动加入安全扫描,在代码部署前拦截代码漏洞、泄露的密钥和危险依赖。资料指出,其背景是马来西亚法院案例中的发现:没有证据表明系统在上线前经过测试或漏洞扫描;在 PDPA 2024 下,发布带有已知漏洞且未经测试的代码属于刑事过失。

主要能力:三道门禁

门禁 捕获内容 工具
SAST 你自己代码中的 SQL 注入、XSS、不安全模式 CodeQL / Semgrep
密钥扫描 意外提交的 API 密钥、密码、令牌 Gitleaks
依赖审计 第三方包中的已知 CVE npm audit / pip audit

CodeQL 可捕获:SQL 注入模式、跨站脚本(XSS)、路径遍历、不安全随机数、硬编码凭据、原型污染、命令注入。支持语言:javascript-typescript、python、java、go、ruby、csharp、cpp。

Gitleaks 可捕获:AWS 访问密钥、Google Cloud 密钥、Stripe/Xendit/支付 API 密钥、数据库连接字符串、私钥(RSA、EC)、JWT 密钥、通用高熵字符串。

使用方式

GitHub Actions 实现

资料给出完整安全流水线示例:定义 security 与 deploy 两个 job,deploy 通过 needs: security 依赖安全任务,安全失败即阻止部署。安全 job 步骤包括:Checkout、初始化 CodeQL、执行 CodeQL 分析、运行 Gitleaks 密钥扫描。部署 job 步骤包括:Checkout、Setup Node、npm ci 安装依赖、运行测试、npm audit --audit-level=high、构建、部署。

关键原则:

  • 将 actions 固定到 commit SHA,防止通过标签变更发起的供应链攻击。
  • 安全 job 在部署之前运行,needs: security 阻止部署。
  • 使用 npm ci,从 lockfile 确定性安装。
  • 以 high 级别审计,阻断 high/critical CVE,报告 moderate。

SHA 固定:不要使用 @v4 这类可变标签,始终固定到 commit SHA。查找 SHA 的方法:进入 action 的 GitHub releases 页面,找到版本标签(如 v4.2.2),点击 commit hash,复制完整的 40 位 SHA。

Gitleaks 自定义规则

可通过 .gitleaks.toml 扩展默认规则,示例中定义了 Clerk Secret Key 与 Xendit Secret Key 的正则规则,并通过 allowlist 排除 .env.example 和测试文件路径。

依赖审计

Node.js:CI 中使用 npm audit --audit-level=high 在 high/critical 时失败;本地使用 npm audit 查看全部;使用 npm audit fix 修复可安全修复项。

Python:pip audit --fix --dry-run、pip audit --desc。

package.json 脚本示例:security:audit、security:test、verify。

GitLab CI 等价实现

定义 security、test、deploy 三个阶段。sast 阶段使用 returntocorp/semgrep 镜像执行 semgrep --config=auto --error .,allow_failure: false;secret-detection 阶段使用 zricethezav/gitleaks 镜像执行 gitleaks detect --source . --verbose,allow_failure: false;test 阶段 needs: [sast, secret-detection],执行 npm ci、测试和 npm audit --audit-level=high;deploy 阶段 needs: [test],仅在 main 分支运行。

门禁失败时的处理

门禁 失败情况 处理动作
CodeQL 发现 SQL 注入模式 修复查询,使用参数化绑定
Gitleaks 提交中检测到密钥 移除密钥、轮换密钥、加入 .gitignore
npm audit 依赖中存在 high/critical CVE 更新包或寻找替代方案
测试 测试失败 部署前修复代码

适用场景

适用于任何使用 CI/CD 流水线的项目,尤其是需要在每次推送时自动执行安全扫描、并在发现漏洞或密钥时阻止部署的团队。资料提到其满足 PDPA 2024 的合规要求:尽职调查证据(自动化扫描证明上线前已检查)、持续监控(每次推送都运行)、相称的安全措施(SAST + 密钥扫描 + 依赖审计覆盖主要攻击向量)、审计轨迹(GitHub Actions 日志提供每次安全检查的时间戳证据)。

限制

资料未提供该方案的具体收费、价格、平台限制或性能数据。工具本身(CodeQL、Gitleaks、Semgrep、npm audit、pip audit)的许可与使用限制需参考各自官方文档,资料中暂未提供。