道路千万条,安全第一条:

1)不要共用密钥 2)密钥离线保存

3)开发和测试分开(空投和主账号隔离)

4)不要下载来历不明的软件 5)立即检查授权

6)进行授权前,对合约安全进行确认

7)撸空投和福利的时候注意安全

8)警惕Discord来路不明的人和软件

事件

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默认授权的时候是

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

转换成数字,我们认识的就是 1.157920892373162 乘以 10 的 59 次方。基本上就可以理解为无限量转账了,也就是这个授权的操作,可以让这个合约无限量的操纵我账号的token。看到这里感觉背后一凉,因为以前点过很多次approve都是不会去看的。

然后黑客操纵一个可以控制这个合约方法的钱包地址,就发起合约转账方法,把钱转走了。所以小伙伴之后点metamask授权的时候一定要小心

小C查了下,盗取者现在这个账号里大概已经有了3w美金的token了,现在还有源源不断的受害者在转钱。但是面对区块链没有办法,根本无法找不到这个黑客是谁。

出现问题的环节

问题到底出在哪里?

因为最近在学习区块链。小C大概理了一下这个钓鱼的逻辑方式,害人之心不可有,防人之心不可无。大家有兴趣可以了解一下:

  • 正常转账

案例一:直接用户间转账 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

注意第2)3)点,是由合约控制token进行操作。那么也就是说合约可以绕过我们直接发起对我们账号下的token的操作。

  • 钓鱼合约

先看这张溯源图

技术 | 从一个钱包被盗的案例,探讨Web3的安全指南相关推荐

  1. 冷钱包被盗?“这是黑客被黑的最惨的一次”

    8 月 17 日,CoinTiger交易所突然放出一条公告,表示近日发现存放 PTT 的冷钱包被黑客攻击,导致该钱包约 4 亿(401,981,748)枚 PTT 被盗取. 根据 CoinTiger交 ...

  2. 大型网站技术架构:核心原理与案例分析pdf

    下载地址:网盘下载 编辑推荐 编辑 本书作者是阿里巴巴网站构建的亲历者,拥有核心技术部门的一线工作经验,直接体验了大型网站构建与发展过程中的种种生与死,蜕与变,见证了一个网站架构从幼稚走向成熟稳定的历 ...

  3. Oracle数据库服务器IO高的分析方案和案例探讨

    Oracle数据库服务器IO高的分析方案和案例探讨 本文原题<ORACLE数据库服务器IO高的分析方案和案例探讨> 目录: 慧眼识珠--服务器磁盘这么繁忙,到底是谁干的? 谨记于心--OR ...

  4. AIBlockChain:“知名博主独家讲授”人工智能创新应用竞赛【精选实战作品】之《基于计算机视觉、自然语言处理和区块链技术的乘客智能报警系统》案例的界面简介、功能介绍分享之总篇

    AI&BlockChain:"知名博主独家讲授"人工智能创新应用竞赛[精选实战作品]之<基于计算机视觉.自然语言处理和区块链技术的乘客智能报警系统>案例的界面简 ...

  5. 大型网站技术架构:核心原理与案例分析阅读笔记二

    大型网站技术架构:核心原理与案例分析阅读笔记二 网站架构设计时可能会存在误区,其实不必一味追随大公司的解决方案,也不必为了技术而技术,要根据本公司的实际情况,制定适合本公司发展的网站架构设计,否则会变 ...

  6. 《大型网站技术架构:核心原理与案例分析》笔记05

    <大型网站技术架构:核心原理与案例分析>笔记05 网站的课扩展性架构: 扩展性:指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力.表现在系统基础设施稳定不需要经常变更,应用之间 ...

  7. 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章

    阅读<大型网站技术架构:核心原理与案例分析>第五.六.七章,结合我们的系统,分析如何增加相应的功能,提高系统的可用性和易用性. 这三章主要讲述的是网站的可用性.伸缩性和可扩展性. 高可用架 ...

  8. 分布式计算,大型网站技术架构:核心原理与案例分析

    这个回答,非常详细. 但是,大部分内容,都来自"大型网站技术架构:核心原理与案例分析". 最近,初步看了这本书,觉得写得太好了,比较系统和全面. 不过,我还是不喜欢吹B" ...

  9. 区块链技术在物联网中应用的思路探讨

    物联网作为新一代信息通信技术高度集成和综合应用的典范,正在与经济社会深度融合,深刻改变生产活动.社会管理.公共服务.随着物联网技术在各行业中的普及和不断深化,人类社会正进入"万物互联&quo ...

最新文章

  1. 北京“十四五”高精尖产业规划:到2025年集成电路产业实现营业收入3千亿元...
  2. Python GUI漫谈
  3. 浪潮linux网卡驱动,浪潮NF5280M5安装redhat7.2下网卡驱动
  4. python 好用的库存尾货女装_女装店主:做尾货有人能赚大钱,新手千万别碰,文茵告诉你原因...
  5. linux之通过tail命令动态跟踪日志文件里面的末尾信息
  6. 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come
  7. java数据库编程——执行查询操作(二)
  8. pcl_openmap_OpenMap教程3 –使用MapHandler构建基本的地图应用程序–第2部分
  9. spark学习-scala版写的SparkSQL程序读取Hbase表注册成表SQL查询
  10. thymealf如何实现传单个变量给html_如何远程读取西门子PLC数据?
  11. 对 React 组件进行单元测试(unit testing)
  12. 计算机病毒实践汇总三:动态分析基础(分析程序)
  13. Spring整合MyBatis为什么导致MyBatis一级缓存失效
  14. Jdk11下载及idea演示
  15. 锁定和隐藏Excel公式
  16. win10小娜_win10小娜打不开没反应怎么办
  17. Leetcode——860.柠檬水找零——题解—+代码实现
  18. 基于ARMv8的固件系统架构
  19. 电磁场与仿真软件(24)
  20. CVE-2018-2628漏洞复现

热门文章

  1. 有理有据地展望未来 Web 开发体验
  2. C++计算圆的面积和周长
  3. 基于诱捕器图像的飞蛾害虫自动检测
  4. 【ESP32】14.DHT11湿度传感器实验(DHT操作库)
  5. 【Redis】--缓存双写一致性分析、解决方案
  6. 华为多点测试软件,【华为软件测试工程师面试】问的专业性多一点,代码之类的-看准网...
  7. 海思SDK安装过程以及OSDRV编译不成功出现的问题的解决
  8. centos7安装yearning
  9. Python运用urllib2和BeautifulSoup爬取网站ZOL桌面壁纸上的精美电脑壁纸
  10. Android技术点总结