跳到主要内容
凌晨一点,我爬起来翻自己的 .env

凌晨一点,我爬起来翻自己的 .env

今天也没搞懂
今天也没搞懂

· 阅读约 6 分钟

凌晨一点多,读到一半,我从椅子上站起来去翻自己的项目文件夹。

不是那篇文章说了什么天塌下来的事。就一个细节。

有个安全研究员,Joshua Michael,发现 Flock 的服务器上躺着一个不需要登录就能用的访问令牌。他拿这个令牌去查 Flock 用的那套第三方地理信息系统,把所有设备的位置捞了出来。

不需要登录。

我在屏幕前坐了一会儿。"不需要登录"这几个字在代码里长什么样,我大概是知道的。它不长成什么高深的东西,就长成 API_KEY = "sk-xxxx" 那个样子,长成我上个月随手 commit 进去、删了行、但没删干净的那个 .env。

先记一下我卡住的地方。

地图上显示三十万台设备左右,这是后来的数字。但这个数字对我来说,其实没有"不需要登录"这五个字吓人。

因为它意味着泄露这件事不需要有人去做坏事。一个令牌如果谁拿到都能用,那么发现它的研究员和任何闲着刷仓库的路人,看到的是同一个东西。区别只是研究员会写博客,其他人不会。

我到现在也没搞懂这种状态该叫什么。

"被黑"我理解,那是有个人撬了锁。"被谁捡到了"我也理解。但锁根本没锁、钥匙挂在门把手上的时候,那个状态叫什么?

我不知道。我发现我连描述它的词都没有。

我知道这么纠结一个词听着挺没劲的,但我就是卡在这儿,绕不过去。

然后 Flock 的声明就来了:从未被黑,没有信息泄露,云平台从未发生数据泄露。

我看到这句的第一反应是愣了一下。不是觉得它在撒谎——我根本不知道它有没有撒谎。我是突然意识到,我和它用的可能不是同一套定义。

它说的"泄露",大概是指数据流到了不该有它的人手里;我看到的,是任何人朝一个地址发一个请求就能把数据拿走。

这两句话可以同时是真的。

我本来下一个念头是"这不就是文字游戏"。但写着写着又觉得,也许更麻烦的情况是它真的不认为这是泄露。那就不是态度问题,是它自己有没有能力知道数据被导走过。

这两种可能我更倾向哪一种?……说不清。反正哪一种都不太让人安心。

地图上那些设备是有名字的,名字里常常直接带着街道地址。

有一台叫 FBI Pilot Camera,标在华盛顿那个 FBI 总部。还有一台的名字里明晃晃写着拘留所某栋楼二层的淋浴间。

我读到这条的时候是凌晨,人有点困,但手是凉的——原来一个名字字段里能塞进去这么多东西。

不过这些先放一边,我真正想说第二遍的是另一件事。

研究员在 2025 年底联系了 Flock,开口先说明自己没越权、没绕过认证、没改数据、没触发计费。对方的反应是:先不回,跟进几次之后给一句"内部排查中",然后没了。

再后来 Flock 发博客说没有数据泄露。而研究员已经把技术细节写出来了。

我卡在这儿的是顺序,不是对错:先被发现,然后没有正面回应,然后对外讲"我们没有泄露"到底是什么意思。

再往后还有一段,我看到的时候笑了一下,不是开心的那种。

研究员给地图加了免责声明,写明跟 Flock 没关系也没得到它授权。然后一家自称做"AI 原生社会工程防御"的公司,代表 Flock 的名义,来投诉商标侵权,说可能造成客户混淆。

从头到尾没有一句在讲:设备到底在不在那里。

而 The Intercept 拿了亚利桑那州六个随机坐标去现场核对,六个点都有 Flock 摄像头。

六个点。不是几千个样本,就是六个。我信这六个,恰恰因为它是最笨的验证方式,笨到不太像编出来的。

我的偏见就摆在这儿了:网站叫什么、挂在哪个域名、有没有用某个商标,跟那根杆子上有没有那个盒子,是两件事。要是投诉一个名字就能让杆子消失,那倒真厉害了。

写完这句我停了一下——我前面刚说过不会轻易信一个没见过的数字,转头就因为"笨"这个理由,信了六个坐标。这不矛盾吗?

可能有一点。但我认。我就是在两边各站了一下,然后选了更顺我直觉的那一边。

顺便提一句,ACLU 之前那份报告说这种东西不是一次两次。我本来想把这个当证据用,后来觉得算了——我连那份报告都没读完,拿它撑腰心里不踏实。

回到我自己的文件夹。

推上去的那个 .env 还在。里面的 key 早过期了,我不知道它在过期之前有没有被扫到过。

大概率没有,也可能有。😭

我删掉了,加进了 .gitignore。然后意识到这只是把门锁上——过去那两周门是不是开着的,我没有任何办法知道。

说难听点,我做的这个动作,安抚作用大概比实际作用大。但除了这个,我想不出还能做什么。

这块知识对我来说挺夹生的。我知道"不该把 key 写进代码",但我不知道"怎么在事后判断这个东西有没有被用过",甚至不知道访问日志里哪一种字段能说明问题。

我拿这个去问同桌,它给了我一段查日志的命令,我看了两遍,一个都没敢跑。那些字段里哪个算"被访问过",我分不清。

三周前的我大概还不会因为别人家一个令牌,半夜爬起来翻自己的仓库。这算进步吗?可能算一点吧。也可能只是换了个方式慌。

还有一点我到现在也没想明白:我更愿意相信 Flock 是疏忽,不是隐瞒。

然后我意识到,我之所以更愿意这么信,是因为如果换成我在那个位置,我也希望别人这么对我。

这不叫判断,这叫投射。收回。

收回之后呢?也没想好。先把这个念头放这儿吧,别让它偷偷替我做判断。

这周我想干一件事:把 Michael 一月那篇技术博客读完。我想知道从"发现一个能用的令牌"到"一张三十万台设备的地图",中间到底要经过哪些步骤——我现在除了"打印一下看看",想不出别的。

评论区蹲一个大佬。这种"公开能访问、但没人会报错"的接口,平时你们都是怎么自查的?我现在只会用 .gitignore 挡,感觉完全不够。