Web3安全插件工作原理及使用建议

Ben Law热度: 14532

建立钓鱼URL的数据库,当用户访问钓鱼网站时进行拦截。

原文作者:Ben Law

原文来源:medium

原文标题:钱包卫士:Web3安全插件工作原理

在DeFi的黑暗森林中,用户每天面临着各种安全威胁。据报道每年有超过十亿美元的加密资产被骗走。用户迫切地需要一种钱包卫士来守护资产。上篇文章提到了如 FoxEye这种Web3安全插件,本帖来解释下它们的工作原理。

当谈到反钓鱼时,一个常见的安全模型是基于URL的反钓鱼,因为大部分攻击向量都依赖钓鱼网站,如:

  • 恶意合约
  • 高风险代币
  • 授权漏洞
  • 假NFT
  • 危险签名
  • 等等

面向URL的反钓鱼

建立钓鱼URL的数据库,当用户访问钓鱼网站时进行拦截。

ethereum面向URL的反钓鱼只能建立在静态的URL黑名单之上(虽然这个名单可以更新),这种措施有用但比较老套也不够全面:

  • 不完备性: 并不能涵盖所有的钓鱼网站。新生成的钓鱼网站是盲区。
  • 滞后性: 在用户反馈(应该已经受害了)和黑名单更新之间有一定延迟。
  • 局限性: 对DNS劫持等其他攻击手段无效。

面向URL的反钓鱼不能满足用户需求,因为它覆盖的不是最终的安全敞口:待签名交易(或消息)。

面向交易的反钓鱼

殊途同归,所有的钓鱼都需要发起交易。如果我们能动态地解析交易或签名(签名也需要之后在本地或远程交易),并拦截有害的那一部分,就可以实现用户端的安全闭环。

ethereum典型的交易过程

本段包含一小部分代码,但不理解代码也可以阅读。标准的交易过程为:

  1. dApp前端通过 ethereum.request调用 eth_sendTransaction 向钱包发送交易信息。 params 包含所有的交易参数。

ethereum.request({

method: ‘eth_sendTransaction’,

params: [{…, to, data, …}]

})

  1. 钱包要求用户对交易签名。
  2. 将签过名的交易发送到以太坊节点上。

ethereumHook交易

Hook的意思是钩子。在编程中我们把『拦截系统或软件的函数、信息、事件,并增加或改变其功能』的技术称为hook。

如果我们能hook这个eth_sendTransaction方法,那么就能在其被发送至用户钱包签名前对其进行审查。

ethereum在JavaScript中,我们使用基础对象Proxy来完成hook。

创建一个对 ethereum.request(其中包含eth_sendTransaction)的Proxy。

const proxy = new Proxy(window.ethereum.request, this.proxyHandler);

window.ethereum.request = proxy;

其中一个参数 this.proxyHandler 中声明了监听到eth_sendTransaction后如何处理,具体细节按下不表,大体为:

  1. 拦截交易对象。
  2. 发送至云端或在本地进行分析。
  3. 若发现风险行为,警示用户。

显然,第二步是这一流程里最关键和最有技术含量的,包括但不限于:

  • 静态分析函数selector,交互地址等
  • 调用栈的动态分析
  • 链式合约扫描
  • 代币检测
  • 交易模拟
  • AML库
  • 签名分析
  • 恶意合约库
  • 等等…

每一条都可以单独写一篇文章,篇幅所限这里就不展开了。

Tips

最后有几条使用安全插件的几条建议:

  • 仅从官网链接下载。虽然我还没见到仿冒的Web3安全插件,但我可以说它们一定会来的。
  • 仅使用开源的插件。Hook是一种很有威力的技术,它不仅能拦截你的交易,也能修改之。你肯定不想后院起火吧。
  • 使用有更多功能的插件。简单即弱小。
  • 不要在一个Chrome窗口里安装多个安全插件,他们互相之间可能会冲突。如果想体验多个插件,可以装一卸一,或使用Chrome的多用户功能。
  • 谨记安全是一种动态追求。风险也在不断变化之中。虽然安全插件能极大提升你的安全水平,但无法保证100%安全。安装安全插件的同时也要提升自己的安全意识。


声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。
关键字:ethereum钱包