V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zictos
V2EX  ›  Windows

bitwarden 的数据在 Windows 内存中是明文吗?

  •  
  •   zictos · 3 月 31 日 · 4094 次点击
    bitwarden Windows 桌面版本的数据在内存中是不是明文?
    其他程序能直接获取到各种密码吗?
    那主密码会直接明文保存在内存吗?

    如果关闭 uac 和各种安全软件防护,并且直接使用内置管理员账户 Administrator 进行登录,这样是不是任何程序都能直接读取 bitwarden 的内存并获取到各种明文密码?
    33 条回复    2026-04-01 10:17:40 +08:00
    4seasons
        1
    4seasons  
       3 月 31 日
    不管怎么样,也比你将各种 token 、密钥放到 user 目录中被某狐一锅端了的好

    而且账户、密码这种传统的校验形式,大多时候真正泄漏的地方在于平台和人自身极差的信息保护意识
    luoyide2010
        2
    luoyide2010  
       3 月 31 日
    加密的,有管理员权限,加不加密已经没意义了,只要恶意软件有这个功能就可以窃取你的数据
    vsomeone
        3
    vsomeone  
       3 月 31 日
    我感觉你缺乏对计算机原理的基本理解
    AoEiuV020JP
        4
    AoEiuV020JP  
       3 月 31 日   ❤️ 1
    内存防护不在考虑范围吧,连内存都被入侵了,感觉软件做什么已经没意义了,
    ysc3839
        5
    ysc3839  
       3 月 31 日 via Android
    @AoEiuV020JP 但 KeePass 是会加密内存数据的,只有复制的时候会解密,能防通用内存 dump 攻击,但防不了针对性攻击
    NewYear
        6
    NewYear  
       3 月 31 日
    “是不是任何程序都能直接读取 bitwarden 的内存并获取到各种明文密码?”

    Windows 是可以获得 SYSTEM 权限的,如果不针对永远不会有问题,要针对 bitwarden ,方法很多。
    任何软件都无法防护。

    我举个例子,最没有技术含量的,甚至不用读什么内存。
    你们可能不知道,Windwos 是可以隐藏方式打开窗口的,并且能正常运作和用 api 模拟鼠标键盘来触发,啥意思呢?就是一个编程新手都能做到奥,完全不用读内存,很好写,很容易调试。
    ---

    哦对了,你甚至还加了一个限定“如果关闭 uac 和各种安全软件防护”。
    送你俩字,活该。
    ---

    你都放弃任何防护了,主动放弃防护,你用 bitwarden 的意义是什么呢?
    裤子都主动脱掉,然后嘴里说别人偷窥你。
    NewYear
        7
    NewYear  
       3 月 31 日
    安全防护,从来都是组合拳,安全软件、安全设置、安全意识,缺一不可。

    你能问出这个问题,表面上看是很幼稚,估计有个心思是猜测一下它的底线在哪里,但是你又不了解 Windows 的相关功能,所以期望别人仔细的说给你听。

    但是在他们眼里,你这样的说法,本质上就是对“安全”的否定。

    你只要记住一点,任何软件,拿到最高权限后,在 Windows 上都是可以为所欲为的,在其他操作系统,你给到 root 权限出去,还去掉任何防护,同样是找死行为。
    zictos
        8
    zictos  
    OP
       3 月 31 日
    @NewYear #7
    主要是 uac 经常弹提示太麻烦了,安全软件也是很容易误删文件和出现各种提示,很多时候我操作一些非常信任的软件,安全软件也是偶尔弹一些提示,很烦。

    网上也经常看到有人说自己不装任何安全软件,v 站估计也有不少人会这样的。至于 uac 主要是觉得太麻烦了,而且以前并没有什么安全意识,看到任何不爽都喜欢关掉,所以习惯了,后续都是一装系统就首先关掉 uac 。不过现在更有安全意识了,所以感觉还是应该开启。

    而且 5 楼也说了 KeePass 在内存中的数据似乎更安全。至于模拟键盘和鼠标,如果密码管理器平时都是自动锁定的,那不知道密码的话模拟也没用。当然要是恶意软件平时监控了键盘输入一样不安全,但主要是很多恶意软件可能没有这么强的针对性。
    YsHaNg
        9
    YsHaNg  
       3 月 31 日 via iPhone
    @zictos 大部分你看到的都不算是人
    zictos
        10
    zictos  
    OP
       3 月 31 日
    @YsHaNg #9
    人身攻击吗?
    https://study.congcong.us/t/353905
    具体可以站内搜索“Windows 裸奔”、“Windows 不装任何安全软件”之类的关键词。

    我的 Windows 基本一直裸奔,但没发现过问题,一直很干净,至少明面上看不到什么恶意行为或恶意弹窗或被装恶意插件之类的。很多年不重装系统都一点问题都没有,当然你要说软件会偷偷在后台有恶意行为,那确实是很难说的。

    但我平时基本只在自己信任的渠道下载软件,去下载站的话也不会下载到那些捆绑软件,因为都会仔细区分下载链接。相反有些人的系统不一定是裸奔,但可能使用一段时间后还是会安装上不少有明显恶意行为的恶意软件或捆绑软件。
    FrankAdler
        11
    FrankAdler  
       3 月 31 日 via Android
    最终都是要被还原成明文,你用主密码解锁后可以持续使用整个密码库,那内存中就一定有相关明文,感觉扣这个意义不大吧。
    ntedshen
        12
    ntedshen  
       3 月 31 日
    > 基本一直裸奔,但没发现过问题
    除非你特指你成功卸掉了 mse 和 wd 。。。
    不然你说这个不亚于穿着神装在那嘲讽木剑伤害低。。。
    mse 刚出生就差不多屠了杀软榜,搞得现在做评测都没 top 了,全是并列第一
    BeautifulSoap
        13
    BeautifulSoap  
       3 月 31 日   ❤️ 1
    https://github.com/bitwarden/clients
    就是 bitwarden 的完整客户端代码,让 copilot 、codex 多个模型分别分析了下,结论都是解密后直接将解密的数据放内存里
    codehz
        14
    codehz  
       3 月 31 日
    你这威胁模型就不太对,假设机器被黑的情况下,根本没有任何有效手段反制,即使内存严格加密,只要你还要使用自动填充,就可以在填充的时候从网页上拿到密码。。。某种意义上和 chrome 的 cookie 只用用户密钥加密是一样的模式,只是多了一个启动时再让用户输入密码解密一次的步骤而已
    zictos
        15
    zictos  
    OP
       3 月 31 日   ❤️ 1
    @ntedshen #12
    我 Windows Defender 防护也关掉了,很不喜欢被打扰,有时候还会自动隔离正规软件的文件。

    没发现问题很正常啊,只要平时多注意点,不乱装软件就行,某个软件不太相信又实在短时间要用一下可以使用 wmware 虚拟机。具体可以看我在 10 楼发的链接,很多 Windows 裸奔的。

    其实 Windows 严格意义的破坏性软件很少见了,一般主要就是一些广告或流氓性的插件,一般也是可以卸载的。我确实有遇到过一次勒索软件,但我是在虚拟机测试的,而且这个基本只有国外网站才能下载到,国内网站基本没人搞这个,而且国外不知名网站是否安全更不好判断。像国内很多一些下载站基本随便下载都不会有问题,只要不点到那些捆绑链接,点到正确的下载链接,那就基本不会遇到问题。

    当然也可能软件没有明确的恶意行为,实际又偷偷在后台进行恶意行为,但起码目前来说我是没有遇到什么问题。当然可能我的某些数据已经被某些软件偷偷上传了,但我觉得好像不裸奔的电脑的软件一样可以做得偷偷上传数据吧?毕竟 Windows 对于个人文件的访问本来就没太多限制。

    我平时也偶尔会注意一下进程,异常名称的进程或占用资源高的进程就会引起我的注意,一般都没什么问题,也有正常软件也会突然占用资源高。



    所以我觉得最关键的并不是有没有 uac 和有没有安全软件,毕竟 Windows 本来访问各种个人数据就没有太多权限要求,包括文件和浏览器的很多数据和各种软件的数据,一般各种软件基本都能直接读取,也不需要 uac ;系统文件反倒重要性还更低,大不了重装系统,一般恶意软件也不是为了破坏系统。

    而且大部分愿意安装在电脑上的软件本来就是在一定程度上信任的,所以想使用的话那即便弹出 uac 提示一样会点击“是”。

    所以感觉 Windows 确实是很难保证数据安全的,本来一开始以为本地数据加密了就比较安全了,但密码管理器这种重要软件又让我不得不也注意内存数据是否能随意被访问。Windows 权限差不多的不同进程相互对内存进行访问好像也没太多限制。
    zictos
        16
    zictos  
    OP
       3 月 31 日
    @codehz #14
    主要是觉得不能明确知道电脑有没有被黑,比如可能有软件平时很正常,却偶尔偷偷后台上传数据。如果内存也能加密,那肯定会更安全,除非恶意软件知道主密码并模拟输入和点击登录 bitwarden 软件。我不用浏览器自动填充的,也是感觉这个不太安全。
    反正觉得 Windows 各种保护也没太多意义,毕竟各种个人文件基本随便一个软件都能访问,平时大部分人也很少关心这个问题。具体可以看 15 楼。所以也是寄希望于要是 bitwarden 自身能有更严格的保护就更好了,当然这个也是确实可能很难做到。
    joh
        17
    joh  
       17 天前 via Android
    只要在系统中解密使用密码,就需要有一个地方存放这个明文。
    sddyzm
        18
    sddyzm  
    PRO
       17 天前
    我也好奇
    sddyzm
        19
    sddyzm  
    PRO
       17 天前
    @BeautifulSoap 原来这么直截了当吗?那存放内存的地方有做访问保护吗
    shakaraka
        20
    shakaraka  
    PRO
       17 天前
    这是一个水桶效应问题。只要有一处有短板。那么整个链路都无法保障
    shakaraka
        21
    shakaraka  
    PRO
       17 天前
    就像别人说的,无论你系统做得再好,只要我拿到机房钥匙。一切都白瞎
    MYDB
        22
    MYDB  
       16 天前
    涉及到钱的记纸上,其他论坛 游戏 社交 软件类等账号,没多少利用价值
    ryd994
        23
    ryd994  
       16 天前 via Android
    别钻牛角尖。当你用密码的那一刻就注定是无法解决这个问题的。因为密码必须要在当前系统里处理,而你又假定了当前系统不可信,那你再怎么加密内存都是徒劳。

    TPM/智能卡,不依赖当前系统的 CPU/内存处理。TPM 可以独立执行加解密和签名。密钥从不离开 TPM 。TPM 全称 Trusted Platform Module ,它就是一个可信的环境。

    另外,内存加密技术是有的。Intel 和 AMD 都有内存加密技术。内存只在 CPU 解密。可以防跨进读取和硬件读内存攻击。然而,密码管理器的短板不在其本身的内存加密,因为密码原文始终要传递给浏览器。浏览器显然不能让它访问加密的内存。
    charles0
        24
    charles0  
       16 天前 via iPhone
    @NewYear “可以隐藏方式打开窗口,并且能正常运作和用 API 模拟鼠标键盘”,是这样,但是对于密码管理器的 GUI 并不适用,因为有安全桌面( Secure Desktop )这个东西,你没办法简单地自动化操作安全桌面上的 GUI (比如,KeePass 密码输入、UAC 弹窗)
    charles0
        25
    charles0  
       16 天前 via iPhone
    @NewYear 现代 Windows 上,即使提权到 SYSTEM 或者 BYOVD ,也读取不到一部分内存中敏感数据,包括 LSA 中的凭据、VBS Enclave 中的数据等等,这是通过虚拟机边界保证的
    (前提:启用 VBS+HVCI+CredentialGuard )
    fgwmlhdkkkw
        26
    fgwmlhdkkkw  
       16 天前 via Android
    就算在内存里面的是密文,那只是把获取一个指针变成获取多个指针呀。反编译或者看汇编。道高一尺,魔高一丈。没完没了。
    Rehtt
        27
    Rehtt  
       16 天前 via Android
    @BeautifulSoap 好奇解密密码是在打开密码详情的时候解密还是在解锁密码库后就解密了。假如我只需要使用 A 密码,这个时候内存被抓包了,那么没有点开的 B 密码会不会泄漏
    ff521
        28
    ff521  
       16 天前
    lz 有个地方说的很对,就是你的系统是否处于安全状态是一个未知数
    ff521
        29
    ff521  
       16 天前
    @ff521 就像这次的 npm axios 包投毒事件,如果不是官方公告,你能确定自己可以第一时间发现吗
    alex177027
        30
    alex177027  
       16 天前 via Android
    错误的方法:直接发邮件给 bitwarden 询问
    正确的方法:发到 v 站让大家辩一辩
    likelylee
        31
    likelylee  
       16 天前   ❤️ 1
    加密数据如果你需要使用,可以有几种不同的方案:可以考虑同态加密,数据始终是密文形式存在;可以考虑 tpm 或者 tee 等安全环境,数据在操作系统侧保持密文,只在安全环境中进行解密和计算;最后就是常见用法,数据在磁盘等持久化保存场景下加密,但是使用过程需要读取到内存中解密,有操作系统负责明文数据的声明周期,比如进程隔离、用完的删除或者垃圾回收之类。
    但是,在第三种场景下,只要内存中出现明文,那么一定是可以获取到的,最多只是用什么手段或者需要什么条件而已,比如你说了关 uac ,开管理员访问。
    所以:
    1. 如果你想证明 windows 是垃圾,那么在等同前提下,mac 或者 linux 开 root ,所有操作系统都是垃圾
    2. 如果你想证明 bitwarden 是垃圾,那么 keepass 等也一样需要在内存中出现明文,攻击方一样可以通过内存 dump 的方式拿到,只是 dump 的时间点选好就行
    3. 如果你要推广其他密码管理软件,只要不是在 tee 中运算或者直接调用 tpm 运算,那么都同 2
    4. 如果你只是想在这一对前提条件下证明你是对的,那么你是对的
    5. 如果你真的是想来学习的,那么请考虑至少从基本的安全原理入手,上边很多人都在说,安全防护不是一个单点的要求,是一个很多层或者遵循木桶原理的一个东西。甚至于有些时候需要对环境进行假设抽象才可以继续分析,否则的话直接上大记忆恢复术,什么防护都干不过啊...
    kingfire
        32
    kingfire  
       16 天前
    可以使用 yubikey 等硬件密钥
    ndd200
        33
    ndd200  
       16 天前
    楼主说了那么多,感觉没有抓住问题的关键。
    其实按他想象的使用场景,都已经放弃抵抗了,当输入主密码去解锁的时候,后台程序能获取主密码,其他的数据加不加密没有任何意义,整个库都能拉下来解密。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 19:03 · PVG 03:03 · LAX 12:03 · JFK 15:03
    ♥ Do have faith in what you're doing.