Gitleaks:2.7万Star,专治代码里的密钥泄露
Gitleaks:2.7万Star,专治代码里的密钥泄露
前段时间整理公司仓库,随手扫了一下,发现十几个仓库的历史提交里藏着 API Key 和数据库密码。有的是测试用的,有的大概率是线上还在用的。
这种事其实很常见。GitHub 每年有数百万个密钥被意外提交到公开仓库,攻击者用自动化脚本几秒钟就能抓取到。
Gitleaks 就是解决这个问题的工具。Go 语言写的,单二进制文件,启动快,CI 流程里跑也不拖时间。

Gitleaks 能做什么
核心是一个正则扫描引擎,用预定义的规则匹配代码中的敏感信息。每条规则可以同时指定正则表达式和熵值阈值:正则做模式匹配,熵值判断字符串的随机程度。两个条件都满足才触发告警,这是它降低误报的关键设计。
扫描 git 历史。Gitleaks 追溯整个提交历史。很多密钥是之前提交后来又删掉的,git log 里仍然有记录。
三种模式。git 模式扫仓库,dir 模式扫目录,stdin 模式接受管道输入,适应不同场景。
自动化拦截。支持 pre-commit hook 和 GitHub Action,在提交前或 CI 流程中自动阻断。GitHub Action 只需要一行 uses: gitleaks/gitleaks-action,结果直接显示在 PR 页面上。

配置与规则
内置 150 多条检测规则,覆盖 GitHub Token、AWS、GCP、Slack、GitLab 等主流服务的密钥格式。
规则配置用 TOML:
[[rules]]
id = "my-custom-rule"
description = "custom api key"
regex = '''my-key-[a-z0-9]{32}'''
entropy = 3.5
keywords = ["api", "key"]
支持自定义正则、熵值阈值、路径过滤、关键字预过滤、白名单。v8.28 版本引入了组合规则,多个匹配条件组合使用,可以降低误报。
几个值得了解的功能
Baseline 基线。老项目历史长,一次性扫出几千条结果没法逐个处理。先扫描一次生成 baseline 报告,后续只关注新增的泄露。
编码和压缩包。有些密钥用 Base64 或十六进制编码后藏在代码里,Gitleaks 能自动解码后识别。也支持递归解压 zip、tar.gz 等压缩包。
忽略机制。测试用的假密钥在行尾加 #gitleaks:allow 注释即可跳过。也可以创建 .gitleaksignore 文件,用指纹精确忽略特定发现。
多格式报告。JSON、CSV、JUnit、SARIF 四种格式,也可以用 Go template 自定义输出。
安装
# macOS
brew install gitleaks
# Docker
docker pull zricethezav/gitleaks:latest
# 扫描当前目录
gitleaks git -v
第一次跑建议先用 dir 模式扫目录,速度快,能快速看到效果。然后再用 git 模式扫完整历史。
Gitleaks 默认规则覆盖了大多数主流服务的密钥格式,开箱即用。需要深度定制时,TOML 配置文件有足够的扩展空间,组合规则和 Baseline 机制也能应对复杂场景。对于日常开发中的密钥泄露防护,这是一个靠得住的选择。
配置文件有足够的扩展空间,组合规则和 Baseline 机制也能应对复杂场景。对于日常开发中的密钥泄露防护,这是一个靠得住的选择。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)