码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 零时科技 || Victor the Fortune攻击事件分析


    事件背景

    零时科技区块链安全情报平台监控到消息,北京时间2022年10月27日,BSC链上Victor the Fortune 合约受到黑客闪电贷攻击,攻击者已获利约5.8万美元,耗尽了流动资金池,攻击者地址为0x57c112cf4f1e4e381158735b12aaf8384b60e1ce,零时科技安全团队及时对此安全事件进行分析。

     

    攻击步骤

    1. 攻击者通过闪电贷借出约100,000 USDT

     

    2. 将借出的USDT兑换为77,853 VTF

     

    3. 调用updateUserBalance()函数计算获得奖励

     

    4. 调用transfer函数将资金全部转移至 地址 0x1dd557415a0ddea7d3e56f49c78d54ebbf31f569

     

    5. 调用updateUserBalance()函数获得奖励

     

    6. 重复执行第四步和第五步,最后共获得 499,803,157 VTF

     

     

    7. 将获得的VTF兑换获得 158,450 USDT

     

    8. 归还闪电贷后共获利 58,450 USDT

     

    漏洞核心

    攻击者通过调用transfer函数进行转账,在转账函数中调用了updateUserBalance()函数,由于此时userBalanceTime[user]为0会将当前时间赋值给userBalanceTime[user]。

     

    之后调用updateUserBalance(),当userBalanceTime大于0时会调用 getUserCanMint函数计算奖励值

     

    在getUserCanMint函数中计算返回值是用户的余额除以常数乘当前时间与用户开始时间的时间差,由于没有设置最小时间差,因此在很短时间调用函数也可以获得奖励。

     

    由于调用一次updateUserBalance()函数后会更新时间,攻击者通过调用transfer函数将资金转移至一个新的地址,再次调用updateUserBalance()函数可以继续获利,并且当攻击者地址资金增加时获得的奖励也随着增加,攻击者通过重复以上步骤获得奖励逐渐增加直到将池子掏空。

    总结及建议

    此次攻击是由于合约中的计算奖励函数的算法只与用户地址余额和时间差有关,攻击者通过先调用转账获得用户初始时间,之后调用获得奖励的函数,通过这两个函数调用过程中的时间差计算获得奖励。通过多次转账计算获得奖励使得资金累加,最后将池子中代币几乎掏空。

    安全建议

    • 建议对于计算获得奖励时设置最小时间差,避免攻击者通过短时间多次调用函数获利。
    • 建议项目方上线前进行多次审计,避免出现审计步骤缺失

  • 相关阅读:
    YOLOV8损失函数改进:SlideLoss,解决简单样本和困难样本之间的不平衡问题
    JVM之对象的内存模型、创建过程、对象引用、生命周期
    Android 11.0 修改wifi信号强度
    CPU的睿频、超线程、SIMD指令集等特性对密码算法性能的影响
    算法模型总结:字符串
    知识图谱2(正则表达式语法)
    YOLOv5 分类模型 数据集加载 3
    服务器数据恢复—raid5上层NTFS分区误删除/格式化的数据恢复案例
    算法day20|654,617,700,98
    《最新出炉》系列初窥篇-Python+Playwright自动化测试-14-playwright操作iframe-番外篇
  • 原文地址:https://blog.csdn.net/m0_37598434/article/details/127657917
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号