6.3 KiB
title | date | slug | featuredImage | categories | tags | series | summary | description | wikilinks | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
我把Vaultwarden主密码搞丢了 | 2025-03-12 | i-locked-myself-out-of-vaultwarden |
|
|
小氯你这个笨蛋笨蛋笨蛋笨蛋笨蛋! | 本文介绍了作者在修改Vaultwarden邮箱地址时,因操作不当导致无法访问密码库的经历。作者将主密码存放在Vaultwarden内部,又没有备份,结果因Vaultwarden的端到端加密特性而无法恢复约400个密码。文章同时记录了作者重新部署Vaultwarden的过程,以及按重要性分为三级的密码恢复策略。作者通过自嘲幽默的方式分享了这次事件,并在结尾强调了备份的重要性和"人"是系统最大安全漏洞的观点。 |
各位老友,晚上好。这里是 Chlorine。
本期给大家分享一下,这只笨蛋 zako 元素娘干过的迄今为止最蠢的事情。当事元素娘觉得世界上不可能还有人比自己还蠢了。
改邮箱引发的惨剧
事情是这样的。
Vaultwarden 这个东西呢,有一个「虚假」的邮箱选项。之所以说是「虚假」的,是因为如果你没有配置 SMTP,这个邮箱就只起一个用户标识符功能。如果你想更改邮箱,那么那个验证码随便写就可以了。
小氯最初托管的 Vaultwarden 邮箱是过去的域名邮箱,最近一直希望换成现在的域名邮箱。而在搜索到了上面的信息后,小氯兴冲冲地去改了邮箱,还颇有恶趣味地把验证码写成了 114514。
然后自然是被踢出登录了。重新登录……咦?我的扩展也退出登录了?
坏了。
容我解释一二:由于我比较贪图方便,我采取了一个很离奇的策略:把主密码也存放在 Vaultwarden 内。这大概相当于,我把钥匙落在了家里。
那么找找备用钥匙?很遗憾,由于小氯使用的主密码堪称社工学噩梦,所以小氯并没有做什么备份(难道这种情况不是更应该备份吗)。找了一圈之后宣告失败。
那么能否换把锁呢?或者说,通过管理员权限重置主密码。小氯没有找到这样的方法,Vaultwarden 官方也表示这并不可行。
那么只剩暴力开锁一条路了。
很遗憾,这做不到。由于 Vaultwarden 的端到端加密,目前地球上还没有方法能够解开加密的数据库。虽然说理论上由于我把 Bitwarden 浏览器扩展的过期时间设置为了「从不」,因此应该在某个位置存放了一份解密的密钥,但是这显然已经远远超出了小氯的能力范围。
于是,小氯就这么栽在了一次手贱上。
清点损失
如果按照一个条目一个密码来算的话,根据 SQLite 内部的情况,小氯大概丢失了四百个密码。不过有一些密码是回收站里面的,因此实际数目应该比这个数小。
Build From Scratch
下面自然是备份好之前的遗产,然后重新部署 Vaultwarden。
不过这里出现了一个问题:即使我已经明确把环境变量设置为允许注册,还是出现了无法注册的问题,清除缓存也不行,不知道这台虚拟机中了什么邪。
不过,反正就虚拟机那个连个 SSH 都没病走两步的情况,小氯已经抓狂了不知道多久了。于是,小氯把自己的 Vaultwarden 迁移到了 VPS 上。这样连接起来就比较顺畅了。小氯倒是不担心密码被 VPS 服务商访问,先不说这样的情况极少见,就算是能,他们也只能看到管理员 token 这样的数据,最多也只是能删除我的账户而已。毕竟,Vaultwarden 已经向小氯证明了,E2EE,实在是太、安、全、了、啊(咬牙切齿)。
当然,这也只是适用于小氯当前的密级要求。如果再高一些的话,最好使用独立服务器,或者是自有设备。
恢复密码
下面的任务自然是把每一个网站的密码都改掉或者找回来。由于这次的受灾面实在是太大,小氯制定了如下策略:
第一级:关键服务和身份
这些网站和服务的密码最为关键,涉及到小氯的整个数字生活和数字身份的问题。比如说:
- 代码托管:GitHub、Codeberg 等
- 基础服务:Google、Microsoft、Apple 等
- 社交账户:Bluesky、Fediverse 等
- 域名和 VPS 服务商:Spaceship、RackNerd 等
总体而言,恢复工作还算顺利。Apple 在恢复密码时电脑的 Apple Account 会卡住,需要等一段时间才能恢复;Owu Social G 需要联系管理员通知帮忙重置密码;Spaceship 由于用的是之前的临时域名邮箱,同时小氯好似不似地把这个域名从 Cloudflare 删了导致接不到邮件,都去联系客服了,结果又能收到了,属实是抽象到家了。
此外,小氯还把几个比较实名的账号都注销掉了,改成了更加匿名化的账户,同时把服务转移到了新的账户名下。
此外,唯一没有受到任何影响的,是小氯的校园网 ID。因为为了当牢助教讲课的时候登录教室的设备联网,小氯把密码成了一个自己能记住的字符串(笑哭)。
第二级:次重要服务
这些服务比较重要,但是也没那么重要。比如说发邮件的 Resend、不再使用的阿里邮箱、学信网、各个服务器的面板之类的。
第三级:可抛弃服务和无维护服务
像 ChatGPT、Grok 之类的服务,小氯完全不在乎,反正也是隔一段时间注销了再注册一个。丢了就丢了吧。
还有一些服务比较难以恢复,但是平时也不太需要登录,或者叫所谓的无维护服务。比如说 Algolia 不能在开启 2FA 的情况下恢复密码(难以理解),但小氯的 Algolia Docsearch 其实不需要任何形式的维护,除非小氯再换域名;再比如网易,小氯保留网易邮箱基本上只是为了兼容性,只要应用密码不失效就可以一直鸽。
后续
后续?没后续了。说是丢了四百多个,其实恢复出来到现在,也就用了几十个而已。后面的遇到了再慢慢搞吧。
最后是当事元素娘的一点感想:
系统最大的漏洞永远是人的漏洞,世界上最有效的攻击永远是社工学攻击。
Self Host 不备份,崩溃两行泪。