大家好,今天给大家分享一个专注于发现和验证Git仓库中泄露的凭证和敏感信息的工具TruffleHog
,旨在通过深入分析目标Git库的提交历史和代码分支,来搜索出潜在的敏感信息,从而提升代码库的安全性。
项目介绍
在软件开发过程中,敏感信息的泄露可能会导致重大的数据和隐私损失。为了应对这一挑战,TruffleHog项目应运而生。它旨在帮助开发者发现并防止Git仓库中的深层密码和其他敏感数据的泄露,从而提升代码库的安全性。
主要功能
密钥发现:能在包括 Git、聊天记录、wiki、日志、API 测试平台、对象存储、文件系统等多个地方查找密钥。
分类:可对超过 800 种密钥类型进行分类,并映射到其所属的特定身份,如 AWS 密钥、Stripe 密钥、Postgres 密码、SSL 私钥等。
验证:针对可分类的每个密钥,都能登录以确认该密钥是否有效,此步骤对于了解是否存在实时的当前危险至关重要。
分析:对于约 20 种最常见的泄露凭证类型,TruffleHog 可以发送多个请求以了解密钥的所有相关信息,例如创建者、可访问的资源以及在这些资源上的权限等。
项目特点
- 扫描的机密类型丰富,有 700 多种。
- 实现了针对每种密钥类型的验证逻辑,以确认其有效性,减少误报。
- 可解码包括 base64、zip 文件、docx 文件等数十种编码格式,扫描其中的密钥。
- 能扫描的范围广泛,除了源代码,还包括文件系统、docker 容器、s3 存储桶、ci 日志等。
- 可通过 API 学习丰富结果数据,例如获取密钥所属的帐户以及有时包括密钥的权限或范围。
应用场景
1.软件开发项目
-
代码安全审计:在开发过程中,开发人员可能会不小心将 API 密钥、密码、数据库连接字符串等敏感信息提交到代码仓库中。TruffleHog 可以扫描代码仓库(如 Git)的历史记录和当前版本,找出这些潜在的敏感信息泄露风险,帮助开发团队及时发现并修复问题,避免敏感信息被恶意利用。例如,对于一个使用云服务 API 的项目,TruffleHog 可以检测出硬编码在代码中的云服务访问密钥。
-
开源项目维护:开源项目通常有众多开发者参与,代码的安全性尤为重要。TruffleHog 可以帮助开源项目的维护者扫描项目代码,确保没有敏感信息泄露,保护项目使用者的安全和隐私。
-
第三方库和插件安全检查:在使用第三方库和插件时,可能会引入潜在的安全风险。TruffleHog 可以扫描项目中使用的第三方库和插件的代码,检查是否存在敏感信息泄露的情况。
2.企业内部系统
-
内部代码库管理:企业内部有大量的代码库用于开发各种业务系统。TruffleHog 可以对这些内部代码库进行定期扫描,确保员工没有在代码中泄露公司的敏感信息,如内部系统的登录凭证、数据库连接信息等,保护企业的信息安全。
-
安全合规检查:许多企业需要遵守相关的安全法规和标准,如 GDPR(通用数据保护条例)等。TruffleHog 可以帮助企业检查代码中是否存在违反安全合规要求的敏感信息泄露情况,以便企业及时进行整改,满足安全合规要求。
3.云服务管理
-
云资源配置检查:企业在使用云服务时,需要配置各种访问密钥和凭证。TruffleHog 可以扫描云资源的配置文件和相关代码,检查是否存在密钥泄露的风险,帮助企业确保云资源的安全使用。
-
云服务提供商内部使用:云服务提供商自身也需要确保其提供给客户的服务的安全性。TruffleHog 可以用于云服务提供商内部,对其代码和系统进行安全扫描,检查是否存在敏感信息泄露的情况,提高云服务的安全性和可靠性。
4.持续集成 / 持续部署(CI/CD)流程
-
CI/CD 管道中的安全检查:将 TruffleHog 集成到 CI/CD 管道中,可以在代码构建和部署的过程中自动进行敏感信息扫描。如果发现敏感信息泄露,CI/CD 流程可以及时中断,避免将存在安全风险的代码部署到生产环境中。
-
预提交检查:作为预提交钩子(pre-commit hook)使用,在开发人员提交代码之前进行敏感信息检查,防止敏感信息被提交到代码仓库中,从源头保障代码的安全性。
5.安全事件调查与响应
-
安全事件调查:当发生安全事件时,如数据泄露事件,TruffleHog 可以用于扫描相关的代码和系统,帮助安全团队快速确定敏感信息泄露的源头和途径,以便采取相应的措施进行处理和修复。
-
事后安全评估:在安全事件处理完成后,使用 TruffleHog 对系统和代码进行全面扫描,评估安全措施的有效性,发现潜在的安全隐患,为后续的安全改进提供依据。
安装使用
安装
TruffleHog提供了多种安装方式,适用于不同操作系统和使用场景,以下是详细介绍:
1.针对macOS用户
可以使用Homebrew进行安装,在终端中执行命令brew install trufflehog
即可。
2.使用Docker方式(适用于多种操作系统)
- 确保Docker引擎已经在运行。
- 对于Unix系统(包括Linux和macOS),在终端执行
例如docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest [具体操作指令]
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
用于扫描指定的GitHub仓库。
- 在Windows Command Prompt中,执行:
docker run --rm -it -v "%cd:/=\%:/pwd" trufflesecurity/trufflehog:latest [具体操作指令]
- 在Windows PowerShell中,执行:
docker run --rm -it -v "${PWD}:/pwd" trufflesecurity/trufflehog [具体操作指令]
- 对于M1和M2 Mac,需指定平台为
linux/arm64
,执行:
3.二进制发布版本安装docker run --platform linux/arm64 --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest [具体操作指令]
- 从项目的发布页面下载适合您操作系统的二进制发布文件。
- 将下载的文件解压到您选择的目录中。
4.从源码编译安装
-
首先,执行命令:
git clone https://github.com/trufflesecurity/trufflehog.git
克隆项目代码到本地。
-
然后进入克隆后的项目目录,执行
cd trufflehog
。 -
最后执行
go install
命令进行编译和安装。
5.使用安装脚本安装(适用于Unix系统,包括Linux和macOS)
- 打开终端,执行:
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
这将下载并执行安装脚本,将TruffleHog安装到/usr/local/bin
目录下,使其可在命令行中全局使用。
使用
语法结构:trufflehog [数据来源子命令] [选项] <参数>
,其中数据来源子命令包括git、github、gitlab、docker、s3、filesystem等,用于指定要扫描的数据源类型。
1. 扫描代码仓库
-
扫描单个 GitHub 仓库中的所有提交
trufflehog git https://github.com/trufflesecurity/test_keys
用于在日常开发中检查自己或团队的代码仓库是否存在潜在的敏感信息泄露风险,例如在开发一个 Web 应用项目时,检查代码中是否意外包含了数据库连接字符串、API 密钥等敏感信息。
-
扫描 GitHub 仓库并以 JSON 格式输出仅已验证的密钥
trufflehog git https://github.com/trufflesecurity/test_keys --only-verified --json
适用于将 TruffleHog 集成到自动化脚本或其他工具链中,方便后续对扫描结果进行进一步处理和分析,例如在持续集成 / 持续部署(CI/CD)流程中,将扫描结果传递给其他安全分析工具或报告系统。
2. 扫描 S3 存储桶
扫描指定 S3 存储桶中仅已验证的密钥
trufflehog s3 --bucket=<bucket name> --only-verified
在使用 Amazon S3 存储数据的场景中,确保存储桶中不存在敏感的访问密钥或其他凭证被泄露,保护存储在 S3 中的数据安全,防止未经授权的访问。
3. 扫描本地文件或目录
- 扫描指定的单个文件或多个文件
trufflehog filesystem path/to/file1.txt path/to/file2.txt
在本地开发过程中,检查特定文件是否包含敏感信息,例如在处理包含配置信息的文件时,确保其中的密码、密钥等没有被意外泄露。
- 扫描指定目录及其子目录中的所有文件
trufflehog filesystem path/to/dir
在对本地项目目录进行安全检查时,全面扫描目录下的所有文件,包括源代码、文档、配置文件等,防止在本地开发环境中存在敏感信息泄露风险。
更多使用示例,请阅读项目文档。
项目地址
https://github.com/trufflesecurity/trufflehog
防止敏感信息泄露,一个强大的密钥发现、分类、验证和分析的开源工具 - BTool博客 - 在线工具软件,为开发者提供方便