News Hacker|极客洞察

⚠️Obsidian共享Vault钓鱼植入RAT,插件全权限引安全争议
弹三次窗,恶意代码就会自觉停手吗?

🎯 讨论背景

Obsidian 是一款以本地 Markdown vault(笔记文件夹)为中心的笔记应用,支持 community plugins(社区插件)和 shared vault(可同步共享的笔记库)。这次被讨论的文章讲的是一场针对 finance and crypto professionals 的攻击:受害者被引导打开一个陌生人分享的 vault,并在多层提示下启用插件同步,从而让预置的恶意插件运行。标题里写的 RAT 指 remote access trojan(远程控制木马),而评论里争论的核心是这究竟算 Obsidian 被漏洞利用,还是纯粹的 social engineering。由于 Obsidian 的插件几乎等同于宿主进程的高权限代码,讨论很快扩展到 macOS 的 Gatekeeper、Windows 的 AppContainer、Linux 的 bwrap 和 Flatpak 等隔离方案。

📌 讨论焦点

标题与事件性质:更像社会工程而非供应链漏洞

很多评论认为这起事件更像是钓鱼式 social engineering,而不是传统意义上的 supply-chain 攻击。受害者要先接受陌生人分享的 vault,再手动退出 restricted mode、信任共享 vault、启用插件同步,等于连续点过多道确认。多名评论者指出,真正被“abused”的是 Obsidian 的共享与插件分发机制,而不是某个已上架插件本身。也有人强调文章描述的是 proof of concept,目前没有看到真实受害报告。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]

插件模型天生高权限,缺少沙箱与权限隔离

评论集中指出,Obsidian 官方文档已经写明 community plugins 会继承应用权限,能读本地文件、连互联网、甚至启动外部程序。也因此,很多人认为这不是一个被单点“攻破”的漏洞,而是把任意代码直接放进主程序里运行的设计结果。有人批评安全页面更像安抚用户的宣传页,花大量篇幅强调审查和社区自律,却弱化了实际 blast radius。还有人提到,插件打包文件和 GitHub release artifact 分离后,审计成本会进一步上升。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]

开放插件生态是核心价值,限制会伤可玩性

另一派则认为,这种高权限正是 Obsidian 的价值所在,因为插件能带来 git、备份、pandoc 转换、外部自动化和大量 UI 扩展。评论把它类比成 Vim、Blender、WoW addons、Chrome extensions:越强大的可扩展性,越难完全避免坏插件。有人主张不要把工具 toyify,否则会失去可玩性和效率。比较温和的说法是可以继续保留强能力,但给普通用户增加更多警告和默认保护。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]

更好的默认设置与权限模型

也有不少人认为,核心应用应该先把常见需求做进内置功能,这样用户就不必依赖第三方代码。评论里举了 Dataview、folder notes、recent files、calendar、链接预览、搜索增强和更好的表格与排版等例子。另一条主线是要有像 iOS/Android 那样的细粒度权限模型,插件必须声明需求并由系统强制执行,而不是靠用户自己判断。很多人说自己只用零个或一个经过审查的插件,说明“没插件也能用”的用户并不少。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]

可行方案:OS 沙箱、隔离运行时与签名审计

还有一类讨论集中在具体怎么做隔离。有人已经用 bwrap、network namespace、Gatekeeper、AppContainer、Sandboxie、Flatpak 或 macOS 权限把 Obsidian 包起来,只给它必要的目录和网络。也有人建议把插件放进 WASM/WASI 或其他嵌入式 runtime,再通过 Lua、Rhai 之类的解释器暴露受限 API,而不是让插件直接碰宿主进程。更务实的提案包括在 manifest 里声明允许访问的 URL,以及用 artifact attestation 或目录评分来帮助用户验证插件发布物。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]

开源/闭源争论偏题化

另一条偏题但很长的争论是 open source。有人要求把客户端源码公开,觉得这样才能建立信任,但反驳者指出大多数插件本来就是开源的,问题在运行时权限,不在源码可见性。Obsidian 团队则解释这是一个只有七个人的小团队,开源工具长期没法养活公司,他们更看重把核心能力、插件安全和自建插件工具分三条线推进。也有人直接指出这类开源与闭源的争论正在 hijack 话题。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]

📚 术语解释

sandbox / sandboxing: 把程序限制在隔离环境里运行,减少它能访问的文件、网络和系统资源。

RAT: remote access trojan,能让攻击者远程控制受害机器的木马。

RCE: remote code execution,指攻击者在目标系统上执行任意代码的能力。

shared vault: Obsidian 中可被他人分享或同步导入的笔记库,可能连同插件配置一起分发。

AppContainer: Windows 的应用隔离容器,用来限制程序权限和可访问资源。

WASM/WASI: WebAssembly 及其系统接口,常被用作更可控的插件或脚本运行环境。

bwrap: Bubblewrap,Linux 上常见的进程沙箱封装工具。

artifact attestation: 对构建产物做签名或证明,帮助验证发布二进制是否来自可信构建流程。