“亡羊补牢,为时未晚”,这句话在生活中的大部分时候均适用。然而,在面临网络安全时,牢破也许就会造成无法挽回的损失。

在安全问题未造成不可弥补的损失前就被发现,或是一开始便做好万全准备,才是身为区块链从业者的安全第一要义。

CertiK安全技术团队发现DeFi匿名耕种项目Based官方宣布有攻击者通过调用Based智能合约中的某一个函数,将一号池(Pool 1)冻结,同时宣布将重新部署其一号池。

官方发布推特称,有黑客试图将“Pool1”永久冻结,但尝试失败。而“Pool1”将继续按计划进行。

CertiK通过分析该智能合约,认为这次冻结Based项目一号池事件,是一次由于存在智能合约漏洞导致的事故。

事件经过

Based团队部署一号池智能合约,部署地址为0x77caF750cC58C148D47fD52DdDe43575AA179d1f。

Based官方通过调用智能合约中的renounceOwnership函数来声明智能合约所有者,但未进行智能合约初始化。

由于在Based智能合约中initialize函数被错误的设置为可以被外部调用,因此造成在初始化智能合约过程中,一号池的智能合约被外部攻击者用错误的值初始化。

错误的初始化造成Based官方无法再次初始化一号池的智能合约,因此造成一号池被冻结,任何质押行为都无法完成。

Based官方决定放弃该智能合约,重新部署一号池智能合约。

智能合约技术细节

(1) Based团队在部署智能合约后,没有及时的调用下图的initialize函数来初始化智能合约的设置:

(2) 外部调用者利用Based团队在部署和初始化智能合约之间的时间差,乘机调用了下图中671行被错误设置调用范围的initialize函数,抢先初始化了一号池的智能合约:

(3) 上图两个initialize函数都是由initializer的修饰符修饰。根据其中代码,如果调用了其中一个initialize函数,另外一个initialize函数就无法被调用。initializer修饰符代码如下图所示,这造成了Based官方失去了初始化函数的机会:

(4) 综上因素,Based智能合约无法被官方正确初始化,因此任何质押行为都无法进行。

质押失败的交易记录

如何避免事件发生

该次事件本质上是由智能合约漏洞导致的,但如果Based团队提早注意到这个漏洞,提前初始化智能合约,可以完全规避这次危险,避免一号池被冻结。因此,CertiK安全技术团队建议:

部署智能合约时应准备好初始化智能合约所需要的命令脚本等工具,及时初始化智能合约,避免攻击者利用部署操作和初始化操作之间的时间差抢先初始化或者操纵智能合约。

了解智能合约的运行原理和技术细节,不要盲目的采用其他的智能合约代码。

邀请专业的安全团队对其智能合约进行审计,保证智能合约的安全性和可靠性。

更多linux咨询请查看www.linuxprobe.com

CertiK:重新部署其一号池事件分析相关推荐

  1. 【BLE MIDI】MIDI 时间标志分析 ( 音符速度设置事件 | 拍号设置事件 | 基本时间 - 每个四分音符有多少 tick 或 pulse | 节拍时值计算 | 小节时值计算 )

    文章目录 一.从 MIDI 文件中可以获取的信息 1.音符速度设置事件 2.拍号设置事件 3.文件头基本时间 二.节拍时值计算 三.小节时值计算 一.从 MIDI 文件中可以获取的信息 MIDI 时间 ...

  2. java并发包线程池原理分析锁的深度化

    java并发包&线程池原理分析&锁的深度化 并发包 同步容器类 Vector与ArrayList区别 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素 ...

  3. JAVA线程池的分析和使用

    1. 引言 合理利用线程池能够带来三个好处.第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗.第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行.第三:提 ...

  4. java 线程池原理分析

    一.为什么使用线程池 1.降低资源消耗,减少线程创建和销毁次数,每个工作线程可以重复利用,执行多个任务 2.可根据系统承受能力,调整工作线程的数目,防止消耗过多的内存 二.java 线程池使用 Exe ...

  5. 聊聊并发(三)——JAVA线程池的分析和使用

    1. 引言 合理利用线程池能够带来三个好处.第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗.第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行.第三:提 ...

  6. 重新定义分析 - EventBridge实时事件分析平台发布

    作者:肯梦 对于日志分析大家可能并不陌生,在分布式计算.大数据处理和 Spark 等开源分析框架的支持下,每天可以对潜在的数百万日志进行分析. 事件分析则和日志分析是两个完全不同的领域,事件分析对实时 ...

  7. JAVA线程池的分析和使用--笔记

    1. 引言 合理利用线程池能够带来三个好处.第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗.第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行.第三:提 ...

  8. 选了combobox里的选项后没激发change事件_stata 事件分析法

    前言: 因为一些原因,国庆节期间学的.学习过程很酸爽,自己并没有很多统计学及其相关软件的经验,网上相关资料也不是很多.我在微信公众号.知网.经管之家.B站.百度文库等很多平台找了各式的资料来学(花了7 ...

  9. 【权威发布】360天眼实验室:Xshell被植入后门代码事件分析报告(完整版)

    本文由 安全客 原创发布,如需转载请注明来源及本文地址. 本文地址:http://bobao.360.cn/learning/detail/4278.html 文档信息 事件概要 事件简述 近日,非常 ...

最新文章

  1. 单林多域群集环境中将Exchange 2003迁移到Exchange 2010系列之五
  2. 漫谈时序设计(1)跨时钟域是设计出来的,而非约束出来的!
  3. HDFS High Availability体系介绍(Using the Quorum Journal Manager)
  4. 梯度直方图(HOG,Histogram of Gradient)
  5. 【NOIP2004】【Luogu1090】合并果子
  6. 智鹰科技——无人机线路巡检系统商业计划书
  7. ACM大佬算法课程福利分享
  8. 施密特触发器HSPICE仿真【内附代码】
  9. 康佳电视应用助手服务器连接超时,康佳电视程序无响应怎么办?详细解决方法...
  10. DHU Matlab Experiment【4】_验证非线性最小二乘拟合lsqcurvefit()函数中的误差平方和
  11. 英语学习软件——《经典双语广告语大全》(图)
  12. 【转载】通过搜狗站长平台手动向搜狗搜索提交死链
  13. 【论文笔记】AutoML: A survey of the state-of-the-art(下篇)
  14. csdn 修改博客皮肤
  15. JAVASwing设置字体,字体大小
  16. 城市路边停车收费系统/停车收费管理系统
  17. 电位器和编码器的区别
  18. hgame2023 week2 writeup
  19. uni开发的H5接入QQ登录
  20. 前端页面性能优化 - 字体加载优化

热门文章

  1. 水星d191g服务器无响应,水星D191G、水星D196G拆机,对比D19G有啥区别??
  2. 跨境电商+RMF+kmeans
  3. 利用zlib压缩和解压gzip文件
  4. 求数组中最长递增子序列的长度
  5. 如何利用Intellij Idea搭建python编译运行环境
  6. 【2020-11-04】JS逆向之某宝模拟登入
  7. 2015 年全国房价会呈什么趋势?
  8. 淘宝Kissy框架使用记录
  9. 初学者必读VRay 2.0光源设置(3)——使用球形光源
  10. plupload怎么设置属性_jquery上传插件:plupload事件参数说明详解