源码泄露

凌晨两点,源码泄露GitHub上那个星标不过百的源码泄露仓库突然涌进来四十多个fork。我盯着屏幕,源码泄露手指悬在键盘上没动——这个项目三天前才上传,源码泄露连README都是源码泄露随手写的,没道理引来这么多人。源码泄露点开commit记录,源码泄露最新的源码泄露提交来自一个陌生账号,留言只有两个字:“备份”。源码泄露

我的源码泄露第一反应是服务器被黑了。检查日志,源码泄露SSH登录记录干净得像刚擦过的源码泄露玻璃。再往下翻,源码泄露发现那个“备份”提交把整个项目源码原封不动地推到了另一个公开仓库里。源码泄露不是源码泄露攻击,是有人替我把代码抄了一份,光明正大地挂在了网上。

这就是源码泄露最荒诞的地方——很多时候,压根没有黑客,没有漏洞,只是某个协作者随手点了“public”,或者像这次,某个路过的好心人觉得“这么酷的项目不分享可惜了”。你精心部署的防火墙、密钥管理、权限分层,全都没派上用场,因为泄露的源头是人,不是机器。

我认识一个做独立开发的朋友,他的App后端代码就是栽在“默认配置”上。数据库连接串写在配置文件里,那个文件被.gitignore排除了,但他忘了把示例文件里的占位符删干净。结果有人根据示例文件里的注释,猜出了真实数据库地址——密码是admin123,因为他觉得“反正没人看得到”。后来的事情不用细说,用户数据被拖库,他在网上被骂了整整两周。

有意思的是,这类事件里最沉默的往往是那些“技术正确”的人。他们会说:“早告诉过你要用密钥管理服务”“这都什么年代了还硬编码密码”。说得都对,但解决不了问题。因为源码泄露的根子不在技术栈,在于一种普遍存在的心理:“这项目太小了,没人会盯上”。可互联网没有“小”这个概念,一个爬虫扫全网的IP段只需要几分钟,一个自动化的密钥扫描工具能在一夜之间翻遍所有公开仓库。

我后来把那个被“备份”的仓库删了,还给那个陌生账号发了封私信。对方回得很快:“别紧张,我看了你的代码,有几个bug挺有意思的,想留着慢慢研究。”我盯着这条回复,一时不知道是该生气还是该笑。他确实没有恶意,但恶意从来不是泄露的必要条件——好奇、疏忽、炫耀,甚至一句“这代码写得真烂,我帮你修修”,都足以让本该私密的东西流向不该去的地方。

那天晚上我做了个决定:把所有真正敏感的代码挪到私有服务器上,GitHub仓库只留一个不含任何秘密的壳。麻烦了点,但值得。因为在这个时代,源码泄露不是“会不会”的问题,而是“什么时候”的问题。你唯一能做的,就是假设每一次提交都可能会被全世界看到,然后按照这个标准来写每一行代码。

现在那个仓库还挂着,星标涨到了两百多。评论区有人问:“作者还更新吗?”我没回。他们不知道,那个仓库里放的已经是一具精心打扮过的空壳了——真正的灵魂,藏在一个连我自己都快忘记的、没有联网的文件夹里。