freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

如何使用Git-Secrets防止将敏感信息意外上传至Git库
Alpha_h4ck 2024-03-04 21:43:57 231591

关于Git-Secrets

Git-secrets是一款功能强大的开发安全工具,该工具可以防止开发人员意外将密码和其他敏感信息上传到Git库中。

Git-secrets首先会扫描提交的代码和说明,当与用户预先配置的正则表达式模式匹配时,便会阻止此次提交。该工具的优势在于可以集成到CI/CD管道中以实时监控提交信息,但不足之处在于,该工具主要基于正则表达式实现其检测功能,因此可能会有一定程度的误报。

工具安装

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/awslabs/git-secrets.git

然后切换到项目目录中,根据对应的操作系统执行不同的安装命令:

cd git-secrets

*nix(Linux/macOS)

make install

Windows

PS > ./install.ps1

Homebrew安装

brew install git-secrets

工具使用命令

git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<files>...]

git secrets --scan-history

git secrets --install [-f|--force] [<target-directory>]

git secrets --list [--global]

git secrets --add [-a|--allowed] [-l|--literal] [--global] <pattern>

git secrets --add-provider [--global] <command> [arguments...]

git secrets --register-aws [--global]

git secrets --aws-provider [<credentials-file>]

--scan命令

扫描代码库中所有文件:

git secrets --scan

扫描单个文件:

git secrets --scan /path/to/file

递归扫描目录:

git secrets --scan -r /path/to/directory

扫描多个文件:

git secrets --scan /path/to/file /path/to/other/file

全局扫描:

git secrets --scan /path/to/directory/*

从stdin扫描:

echo 'hello!' | git secrets --scan -

--add命令

向当前代码库添加禁止的正则模式:

git secrets --add '[A-Z0-9]{20}'

向全局git配置添加禁止的正则模式:

git secrets --add --global '[A-Z0-9]{20}'

添加一个逐字扫描的字符串(+字符会被转义):

git secrets --add --literal 'foo+bar'

添加允许的正则模式:

git secrets --add -a 'allowed pattern'

工具使用样例

假设我们给定下列主题的文本信息(存储在/tmp/example中):

This is a test!

password=ex@mplepassword

password=******

More test...

并注册以下正则检测模式:

git secrets --add 'password\s*=\s*.+'

git secrets --add --allowed --literal 'ex@mplepassword'

运行下列命令:

git secrets --scan /tmp/example

执行后工具会输出下列错误信息:

/tmp/example:3:password=******

 

[ERROR] Matched prohibited pattern

 

Possible mitigations:

- Mark false positives as allowed using: git config --add secrets.allowed ...

- List your configured patterns: git config --get-all secrets.patterns

- List your configured allowed patterns: git config --get-all secrets.allowed

- Use --no-verify if this is a one-time false positive

上述正则表达式模式“password\s*=\s*.+”将匹配下列内容:

/tmp/example:2:password=ex@mplepassword

/tmp/example:3:password=******

不过,第一行password会被忽略,因为它匹配第一个允许通过的正则表达式“'ex@mplepassword'”。

我们还可以使用下列命令将整个文件列入白名单中:

git secrets --add --allowed '/tmp/example:.*'

git secrets --scan /tmp/example && echo $?

# Outputs: 0

或者指定某个文件的指定行代码列入白名单:

git secrets --add --allowed '/tmp/example:3:.*'

git secrets --scan /tmp/example && echo $?

# Outputs: 0

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

Git-Secrets:【GitHub传送门

# 数据泄露 # 密码安全 # 敏感信息 # GitHub扫描 # Git安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Alpha_h4ck 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1023 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录