我最近发现了一个案例,其中一位同事不小心将他们的登录凭据(主机、用户名和密码)提交到了本地源代码存储库,然后将这些更改推送到了 GitHub 上的公共存储库。当然,这不是一个孤立的事件——几年前,在人们在公共存储库中发现数百个私钥和其他凭据后,GitHub 终止了其全代码搜索功能。
我想确保过去我们的任何其他面向公众的存储库都没有发生过这种事情(并且,如果发生这种情况,请清理私有数据,更改暴露的密码,撤销暴露的键等)。我可以拼凑一个 shell 脚本来将过去的提交提取到给定的 Git 或 Subversion 存储库,这样我就可以扫描它们以获取私有数据。但是我应该使用什么样的文件名和文本模式?例如,我想捕获名称暗示它们包含私钥或凭据的文件(password.txt, id_dsa, id_rsa, secring.gpg,.netrc,可能还有几个我忘记或什至不知道的标准)。是否有一个涵盖最常见情况的列表?类似地,我想扫描文本和源文件的内容以查找指示硬编码登录凭据的模式。也许有人已经生成了一个正则表达式列表来开始?