返回

文章详情

每个 Lionshead PR 中的安全检查

Hacker News2026年7月13日 20:07

2026-07-12 每个 Lionshead PR 中的安全检查 在企业规模上,数据泄露意味着糟糕的一个季度。你有法律团队来协调披露。每年进行演练的灾难恢复计划。公关团队来控制叙述。安全团队来隔离、调查和评估事件。一个足够大的银行账户来承担监管罚款、集体诉讼和随之而来的客户流失。在个人规模上,你没有这些。真实的数据泄露几乎肯定会结束产品。而不是“伤害品牌”,也不是“使我们倒退一个季度”。直接结束。因此,你首先侵犯自己。每个 Lionshead PR 中的安全堆栈是一个自动化的自我泄露。每次合并尝试都要经过中型安全团队每周对生产代码进行的工具扫描。如果其中任何工具发现问题,合并将被阻止。漏洞永远不会到达生产环境,而那种会导致事故的我从未获得机会。以下是在每个产品的每个 PR 中实际运行的内容。 Trivy 文件系统 - 在整个代码库中进行漏洞、密码和许可证扫描。每个 PR 都会运行,没有路径门。捕捉依赖 CVE、意外硬编码凭证、许可证冲突。通过位于代码库根目录的 trivy.yaml 配置;在任何 CRITICAL 或 HIGH 严重性下失败。Trivy 是 Aqua Security 开源扫描器,是我用过的最好的免费漏洞扫描器。 Trivy IaC(Terraform) - 同样的工具,第二种模式,对 Terraform 文件进行扫描。捕捉不安全的基础设施默认值(公共桶、宽松的 IAM 角色、未加密的资源)。路径门:仅在 terraform/** 文件发生更改时运行。相同的严重性门。 Gitleaks - 在整个 git 历史中进行秘密扫描,而不仅仅是当前的 diff。捕捉 API 密钥、令牌、私钥、连接字符串,这些是某人(可能是我)多年前提交并后来删除的。秘密仍在历史中,仍然可以被利用。每个 PR 都会运行。使用默认规则集,除非代码库放置了 .gitleaks.toml 覆盖。 Checkov - 第二个 IaC 安全扫描器,与 Trivy IaC 一起运行以实现深度防御。Checkov 和 Trivy IaC 使用不同的规则集和启发式算法;它们捕捉不同类别的问题。路径门设定在 terraform/**。已知假阳性规则的跳过列表放在 .checkov.yaml 中。 OWASP ZAP 基线 - 对 PR 的 Vercel 预览 URL 进行主动 DAST。当代码库生产预览部署时,ZAP 会对已部署的网站进行基线安全扫描。捕捉缺失的安全头、cookie 配置问题、常见的注入向量。任何 WARN+ 警报都会导致失败;每个规则的抑制设置位于代码库的 .zap/rules.tsv 中。 Actionlint - GitHub Actions 工作流语法检查。严格来说不属于安全,但与安全相邻:捕捉语法错误、无效上下文以及会静默过度作用域工作流访问的权限范围错误。路径门设定在 .github/workflows/**。 Shellcheck - Shell 脚本静态分析。捕捉引号错误、命令注入模式和经典的“在 rm 命令中的未引用变量”错误,这已结束了比任何单一漏洞更多的职业生涯。路径门设定在 *.sh 文件。 Hadolint - Dockerfile 的语法检查。捕捉不安全的镜像基础、缺少的 USER 指令以及其他扩展容器逃逸爆炸半径的 Dockerfile 形状问题。路径门设定在 Dockerfile*。 Action pins 检查 - Lionshead 编写的保护措施,验证工作流文件中引用的每一个第三方 GitHub Action 是否固定在完整的提交 SHA,而不是移动标签。防止对操作标签的供应链攻击静默传播到 Lionshead 的 CI。未带 SHA 固定的更新或添加操作将导致 PR 失败。 Infracost + OPA 成本门 - 在 CVE 意义上不属于安全,但在“我的卡被错误扣费 $10K/月”意义上属于安全。每个 Terraform PR 上运行,计算成本增量,当增量超过 $50/月 时在 GitHub Environment 审批门上暂停 PR。我在上一篇文章中对此进行了更详细的讨论;提及它是因为它存在于同一工作流中。另有两层在 PR 门外运行。 调度的安全审计 - 每个产品代码库每天运行 lionshead-security-audit.yml 针对默认分支。它运行 npm audit(或相应语言的等效工具)以及完整的 Trivy 文件系统扫描。结果会在每个代码库中打开或更新单个安全:依赖跟踪问题;干净的运行会关闭任何未解决问题。重点是捕捉在代码合并后披露的 CVE,而不仅仅是 PR 介绍的 CVE。大多数真实世界的 CVE 是针对已经在生产中的代码披露的;仅在 PR 时间扫描会忽略它们。 Renovate - 依赖更新自动化。 ci-standards Renovate 预设通过一行 renovate.json 应用于每个产品代码库。Renovate 打开 PR 来提升依赖项,固定操作 SHA,并更新基础容器镜像。它的 github-actions 管理器确保固定的可重用工作流 SHA 处于最新状态,这使从模板产品克隆的新产品保持更新。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡