
浏览器扩展钱包很方便:它只需一次点击即可使用,可以内联签署交易,并通过注入式提供者或 WalletConnect 连接到 dapps。但这种便利是有代价的。扩展是运行在你浏览器中的代码,拥有查看和更改你所访问页面的权限——攻击者深知这一点。如果你自我托管资产,浏览器就是你威胁模型的一部分,而扩展卫生是你能养成的成本最低、收益最高的习惯之一。
本指南将介绍为什么扩展是如此诱人的攻击目标,哪几条规则能缩小你的攻击面,LavaMoat 的作用以及 SSP 的扩展为何采用它构建,还有 SSP 的 2/2 multisig 如何为即便完全沦陷的扩展提供兜底防护。刚接触这个领域?先从浏览器扩展钱包详解开始,然后再回来阅读。
为什么浏览器扩展是诱人的攻击目标
扩展以广泛的权限运行。典型的钱包扩展可以读取和修改你所加载页面的内容、监视你输入的内容,并访问剪贴板。这些能力正是钱包注入提供者和弹出签名提示所需要的——也正是攻击者想要的。
想一想,恶意或被入侵的扩展无需触碰你的助记词就能做到哪些事:
- 替换复制的地址。 你复制了一个收款地址;扩展改写了剪贴板,于是你粘贴出来的地址其实属于攻击者。这种剪贴板劫持手法由来已久、可靠且难以察觉。
- 向 dapp 注入脚本。 它可以篡改你看到的页面,在显示你预期数值的同时,悄悄更改交易的金额或目标地址。
- 读取你屏幕上的内容。 余额、地址以及页面上的任何其他信息都可被读取。结合钓鱼页面,这些情报会让诱饵显得更加可信——参见针对加密用户的钓鱼攻击。
其中的经济账很残酷:一个热门扩展可以一次触达数百万用户,因此入侵单个发布者就值得投入巨大的精力。最危险的情况并不是你误装的假冒扩展——而是你早已信任的合法扩展在某次更新后变得恶意。
卫生规则
你无法让浏览器变得绝对安全,但你可以让它成为一个糟糕的攻击目标。原则就是最小权限:更少的扩展、更窄的权限,以及把你的加密浏览器与其他一切干净地隔离开。
尽量少装扩展
每个扩展都是一块攻击面,也是一项并非你自己编写的供应链依赖。在能接受的前提下尽量少装,优先选择有长期良好记录的知名项目,并删除你已经不再使用的任何扩展。一个钱包加上一个硬件钱包桥接就足够了;十几个生产力插件与你的资金共用一个浏览器则远远不够安全。
使用专用的浏览器配置文件
创建一个单独的浏览器配置文件——或者干脆一个单独的浏览器——只用于加密用途,并且只安装你的钱包扩展。优惠券查找器、截图工具和那个随手装的“AI”侧边栏都留在你的日常配置文件里,这样它们就无法在你签署交易时读取页面。这一个改变几乎不费力气,就能消除大部分日常风险。
审查权限和更新
在安装或更新扩展时,请认真阅读权限提示,而不是一路点过去。“读取并更改你在所有网站上的所有数据”对钱包来说是正常的,但对计算器来说就令人警觉。自动更新是一个实实在在的供应链风险:你周一审查过的构建版本,未必就是周四发布的那个版本,而被入侵的维护者或依赖项可以把恶意代码直接推送到你的浏览器。你无法手动审查每一次更新,所以应优先选择那些安全模型默认自身依赖可能变坏的扩展——而这正是 LavaMoat 所提供的。关于这一更广泛的模式,请阅读供应链攻击与确定性构建。
识别假冒钱包扩展
应用商店里满是仿冒品:名字一模一样、抄来的图标、捏造的评价,外加一个你从未听说过的发布者。假冒钱包扩展唯一的任务就是窃取你的助记词或替换交易。在安装之前,请核实发布者是否与项目官方网站一致,查看安装量和历史记录,并通过项目本身提供的下载链接安装,而不是通过商店搜索。Chrome Web Store 计划政策禁止冒充行为,但执行往往滞后于发布——把商店当作起点,而非保证。另外,永远不要把你的助记词输入到扩展的弹窗里。
LavaMoat 的作用(以及 SSP 为何使用它)
现代 Web 应用由数百个第三方包组装而成,其中任何一个都可能被入侵。LavaMoat 是一套开源工具集,专门针对这一点加固 JavaScript:它把每个第三方依赖项沙箱化到各自受限的环境中,并强制执行一套明确的策略,规定每个包可以访问什么。一个被投毒的包再也无法横跨整个应用去读取你的密钥、篡改交易或窃取数据——它被限制在其策略所允许的狭窄范围内。
这一点很重要,因为供应链攻击针对的是依赖项,而不是那个招牌项目本身。SSP 的浏览器扩展采用 LavaMoat 构建,因此即便某个传递依赖在上游被入侵,影响范围也会被控制住,而不会把你的钱包钥匙拱手相让。这是把纵深防御应用到你个人无法审计的那一个风险上:别人写的代码。关于这类攻击为何值得拥有专门的应对手册,OWASP 在其指南中整理了供应链与注入风险,详见 owasp.org。
SSP 的 2/2 在哪里为恶意扩展兜底
下面是一个实在而关键的要点。假设最坏的情况还是发生了,你的浏览器扩展彻底沦陷。它也仍然只能完成一半的工作。
SSP 是一个 2/2 multisig。每笔交易都需要两个独立的签名——一个来自浏览器扩展,另一个来自你手机上的 SSP Key,那是一台拥有自己屏幕的独立设备。被入侵的扩展可以构建一笔恶意交易,但它无法生成第二个签名。当请求到达你的手机时,你会在一个扩展无法控制的界面上看到真实的目标地址和金额,然后将其拒绝。攻击者手里只剩下一笔永远不会被广播的交易上的一个签名。
这是一道真实、结构性的兜底防线,而不是营销话术——这也正是为什么两个独立的批准界面胜过一个。但它同样不是你放任浏览器藏污纳垢的许可证。第二把钥匙保护的是签名那一刻;它无法阻止你亲手确认的剪贴板替换,也无法弥补你在其他地方的坏习惯。把它当作你最后一道防线,而不是唯一一道。想了解即便是 multisig 也有哪些局限,请阅读Multisig 的失效模式以及 SSP 如何缓解和如果你的一把钥匙被入侵会发生什么。
快速的扩展审计
今天花五分钟做一遍,之后每季度做一次:
- 打开浏览器的扩展页面,列出所有已安装的扩展。
- 删除过去一个月里你没有用过的每一个扩展。
- 对于保留下来的每一个扩展,确认其发布者与项目官方网站一致。
- 检查每个扩展所持有的权限,卸载任何就其用途而言权限过大的扩展。
- 如果你的钱包还没在专用的、仅用于加密的配置文件里,就把它迁过去。
- 确认你的钱包扩展来自官方来源,并在可用的情况下采用 LavaMoat 加固。
继续前行
浏览器卫生只是其中一层。把它与钓鱼防范意识、稳妥的助记词存储,以及对钱包密钥如何拆分的清晰理解搭配起来。良好的习惯加上 SSP 的 2/2 架构,意味着单个恶意扩展只是一点麻烦,而非一场灾难——但这些习惯终究得是你自己的。


