使用TruffleHog挖掘代码中的敏感信息

本文介绍了TruffleHog工具如何帮助检测和清理代码库、文件系统和云资产中的敏感信息泄露,包括API密钥、密码和凭证等,并提供安装、使用和高级解析技巧。

使用TruffleHog挖掘敏感信息

机密信息泄露可能对任何组织构成重大安全风险。当敏感细节(如API密钥、密码、加密密钥和其他凭证)无意中提交到Git等版本控制系统时,可能导致系统、数据或其他资源的泄露。

泄露密钥可能对组织产生严重后果,损害数据完整性、机密性和系统安全。暴露的令牌可能提供对敏感信息的未经授权访问,使恶意行为者能够操纵或窃取数据、中断服务,并可能升级攻击。此外,被利用的令牌还可用于进行复杂的钓鱼活动或发起进一步的网络攻击。

这种安全失误的影响可能表现为财务损失、声誉损害和法律后果。

那么,如何知道在组织的广阔数字环境中是否隐藏着秘密?简单。使用TruffleHog。

TruffleHog

TruffleHog¹是一款免费的安全工具,旨在挖掘版本控制系统、CI、云资产和文件系统中的敏感信息暴露。具体来说,它帮助识别和缓解与无意存储凭证、密钥和其他敏感数据相关的安全风险。

例如,TruffleHog可以扫描Git代码库中类似已知敏感信息的模式,帮助组织和开发人员在它们成为安全漏洞之前主动识别和删除这些数据。

在攻击者发现之前识别和清理泄露的密钥是安全的关键组成部分。

安装

使用APT安装TruffleHog很容易,执行以下命令:

1
sudo apt install trufflehog

APT不是你的菜?别担心。该工具支持其他几种安装方法:

  • 在MacOS上使用brew
  • Docker
  • 通过https://github.com/trufflesecurity/trufflehog/releases 的二进制版本
  • 从源代码Git克隆和编译
  • 使用GitHub上的install.sh脚本(也支持特定版本安装)

这些替代安装方法的具体步骤可以在https://github.com/trufflesecurity/trufflehog#floppy_disk-installation 找到。

子命令

安装后,是时候熟悉TruffleHog用于挖掘密钥的九个可用“子命令”了。这些可以通过在命令行中使用--help标志列出,如下所示。

1
trufflehog --help

TruffleHog子命令

上述每个命令都有特定的后续“标志”,可以在执行TruffleHog时设置。这些附加标志有助于扩展功能和缩小工具的范围。这些标志可以通过在任何上述子命令后包含--help标志来列出,如下所示。

可选标志(片段)

有一些标志在每个子命令中都可用。例如,--json标志以JSON格式输出工具的结果。

示例JSON输出

然后,可以通过自定义脚本使用和解析这些结果,将任何发现转换为更可操作的情报。给定上面的示例TruffleHog JSON输出,假设你想提取每个检测到的问题的信息,特别是提交、文件、电子邮件、存储库和检测到的AWS密钥。你可以使用jq来完成这个任务!

jq命令行工具是一种强大且轻量级的方式来处理和操作JSON数据。它提供了一种方便高效的方法来提取、转换和过滤JSON内容,使其成为处理基于JSON的API、配置文件和数据处理的有价值工具。

jq的一些有用功能包括:

  • 查询和选择数据
  • 过滤和转换
  • 美化输出
  • 条件处理
  • 与其他Unix工具结合使用(如cat、grep、sed)
  • 脚本支持

以下命令获取我们的TruffleHog JSON输出,并提取提交、文件、电子邮件、存储库和检测到的AWS密钥,以缩短的JSON格式显示。

1
cat trufflehog_output.json | jq -c '.SourceMetadata.Data.Git as $git | {commit: $git.commit, file: $git.file, email: $git.email, repository: $git.repository, awsKey: .Raw}'

jq解析

另一个共享的子命令标志是--only-verified,它指示TruffleHog检查每个检测到的潜在凭证,针对它认为所属的API。这个附加步骤可以帮助消除误报。例如,AWS凭证检测器对AWS API执行GetCallerIdentity API调用,以验证AWS凭证是否有效。

示例验证密钥

其他标志是子命令特定的,如--since-commit--max-depth,它们在git命令中可用,并控制扫描关注提交的回溯时间和深度。这些对于缩小扫描范围并将其纳入CI流程以在问题到达分布式存储库之前识别问题非常有用。

现在我们知道TruffleHog是什么,为什么它重要,并了解其工作原理的基础知识,让我们看一些真实示例。

Web应用程序…呃…应用程序

TruffleHog在审查存储库、文件系统、云资产和CI实现方面非常成功,以至于它也被第三方改编为浏览器扩展(Chrome²和Firefox³),以扫描服务器返回的Web应用程序代码中的密钥!

例如,下图显示了一个React应用程序,它在main.js文件中慷慨返回了许多公司CI/CD管道的密钥,包括GitHub、Bamboo、Polaris、AWS和SonarQube密钥。

CI/CD管道的API密钥

这个问题由于文件不需要身份验证即可获取而变得更糟——意味着任何在线的人都可以检索这些密钥。通过一些额外的工作和GitHub API的帮助,攻击者会发现GitHub令牌允许对组织的私有GitHub进行完全读写。这也可能允许获取发出令牌的用户信息、组织的更大用户列表和存储库枚举。

GitHub令牌授权示例

泄露的AWS密钥也有效,并且可以使用AWS自己的cli工具⁴进行滥用。

我的代码有密钥。现在怎么办?

BHIS建议在遇到(或客户的)代码中的密钥时采取以下步骤:

  1. 删除所有密钥。
  2. 删除存储库历史中包含密钥的先前提交。
  3. 定期运行开源令牌扫描软件,如TruffleHog。
  4. 审查CI/CD配置。

下一步是什么?

如果你有兴趣学习TruffleHog的更高级用法,可以从查看他们在GitHub上的指南开始(https://github.com/trufflesecurity/trufflehog#advanced-usage)。

参考文献

  1. https://github.com/trufflesecurity/trufflehog ↩︎
  2. https://chromewebstore.google.com/detail/trufflehog/bafhdnhjnlcdbjcdcnafhdcphhnfnhjc ↩︎
  3. https://addons.mozilla.org/en-US/firefox/addon/trufflehog/ ↩︎
  4. https://aws.amazon.com/cli/ ↩︎
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计