在git存储库中搜索高熵字符串,深入研究提交历史。
forestHog的Python项目详细描述
简介
它是trufflehog的一个分支,为检查带来了更多的灵活性。在git存储库中搜索秘密,深入挖掘提交历史和分支。这样可以有效地发现意外犯下的秘密。
安装
pip install forestHog
foresthog
trufflehog以前在git diff上运行熵检查。此功能仍然存在,但已添加了高信号正则表达式检查,并添加了支持熵检查的功能。
这些功能有助于减少噪音,使工具更容易插入DevOps管道。
forestHog --regex https://github.com/dxa4481/truffleHog.git
您还可以直接从文件系统检查repo:
forestHog file:///user/dxa4481/codeprojects/truffleHog/
要启用熵检查,请使用以下命令:
forestHog --regex --entropy https://github.com/dxa4481/truffleHog.git
自定义
可以使用以下标志添加自定义regex--rules/path/to/rules
。您还可以使用--add rules/path/to/rules
标志添加regex和默认regex。它使扩展规则检查更容易,同时使用默认规则和自定义规则。由--rules
或--add rules
提供的文件应为以下格式的json文件:
{
"RSA private key": "-----BEGIN EC PRIVATE KEY-----"
}
可以添加子域枚举、s3 bucket检测和其他非常定制的有用regex。
也可以在您认为有利于社区的上游贡献高信号正则表达式。欢迎使用azure密钥、twilio密钥、google计算密钥等,前提是可以构造高信号regex。
trufflehog的基本规则集源于https://github.com/dxa4481/trufflehog regexes/blob/master/trufflehogregexes/regexes.json" rel="nofollow">https://github.com/dxa4481/trufflehogregexes/blob/master/trufflehogregexes/regexes.json
您还可以检查程序在实际针对您的repo运行它之前将检查哪些regex。这是确保成功检测到自定义规则/正则表达式的有用检查:
forestHog --regex --show-regex <git_url>
将返回一个json响应。示例如下所示:
{
"Slack Token": "(xox[p|b|o|a]-[0-9]{12}-[0-9]{12}-[0-9]{12}-[a-z0-9]{32})",
"RSA private key": "-----BEGIN RSA PRIVATE KEY-----",
...
}
熵至少检查20个字母单词。您可以根据自己的喜好控制熵检查的字长和阈值。--熵wc
控制字长。[默认值:20]--熵十六进制阈值控制为十六进制字符串计算的熵阈值。[默认值:3.0]
--entropy-b64-thresh
控制为base64字符串计算的熵的阈值。[默认值:4.5]
工作原理
此模块将遍历每个分支的整个提交历史,检查每个提交的每个差异,并检查机密。这是由正则表达式和熵决定的。对于熵检查,foresthog将为每个大于--熵wc
的文本块计算base64字符集和hexidecimal字符集的shannon熵。如果在任何时候熵超过了由--entropy hex thresh
和--entropy-b64-thresh
对于大于--entropy wc
字符的字符串,它将打印到屏幕上。
帮助对话框
usage: forestHog [-h] [--json] [--show-regex] [--regex] [--rules RULES]
[--add-rules ADD_RULES] [--entropy]
[--entropy-wc ENTROPY_WC]
[--entropy-b64-thresh ENTROPY_B64_THRESH]
[--entropy-hex-thresh ENTROPY_HEX_THRESH]
[--since-commit SINCE_COMMIT] [--max-depth MAX_DEPTH]
[--branch BRANCH] [--repo-path REPO_PATH] [--cleanup]
git_url
Find secrets hidden in the depths of git.
positional arguments:
git_url URL for secret searching
optional arguments:
-h, --help show this help message and exit
--json Output in JSON
--show-regex prints out regexes that will computed against repo
--regex Enable high signal regex checks
--rules RULES Ignore default regexes and source from json list file
--add-rules ADD_RULES
Adds more regex rules along with default ones from a
json list file
--entropy Enable entropy checks
--entropy-wc ENTROPY_WC
Segments n-length words to check entropy against
[default: 20]
--entropy-b64-thresh ENTROPY_B64_THRESH
User defined entropy threshold for base64 strings
[default: 4.5]
--entropy-hex-thresh ENTROPY_HEX_THRESH
User defined entropy threshold for hex strings
[default: 3.0]
--since-commit SINCE_COMMIT
Only scan from a given commit hash
--max-depth MAX_DEPTH
The max commit depth to go back when searching for
secrets
--branch BRANCH Name of the branch to be scanned
--repo-path REPO_PATH
Path to the cloned repo. If provided, git_url will not
be used
--cleanup Clean up all temporary result files
吉特森林
除了分析提交阶段静态代码的foresthog
实用程序之外,还添加了另一个方便的工具git forest
来将此代码分析与git hook集成。
启动林集成
可以使用以下命令启动集成。默认情况下,提交后
和预推
事件将集成。
git-forest init
初始化后,可以更改foresthog的配置使用git forest update子实用程序或直接编辑文件进行分析:
<;git_root>;/.forest/config.json
json格式的配置示例如下:
pip install forestHog
0
更新林配置
您可以手动或使用update
命令更新它们。例如,要禁用提交后触发器:
pip install forestHog
1
类似地,您可以更改熵阈值,如:
pip install forestHog
2
对于自定义规则,您需要提供包含这些规则的json文件,或者手动将它们插入到配置文件中。
pip install forestHog
3
< Buff行情>git hook使用git forest run
命令,每个事件触发一个调用,该调用在运行时读取配置文件,并使用foresthog
实用程序分析代码,并将代码作为返回值传递/失败。
破坏森林整合
要删除集成,请运行以下命令。
pip install forestHog
4
它将从<;git-root>;
目录中删除.forest
目录,git钩子将断开连接,并使用.bkp
扩展在<;git-root>;/.git/hooks
目录中进行备份。
帮助对话框
pip install forestHog
5
注意事项
提交后
应始终启用挂钩。它将帮助您找出哪个提交失败了代码分析,并在那里恢复提交。仅使用预推操作仍会阻止代码联机,但您可能必须还原多个提交才能删除敏感数据。- 使用自定义规则和默认规则,以满足您的特定需要。默认规则涵盖了最广泛使用的键模式,但它可能不需要满足您的实际需要。如果默认规则限制太多,您可以自定义以忽略它们,并仅使用自定义规则/正则表达式。
- 熵有助于从代码中获取有噪声的字符串,这些字符串可能是代码中的关键信息。您可能需要根据需要调整阈值。 < > >< Buff行情>
预提交
应添加钩子以避免提交敏感数据。目前支持,提交后
和预推
。- 应该引入某种白名单机制,这样即使找到某些正则表达式模式,也可以强制白名单。
对于企业来说,定期审查其公共回购协议是否泄露了关键信息是一种最佳做法。foresthog
实用程序可以轻松分析在线回购。
还原git提交
要恢复上次提交而不丢失对文件的任何更改,最好使用:
pip install forestHog
6
要将文件上的更改还原到上次提交的状态,可以使用:
pip install forestHog
7
若要还原联机回购的上一次推送,请使用以下命令:
pip install forestHog
8
要筛选出整个git树,可以使用:
pip install forestHog
9
查看文档以了解有关此神奇实用工具的更多信息:筛选器分支
重写历史记录的另一个好工具是bfg。通过给它一个包含要替换的内容的regex文件,它会将效果传播到整个git历史记录中。
重写无效
如果你的回购协议是公开的,有可能被某人克隆,而你的关键数据被披露,如果有的话。重写历史记录/提交将防止将来发生任何泄漏,但您不能对使用克隆的repo泄漏的数据执行任何操作。
重写历史可能听起来很酷,但如果不小心重写,可能会破坏整个git树结构,使其无法进一步使用。
小心使用它,并将其作为最后手段使用。
最后,重写历史意味着你正在改变一个分支。你将不得不通知你的同事让他们清理他们的分支机构,以及使一个无seemless的git结构。否则,它们在合并和推送代码时将面临错误。
功能愿望列表
今后可以进行以下改进。