近日,一个存在已久的开放问题 ——「DApp 过度授权」在以太坊社区中被重新提及,各大媒体、钱包以及 DApp 项目方都参与了这次讨论。imToken 作为主流的以太坊钱包,对该问题始终保持着高度关注,同时在深入地探讨与研究中寻找更加合理的解决方案。

图片[1] - 一文解读imToken如何应对DApp过度授权问题?

什么是「DApp 过度授权」?

用户与 DApp 进行涉及数字资产的交互时,首先需要授权(approve),为什么要授权操作呢?我们举一个典型的案例 :

  • Alice 希望在 Compound 上存款 100 Dai,获得不错的收益。
  • 那么 Alice 需要将 Dai 授权给 Compound 借贷合约,让借贷合约拥有转移 Alice Dai 资产的能力,以便后续可以完成 Dai 与 cDai(Compound 借贷凭证)的原子兑换。

DApp 开发者为了避免用户反复授权,一般会默认设置授权最大数量的代币给智能合约。但这样的处理也明显暴露风险,如果智能合约出现漏洞或合约管理员作恶,那么用户的代币将存在丢失的风险,这就是「DApp 过度授权」带来的问题。

「DApp 过度授权」是技术社区存在已久的公开问题,而当前 DeFi 的兴起改变了安全和易用间的平衡,对此我们需要重新考虑这个问题。而想要解决它,需要钱包, DApp 开发者与用户多方参与,共同改进。

imToken目前是如何应对的?

访问DApp

首先,我们会从源头掐断恶意转移用户资产行为发生的可能。

DApp 浏览器是一个开放的浏览器,用户可以直接访问上架应用,也可以输入 URL 访问任意 DApp。我们会针对存在潜在问题的应用给予风险提示,以免用户上当受骗。

图片[2] - 一文解读imToken如何应对DApp过度授权问题?

访问钱包地址

其次,当 DApp 请求用户钱包地址时需要经过用户授权确认 ,以免用户地址隐私泄漏,让有问题的 DApp 有机可乘。

图片[3] - 一文解读imToken如何应对DApp过度授权问题?

授权转账数量

最后,当 DApp 要求用户代币授权时,imToken 也会给予明确的授权信息,以便用户清晰了解授权上下文,甚至进一步编辑授权数量,降低授权风险。

注:授权功能将于近期上线

图片[4] - 一文解读imToken如何应对DApp过度授权问题?

授权管理DApp

此外,imToken 还在 DApp 浏览器中提供了代币授权管理的相关 DApp,打开 DApp 浏览器,在「工具」类目下找到「Approved Zone」,点击进入即可轻松管理已授权的第三方 DApp 权限,随时关闭不再使用的应用权限,保护自己的资产安全。

更长远考虑

近期 imToken 除了以上的处理方案,也会针对授权管理问题进行更深入地优化。将通过支持批量签名功能,来鼓励 DApp 通过按需授权的方法调用合约。

关于批量签名,我们即将上线的 ETH 加油站就可以帮助用户通过一次「交易确认」完成授权和代币兑换,避免过度授权的问题。

图片[5] - 一文解读imToken如何应对DApp过度授权问题?

imToken 非常乐意与大家一起探讨,寻求更好的解决方案。如果你有任何想法,欢迎跟我们沟通。

参考链接

[1]https://www.coindesk.com/long-festering-defi-dapp-bug-still-not-fixed-by-industry

[2]https://zengo.com/badapprove-defi-security/

[3]https://medium.com/argenthq/argent-solving-dapps-dirty-secret-3ddb4f741a6

[4]https://medium.com/ethex-market/erc20-approve-allow-explained-88d6de921ce9