1
0
Fork 0
blog/content/posts/逍遥游/我把Vaultwarden主密码搞丢了.md

98 lines
No EOL
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 元素娘干过的迄今为止最蠢的事情。当事元素娘觉得世界上不可能还有人比自己还蠢了。
![i-am-the-biggest-idiot|319](https://img.viento.cc/20250314-i-am-the-biggest-idiot.avif)
## 改邮箱引发的惨剧
事情是这样的。
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 不备份,崩溃两行泪。