|
GitHub上搜“password”,信息泄露能翻出几万个硬编码凭据。工具这不是信息泄露秘密,但真正让人后背发凉的工具是,这些泄露往往不是信息泄露黑客撞库的结果,而是工具开发者自己把钥匙挂在了门把手上。 我见过最离谱的信息泄露一个案例,某家银行的工具测试仓库里躺着生产环境的数据库连接串,commit时间是信息泄露三年前。没人删,工具没人改,信息泄露就这么明晃晃地挂着。工具后来那家银行被拖库,信息泄露溯源时发现攻击者最早就是工具从GitHub搜到的这个仓库——连漏洞都没利用,直接拿钥匙开门。信息泄露 这类工具的原理其实不复杂。GitHub的搜索语法本身就是一把刀,比如filename:env password、extension:pem private、language:python mysql password,组合起来就能精准定位。但光靠手搜效率太低,于是有人写了自动化工具,把常见的泄露模式固化下来,批量扫、定时扫、甚至监控新提交。 比较有代表性的开源工具有trufflehog和gitleaks。trufflehog走的是正则加熵值检测的路子,能识别AWS key、Google API key这类高熵字符串。gitleaks则更偏向规则引擎,支持自定义正则,适合企业做内部自查。还有个叫git-hound的,专门盯GitHub的公开事件流,实时抓新推的代码,配合模式匹配,能抢在别人清理之前把泄露的密钥捞出来。 这些工具本身是双刃剑。安全研究员用它帮企业找漏洞,黑产用它批量收割凭据。GitHub官方其实有秘密扫描功能,但只覆盖付费用户和特定仓库,免费公开仓库的防护漏洞依然很大。更讽刺的是,有些开发者把GitHub当网盘用,什么配置都往上丢,压根没想过这会变成攻击面。 我试过一次用trufflehog扫某个知名开源项目的所有历史commit,不到十分钟就翻出三个过期的Slack token和一个AWS临时密钥。虽然都是失效的,但那种感觉就像在别人家抽屉里翻出了旧钥匙——你明知道打不开现在的锁,但也保不齐哪天主人换了锁芯却没换习惯。 写代码的人有个通病:觉得“反正这只是测试环境”、“以后会删的”、“别人看不到”。可GitHub的搜索引擎比你自己还记得清楚。哪怕你后来删了文件,历史commit里照样留着痕迹。有个技巧是,用commit搜索语法直接查删除记录,很多泄露就是这么被“复活”的。 所以真要防,光靠工具扫自己仓库不够。得从流程上掐死:环境变量不落代码,密钥走专门的配置中心,commit前用pre-commit钩子自动检查。工具能帮你发现问题,但改不掉习惯——这才是最要命的。 |