避免Web3钓鱼诈骗:如何识别和预防攻击
Web3 Phishing 是一种针对加密货币用户的网络欺骗手段,通过创建伪装成正式网站的假网站来窃取用户的授权、签名和加密货币资产。随着 Web3.0 技术的发展,新型的 Web3 钓鱼骗局也在不断出现。以下,我们将介绍新型 web3 钓鱼攻击方式:Approval phishing、Uniswap permit 2 phishing、Claim phishing、Model phishing。并提供帮助用户识别和预防这些攻击的有效措施:针对 Approval 钓鱼的预防措施,识别 permit 2 中的签名,防止 Claim 钓鱼攻击,防止模态钓鱼攻击。
-
攻击者部署了一个假的ERC-20 代币合约,修改了 approve 函数;
-
攻击者手动伪造了大批链上地址的授权,并提醒用户取消授权;
-
当用户收到该提醒并点击取消授权时,会触发发送交易的操作。这个交易将导致 token 被铸造到合约部署者的钱包内。
increaseAllowance 授权钓鱼交易链接
https://arbiscan.io/tx/0xd598336fac79123952319c9cd9cc62aa275162ce5f39d08ccac0c5e6ef0538e5
“撤销授权”钓鱼交易链接https://etherscan.io/tx/0xd4d606caddebf185dc6902ffcec78f3cc915826e1c0e37319d407d01681980ab
Uniswap permit 2 允许跨不同应用共享和管理 token 授权。 用户只需在一次交易中完成授权和交易,减少交易的 gas 费用,简化交易操作流程。但是,Permit 2 则将用户的操作变为了链下签名,对于用户来说,链下签名是最容易放下防备的环节,而绝大多数人并不会仔细检查签名的内容也并不理解签名的内容。
Uniswap permit 2 签名钓鱼攻击是如何发生的?
Permit 2 钓鱼交易链接
https://etherscan.io/tx/0x1d8fa25f8f16d52cd4c5716e0cefd9b1cdbbbc060901cea223bab9de79b17ea3
Claim 钓鱼攻击通过伪造可信实体的请求,欺骗用户提供个人信息、登录凭据或访问权限。这些 Claim 钓鱼合约通常伪装成零地址来骗取用户信任,以此来调取用户的加密资产。
Claim 钓鱼攻击是如何发生的?
调用 Claim 函数时,受害者所持有的 token 将在 internal transaction 中被转移至 hub contract。
Multicall 函数用来转移受害者已批准的 token。
claim 钓鱼交易链接
https://etherscan.io/tx/0xfe70f1b0a92e719bff0d291b7a79987e6e93ed129d52be8e8918c2b9acb1f3b0
Web3.0 加密货币钱包的某些用户界面(UI)元素可以被攻击者控制用来进行网络钓鱼攻击,这种攻击方式被称为 Modal Phishing。Web3.0 货币钱包上的典型模态设计通常提供供用户检查签名等请求的必要信息,以及批准或拒绝请求的按钮。
我们以 Metamask 钱包为例,介绍模态钓鱼攻击是如何发生的?
如果我们理解授权操作的具体内容,并从正确的渠道查询我们的授权信息、取消授权,就会有效避免 approval、increaseAllowance、撤销授权的钓鱼骗局。
以下内容可以帮助用户理解授权操作的具体内容:
用户在 approval 时,需要考虑授权金额、授权币种和授权地址。通过指定授权金额和币种,用户可以限制被授权方能够从自己的账户中转移的资产数量,防止授权到与这次交互无关的币种。用户还需要仔细检查授权地址,多渠道验证该地址,确保将授权给正确的地址。
如果以上结果是用户期望的,就可以进行正式授权了。
以下内容是追踪链上授权信息,撤销授权信息的具体步骤:
用户在完成授权之后,可以定期追踪 token approval 情况,也可撤销相关授权。Etherscan, BscScan and Polygonscan区块链浏览器中有 token approval checker Function。
如果我们能够理解、识别并仔细检查签名的具体内容,就可以有效避免 permit 2 钓鱼骗局。
签名格式通常包含 Owner、Spender、value、nonce 和 deadline 这几个关键字段,分别是指:
我们建议用户可以根据自己的需求设置特定的 value 和 deadline,而不是选择默认的最大值。
用户在调用 Uniswap permit 2 合约之前,可以模拟相关授权函数,了解授权细节。点击 Simulate 按钮。
选择 approve 函数,填写以下参数,模拟用户向 permit 2 合约授权。
为了避免落入 Claim 钓鱼陷阱,我们需要识别钓鱼合约地址,他们经常伪装成零地址来放松用户的警惕性。以下列举了一些用于 claim 钓鱼诈骗的 Scam contract。我们在交易时,需要注意地址前后是“ 0000 ”的地址。
https://etherscan.io/address/0x0000b514c923f55180fc12428e05695666620000
https://etherscan.io/address/0x0000438e0f00fc35dff19d0062608057a1d20000
https://etherscan.io/address/0x0000a4998724e52f0886edff693aca33f9900000
https://etherscan.io/address/0x000062accd1a9d62ef428ec86ca3dd4f45120000
https://etherscan.io/address/0x000038f1e0c4417a3650c3f9a9a920b2e52e0000
https://etherscan.io/address/0x000056c346441ef8065e56b0cddd43fdec100000
Claim 钓鱼攻击本质也是获取用户的 token 授权,所以,我们仍然需要时刻关注授权情况。
模态钓鱼攻击发生的根本原因是钱包应用程序没有彻底验证所呈现的 UI 元素的合法性。为了避免这种钓鱼攻击,钱包应用程序的开发者应该始终假设外部传入的数据是不可信的。用户也可按照上述方式检查自己的签名信息和授权信息。
综上所述,我们详细介绍了四种新型的Web3钓鱼攻击方式,并提供了相应的识别和预防措施。除了提高用户的警惕性外,我们还建议用户深入了解授权和签名的相关内容,并定期检查自己的授权情况,及时撤销不必要的授权。此外,我们强调了不随意签名的重要性,以防止攻击者获取我们的签名并滥用。如果您对Web3安全或智能合约审计有任何其他问题,欢迎随时与我们联系。我们将竭诚为您提供帮助。