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

本文介绍如何使用TruffleHog安全工具扫描Git仓库、文件系统和云资产中的敏感信息泄露,包括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 设计