CVE-2026-43913Vaultwarden 是一个用 Rust 编写的 Bitwarden 兼容服务器。在 1.35.5 版本之前,该系统存在一个严重的安全漏洞,允许尚未完成最终确认流程的组织所有者清空整个组织的 Vault 数据库。该漏洞产生的原因在于组织邀请流程的验证逻辑存在缺陷。正常情况下,组织邀请包含两个步骤:用户接受邀请使状态变为“Accepted”,以及现有所有者进行确认使状态升级为“Confirmed”。然而,用于删除数据的 POST /api/ciphers/purge 接口仅检查了用户的成员类型是否为“Owner”,而未验证其成员状态是否为“Confirmed”。因此,任何已接受邀请但尚未被正式确认的认证用户,都可以利用此接口硬删除组织内所有的密码条目和附件,导致立即发生全组织范围内的数据丢失。
该漏洞属于业务逻辑层面的权限验证绕过。在 Vaultwarden 的代码实现中,组织成员的权限控制依赖于两个关键维度:成员类型和成员状态。当攻击者被邀请为组织所有者并点击接受后,其成员类型被标记为 Owner,但成员状态仅处于 Accepted 阶段,并未达到 Confirmed 阶段。此时,攻击者虽然拥有有效的认证令牌,但在逻辑上不应拥有完全的管理权限。漏洞触发的关键在于 /api/ciphers/purge 端点的逻辑实现。该端点在处理请求时,仅校验了请求头中的认证信息以及数据库中该用户的 membership_type 字段是否等于 Owner。由于缺失了对 membership_status 字段是否等于 Confirmed 的校验,系统错误地将一个“未确认的所有者”视为“完全授权的所有者”。攻击者利用这个逻辑漏洞,在管理员完成确认之前的短暂时间窗口内,向该端点发送 POST 请求。服务器验证通过后,将执行数据库层面的硬删除操作,移除该组织关联的所有 ciphers 和 attachments 记录。