98 lines
6.3 KiB
Markdown
98 lines
6.3 KiB
Markdown
|
---
|
|||
|
title: 我把Vaultwarden主密码搞丢了
|
|||
|
date: 2025-03-12
|
|||
|
slug: i-locked-myself-out-of-vaultwarden
|
|||
|
featuredImage:
|
|||
|
categories:
|
|||
|
- 逍遥游
|
|||
|
tags:
|
|||
|
- Vaultwarden
|
|||
|
- 灾备
|
|||
|
- 自托管
|
|||
|
series:
|
|||
|
summary: 小氯你这个笨蛋笨蛋笨蛋笨蛋笨蛋!
|
|||
|
description: 本文介绍了作者在修改Vaultwarden邮箱地址时,因操作不当导致无法访问密码库的经历。作者将主密码存放在Vaultwarden内部,又没有备份,结果因Vaultwarden的端到端加密特性而无法恢复约400个密码。文章同时记录了作者重新部署Vaultwarden的过程,以及按重要性分为三级的密码恢复策略。作者通过自嘲幽默的方式分享了这次事件,并在结尾强调了备份的重要性和"人"是系统最大安全漏洞的观点。
|
|||
|
wikilinks:
|
|||
|
---
|
|||
|
各位老友,晚上好。这里是 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 不备份,崩溃两行泪。
|