okx

从一个钱包被盗的案例,探讨Web 3的安全指南

时间:2022-02-18|浏览:526

事件
2022年元旦假期的某个早晨,小 C 准备写代码,继续测试 Web3js 链上合同交易。突然发现自己的测试账号(Bsc 链)在 MetaMask 归零,明明前一天晚上账户里有 100usd,然后查转账发现:
钱没了,钱去哪了?
背景
技术背景的小 C,最近,我正在学习区块链开发。我是一名专业开发人员,非常谨慎。我通常在测试网络上运行。运行后,我将在官方网络上部署。然而,我没有意识到整个行业仍处于相对混乱的阶段,粗心大意,习惯方便,造成损失。
损失是如何造成的?
2021年的最后一天,小 C 偶然看到一个账号很有意思(这个账号有很多活跃的交易),就跟着他的一些链上交易,然后看到一个很有意思的项目(年化收益率很高),然后把自己的 连接起来。MetaMask,然后鬼使神差进行了 approve,因为一般 Web3 项目就是这个过程,approve 然后转账就结束了。
然而,一个令人震惊的场景出现了:点击后,整个网站突然卡住(事实上,在卡住期间,盗窃者转移了钱),没有反应,小 C 当时没当真,关掉了网站,做了其他事情。
大约一天后,小 C 回来开发的时候,发现账上的钱都没了,查了历史记录,发现账上的余额都转走了。
回顾过程
盗取者是怎么把小 C 账户上的钱都转了?
现象:只要你 approve 理论上,无需私钥也可以转移相应的钱。
小 C 在钓鱼网站源,大概是在钓鱼网站 approve 出了问题,所以追溯转账记录。
先是 approve(授权)一份合同授权钓鱼合同可以在账户中 BUSD 操作,没有数量限制。
为什么是 BUSD 呢?小 C 回想起来,一进入这个钓鱼站,就默认选择了 BUSD ,估计盗窃者在浏览网站链接钱包后,已经筛选出账户中钱最多的 token 了。
然后当小 C 认为这是一 swap 合同年化收入高。准备先试试的时候,要按照常规流程进行 approve。approve 结束后,网站直接卡住了。
后来经过追溯,授权后几十秒左右,合同直接触发了一个转账操作,直接触发了 BUSD token 转走了。
后来去查授权信息
基本上 MetaMask 默认授权为:
我们知道的是 1.157920892373162 乘以 10 59 次方。基本上可以理解为无限转账,也就是授权操作,可以让合同无限操纵我账号的 token。看到这里感觉背后很凉,因为之前点过很多次 approve 不会去看。
然后黑客操纵一个可以控制合同方法的钱包地址,发起合同转账方法,把钱转走。所以小伙伴点了 metamask 授权时一定要小心。
小 C 查了一下,盗窃者现在这个账号大概已经有 3了w 美金的 token ,还有源源不断的受害者在转账。但面对区块链,没有办法找到黑客是谁。
问题环节
问题在哪里?
因为我最近在学区块链。C 大概理清了这种钓鱼的逻辑方式,害人之心不可或缺,防人之心不可或缺。有兴趣可以了解一下:
从一个钱包被盗的案例,探讨Web 3的安全指南
正常转账
案例1:直接用户间转账 A 用户向 B 用户转账 BUSD
正常合同检查以下逻辑
1)判断 A 用户账户余额是否足够; 2)是否 A 用户发起的转账
正常合同兑换
我们通常使用 pancakeswap、uniswap 等待交换过程
案例二:通过 swap 进行 token 兑换 A 用户进行 token 兑换(BUSD 兑换 WBNB)判断流程 合同:
1)A 用户账户余额是否足够 BUSD,(假设授权 swap 合同可以操作 A 账户的 BUSDtoken)
2)swap 合约取 A 账户下的 500BUSD 放入 swap 合约池(假设汇率为 1:500)
3)合同成功后再向 A 账户转入 1BNB
注意第二、三点,由合同控制token 操作。也就是说,合同可以绕过我们直接在我们账户下发起 token 的操作。
钓鱼合约
正常转账时,转账方和合同执行的转账方应为同一人,应由同一人发起。我转账的交易不是同一个地址。据推测,合同的执行应由可以执行钓鱼合同的钱包地址控制,然后授权给钓鱼合同中的 BUSD 转走了。
查看钓鱼合同,不出所料,钓鱼合同是加密合同。但想想也不难。我学了一点 Solidity 的人都知道,在定义合同时,多设置几个 Admin 或者 Owner 就可以了。
所以以后一定要注意项目方的背书,不要随便授权不知道的项目!!!
安全建议
因此,小 C 搜索了一些有用的建议和方法,看到了很多血淋淋的教训。
您可以根据自己的需要选择一些方法。
1)不要共用密钥
我以前看过一篇帖子一个助记词生成多个账号,不推荐,因为很可能是一锅端。
2)密钥离线保存
因为现在有很多剪贴工具输入法将您的剪贴记录上传到云中,如果您直接复制,如果云泄漏,您的密钥将直接丢失。
我的建议是在生成后第一次复制到笔记本上。当然,如果你把它抄到笔记本上,你也可以参考我典来加密密钥,比如 a 用 1 代替,b 用 2 代替,1 用 a 替换,以确保即使有人看到你的纸质密钥,你也不能移动你的数字资产。
3)开发与测试分开(空投与主账隔离)
安装 2 浏览器,一个可以是 chrome,一个是 brave。管理你的主钱包。另一个可以参与空投、各种链操作等
4)不要下载来历不明的软件
不要去用 baidu 这些下载来源不明的软件,我看到下载盗版的案例 metamask,直接破产。必须在正式地址下载。如果条件允许,可以参考 google play。chrome web store 等
5)立即检查您的授权
以下是检查网站,debank 没有开源,但 UI 互动比较好,后续有开源。让我们自己选择。
每次唤起 MetaMask 一定要多看授权,不要像我现在这样无脑授权下一步。
6)授权前确认合同安全
可采用慢雾合同审计功能。
还可以看合同是否开源,如果开源,需要确认合同是否可升级等。
7)空投和福利时注意安全
用小号领取,不要用大号,授权时可以设定额度!!!
8)警惕社工入侵,小心 Discord 私下谈论你的陌生人
比如 Discord 或者 Telegram,有人认识你几天,说要带你赚钱拿空投,让你安装他发给你的软件并登录。这个 99.99% 你会赔钱。账户被盗。
特别地,Discord 里面,进 NFT 的官方 Discord,会有人私下和你聊天,告诉你你得到了白名单,附上一个 mint 链接。骗子会把头像和名字改成官方的样子,但实际上是把他和你拉成一个小组。
事实上,只要你不贪婪,这个骗局就很容易看穿,通常会告诉你在几个小时内 mint,数量 1-10.许多热门项目的白名单 mint 一两个不错,这个顶格 10 也有时间限制。
会有骗子模仿项目官网做假网站,私信给项目 Server 里面的人,让他们来 mint.
还有朋友opensea 买了假 NFT 后来发现不是官方,过了几天那个 NFT 从账户上消失了 但是已经扣了。...(怎么发现?看链条 和官方 discord 官方 Opensea 网址 )
还有假的 collab.land 骗钱包密码,给大 v 空投然后被称为大 v 买了那个 NFT/token.

热点:MetaMask NFT token token. 区块链 区块链开发 数字资产 钱包

欧易

欧易(OKX)

用戶喜愛的交易所

币安

币安(Binance)

已有账号登陆后会弹出下载

« 上一条| 下一条 »
区块链交流群
数藏交流群

合作伙伴

非小号交易所排名-专业的交易行情资讯门户网站,提供区块链比特币行情查询、比特币价格、比特币钱包、比特币智能合约、比特币量化交易策略分析,狗狗币以太坊以太币玩客币雷达币波场环保币柚子币莱特币瑞波币公信宝等虚拟加密电子数字货币价格查询汇率换算,币看比特儿火币网币安网欧易虎符抹茶XMEX合约交易所APP,比特币挖矿金色财经巴比特范非小号资讯平台。
非小号行情 yonghaoka.cn 飞鸟用好卡 ©2020-2024版权所有 桂ICP备18005582号-1