在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

example

自定义

可以使用以下标志添加自定义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

注意事项

  1. 提交后应始终启用挂钩。它将帮助您找出哪个提交失败了代码分析,并在那里恢复提交。仅使用预推操作仍会阻止代码联机,但您可能必须还原多个提交才能删除敏感数据。
  2. 使用自定义规则和默认规则,以满足您的特定需要。默认规则涵盖了最广泛使用的键模式,但它可能不需要满足您的实际需要。如果默认规则限制太多,您可以自定义以忽略它们,并仅使用自定义规则/正则表达式。
  3. 熵有助于从代码中获取有噪声的字符串,这些字符串可能是代码中的关键信息。您可能需要根据需要调整阈值。
  4. < > >< 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树结构,使其无法进一步使用。

    < Buff行情>

    小心使用它,并将其作为最后手段使用。

    最后,重写历史意味着你正在改变一个分支。你将不得不通知你的同事让他们清理他们的分支机构,以及使一个无seemless的git结构。否则,它们在合并和推送代码时将面临错误。

    功能愿望列表

    今后可以进行以下改进。

    • 预提交应添加钩子以避免提交敏感数据。目前支持,提交后预推
    • 应该引入某种白名单机制,这样即使找到某些正则表达式模式,也可以强制白名单。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
javascript如何找到socket。同一局域网上的IO服务器?   将Java代码格式化为Word/RTF格式   java学习对象以及如何将分配的变量封装到私有变量   java Websocket客户端不在Tomcat中工作   java如何在点击按钮时打开本机表情键盘?   java使用哪个Maven GlassFish插件?   Eclipse Java构建路径不允许添加外部JAR   继承Java6集合。勾选适当的用法   JavaApacheDateUtils:使用多个模式解析日期   java hibernate如何生成查询?   具有id或链接的java Dropbox下载文件或文件夹   java模态对话框未在PrimeFaces 5上显示   java将类对象转换为人类可读的字符串   更新数据库中字段的java通用方法   java无法通过Apache Tomcat访问网络文件夹