智能合约安全分析,假充值攻击如何突破交易所的防御?

智能合约安全分析,假充值攻击如何突破交易所的防御?

引言
假充值攻击,是指攻击者通过利用交易所在处理充值过程中的漏洞或系统错误,发送伪造的交易信息到交易所钱包地址,这些伪造的交易信息被交易所误认为是真实的充值请求,并将对应的数字资产或货币添加到攻击者的账户中。攻击者利用这种方式,可以获得未经支付的数字资产,导致交易所的资产损失。
本文旨在深入探讨假充值攻击如何突破交易所的防御机制。我们将分析假充值攻击的原理,揭示攻击者利用的漏洞和策略。同时,我们将通过实例分析假充值攻击,以便更好地理解攻击方式和影响。此外,我们还将讨论交易所应对假充值攻击的应急措施和预防措施,以提供相关保护资产和应对类似攻击的建议。

充值原理解析

在了解假充值之前,我们需要先了解交易所的充值原理。
一个典型的流程如下:
1. 钱包地址生成
交易所为每个用户分配一个唯一的钱包地址,用于接收用户的充值。这些地址通常由交易所的系统自动生成。用户在进行充值时,需要将数字资产发送到交易所账户中的特定钱包地址。
2. 区块链账本扫描
交易所的节点会与区块链网络中的其它节点同步,以获取最新的区块链状态和交易信息。当交易所节点收到新的区块时,它会从区块包含的交易内容,或者区块触发的交易执行事件中,提取出用户的充值交易 ID 及对应的金额,加入待充值列表。
3. 确认入账
交易所通常要求交易在区块链网络中获得一定数量的确认后才被视为有效。确认是指交易所在区块被一定数量的区块所引用,并被其他矿工验证和确认。交易所设定的确认数目可以根据不同的数字资产和网络而有所不同。
如图所示:

(假充值攻击发生在步骤 5 和 6)

假充值攻击模式

交易所是黑客攻击的重灾区,因此交易所通常会把服务器置于重重防御系统的背后,对于管理资金的核心服务,甚至要离线托管。然而由于区块链系统对数据完整上的要求,恶意交易并不会被外围安全系统拦截。
需要说明的是,假充值攻击并非区块链的漏洞,而是攻击者利用区块链的一些特性,构造出特殊的交易。这些恶意交易会让交易所误认为是真实的充值请求,或者多次处理同一笔充值请求。Safful安全团队经过长期的实战,总结出了几种常见的假充值攻击手法:

自 2018 年以来,Safful安全团队多次首发披露过多个假充值攻击,包括:

  • USDT 虚假转账安全⻛险分析
  • EOS 假充值(hard_fail 状态攻击)红色预警细节披露与修复方案
  • 以太坊代币“假充值”漏洞细节披露及修复方案
  • 比特币 RBF 假充值风险分析

除了这些已经公开的假充值攻击,还有多个我们未曾公开的经典攻击手法,以及一些普适性的攻击手法。例如:

  • Bitcoin 多签假充值
  • Ripple 部分支付假充值
  • Filecoin 双花假充值
  • TON 反弹假充值

如果要了解更多详情,欢迎和我们联系以深入探讨。

实例分析:TON 反弹假充值

几乎所有的区块链都存在假充值问题,只是有的攻击很容易避免,有的却要对区块链的特性有十分深入的研究才能免受其害。
以 TON 的假充值为例,我们将向大家展示狡猾的攻击者如何利用 TON 的特性攻击交易所。
TON(The Open Network)是知名通讯软件 Telegram 发起的一个区块链项目,支持在用户的账号上部署智能合约。
交易所在对接 TON 充值时,按之前描述的方法,它首先会为用户生成一个充值地址,然后用户将资产转移到充值地址,最后确认入账。
交易所如何确认一笔交易是它的用户的呢?我们通过 RPC 接口来查看一笔正常的转账:

通常交易所会判断 in_msg 里的 destination 是否为用户的充值地址,如果是,那么把金额 value 按照精度换算后为用户入账。但这样安全吗?
TON 交易有一个特性,几乎所有在智能合约之间发送的内部消息都应该是可反弹的,即应该设置它们的 bounce 标志位。这样,如果目标智能合约不存在,或者在处理这条消息时抛出未处理的异常,该消息将被“反弹”回来,并携带原始值的余额(减去所有的消息转账和燃气费用)。
也就是说,如果一个恶意攻击者通过设置 bounce 标志位,给一个未部署过合约的账号转账,那么充值金额在扣掉手续费以后会被反弹回原账号。交易所检测到了用户的充值记录,但没想到充值的币居然还会原路返回“反弹”到攻击者的账号上。
我们来看这一笔交易,对比正常交易可以发现,多了一个 out_msg,这个 out_msg 就是资金被反弹回原账号的操作。

交易所如果只检验了 in_msg,那么就会错误地为攻击者入账,造成平台资产损失。

预防假充值攻击的最佳实践

防范假充值攻击的一些基本策略有:
**1. 多重确认机制:**设定充值的多重确认要求,确保交易在区块链上得到足够的确认后才被视为有效。确认数目应根据不同数字资产的安全性和区块链的确认速度来设定;
**2. 严谨的交易匹配:**从区块中筛选用户交易时,只有完全匹配正常转账模式的交易才能自动设置为到账,最后还要检查余额变化;
**3. 风险控制系统:**建立完善的风险控制系统,监测和检测异常交易活动。该系统可以通过分析充值模式、交易频率、交易规模等因素来识别潜在的风险和异常行为;
**4. 人工审核:**对于较大金额或高风险交易,采用人工审核机制进行额外的审核。人工审核可以增加交易的可信度,发现异常交易,并防止恶意充值;
**5. API 安全:**对外部 API 接口进行安全认证和授权,避免未经授权的访问和潜在的漏洞。定期审查 API 接口的安全性,并进行及时的安全更新和修复;
**6. 限制提款:**充值发生后,暂时限制用户对充值资产的提款操作。这样可以给交易所足够的时间来确认充值的有效性和防范潜在的假充值攻击;
**7. 安全更新:**及时更新交易所软件和系统,修复可能存在的安全漏洞。持续监控交易所的安全状态,并与网络安全专家合作,定期进行安全审计和渗透测试。
对于特定区块链的假充值防范,则需要通读官方说明文档,了解交易中存在的特征。

Badwhale 假充值检测系统

Safful安全团队在长期的攻防实践中开发出 Badwhale 假充值测试系统,专门为数字资产管理平台开发。该系统旨在帮助它们检测和评估其防范假充值攻击的能力,优化其防御机制,以保障用户资产的安全和数字资产管理平台的可靠性。
Badwhale 是Safful安全团队独家且沉淀多年的商业系统,为数十个平台持续服务多年,已避免了预估几十亿美金资产的假充值风险。
特色功能:
**1. 模拟假充值攻击:**Badwhale 能够模拟各种类型的假充值攻击,并自动发送虚假的充值请求到被测试的数字资产管理平台。这有助于评估数字资产管理平台的弱点,发现潜在的漏洞和安全隐患;
**2. 多样化的测试场景:**系统提供多样化的测试场景和攻击模式,可以根据实际情况对数字资产管理平台的假充值防御进行全面测试;
**3. 高度可扩展性:**Badwhale 设计为高度可扩展的测试系统,支持为不同数字资产管理平台和区块链平台提供测试,可以灵活适应不同系统架构和技术环境的需求。
Badwhale 目前已经支持数百条公链、数万代币的假充值测试,包括:

  • Bitcoin Families (BTC/LTC/DOGE/QTUM…)
  • BitcoinCash
  • Ethereum Families (ETH/BSC/HECO/RON/CFX-evm/FIL-evm/AVAX-evm/FTM-evm/RSK/GNO/MOVR-evm/GLMR-evm/KLAY/FSN/CELO/CANTO/EGLD/AURORA-evm/TLC/WEMIX/CORE/VS/WAN/KCCL/OKX…)
  • ERC20 Tokens (USDT…)
  • Ethereum L2 (ARB/OP/METIS…)
  • Polygon
  • Polygon Tokens
  • Cosmos Families (ATOM/LUNA/KAVA/IRIS/OSMO…)
  • EOS Families and EOS Tokens (EOS/WAX/XPR/FIO/TLOS…)
  • Ripple
  • Flow
  • Aptos
  • Solana
  • Solana SPL-Tokens
  • Conflux
  • Polkadot Families (DOT/ASTR/PARA/MOVR/GLMR…)
  • Tron
  • Filecoin
  • Ton
  • Mina
  • Sui
  • Ordinals (ORDI…)

借助 Badwhale 的强大功能,数字资产管理平台可以进行全面的假充值防御测试,了解其在面对假充值攻击时的表现,并优化其防御机制,提升用户资产的安全保障。Badwhale 的引入将帮助数字资产管理平台加强安全防护,提高对抗假充值攻击的能力,确保数字资产交易的可靠性和用户信任度。

结语

通过深入研究假充值攻击的突破方式,我们可以更好地认识到数字资产管理平台在保护用户资产和维护安全的重要性。只有通过增强安全防御措施、持续监测漏洞并采取适当的应对措施,数字资产管理平台才能有效地应对假充值攻击和其他安全威胁,确保数字资产交易的可信度和可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/106766.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

年轻人为何热衷于副业?工作不饱和,这是对年轻人的侮辱

昨天在知乎上看到一个问题:为什么现在的年轻人都开始忙着搞副业,工作不饱和还是赚钱太少? 着实没忍住,所以,发表了一下自己的看法。 「都」开始忙着搞副业,这里的「都」,有准确数据吗&#xff1…

自动驾驶——估计预瞄轨迹YawRate

1.Introduction 在ADAS控制系统中,通常根据预瞄距离x去估计横向距离y,有如下关系: y a0 a1 x a2 * x^2 a3 * x^3 ,那么现在有个需求,希望根据上述x和y的关系,去估计规划预瞄轨迹yawRate 2.How to es…

从软件工程师角度聊聊 Kubernetes

作为软件工程师,我们应该熟悉 K8s,尽管它有点像 DevOps,但它能让我们更好地了解幕后发生的事情,让我们与部署工作更密切相关,更有责任感。本文将从软件工程师的角度探讨 Kubernetes (K8s),我们将介绍其动机…

LLM - 批量加载 dataset 并合并

目录 一.引言 二.Dataset 生成 1.数据样式 2.批量加载 ◆ 主函数调用 ◆ 基础变量定义 ◆ 多数据集加载 3.数据集合并 ◆ Concat ◆ interleave ◆ stopping_strategy ◆ interleave_probs 三.总结 一.引言 LLM 模型基于 transformer 进行训练,需要先…

SpringMvc增删改查

SpringMvc增删改查 一、前期准备二、逆向生成增删改查2.2.aspect切面层2.3.Mybatis generator逆向生成2.4.根据生成代码编写Biz层与实现类 三、controller层代码编写四、前台代码与分页代码五、案例测试 一、前期准备 1.2.导入pom.xml依赖 <?xml version"1.0" …

智慧工地可视化解决方案-智慧工地源码

智慧工地是指运用信息化手段&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生态圈&#xff0c;并将此数据在虚拟现实环境下与物联网采集到的工程信息进行数据挖掘分析&#xff0c;提供过程趋势预测及专家预案&#xff0c;实现工程…

【MySQL】表的增删改查

目录 MySQL表的增删查改 Create 单行数据全列插入 多行数据指定列插入 插入否则更新 替换数据 Retrieve SELECT 列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 WHERE 条件 查询英语不及格的同学及其英语成绩 查询语文成绩在80到90分的…

如何在 Ubuntu 上安装 Nagios?

Nagios 的功能 Nagios 的一些关键功能包括&#xff1a; 主机和服务监控&#xff1a; Nagios 允许您使用提供实时状态数据的插件来监控主机&#xff08;可以是物理机或虚拟机&#xff09;以及 HTTP、SSH 和 SMTP 等服务。此功能使您能够全面了解整个基础设施的运行状况和可用性…

9.11作业

实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 sum0 arr(11 22 33 44 55) Sum() {for i in ${arr[*]}do$((sumi))donereturn $sum } Sum ${arr[*]} var$? echo $var写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果 Sum() {aid -…

腾讯云和阿里云2核2G服务器租用价格表对比

2核2G云服务器可以选择阿里云服务器或腾讯云服务器&#xff0c;腾讯云轻量2核2G3M带宽服务器95元一年&#xff0c;阿里云轻量2核2G3M带宽优惠价108元一年&#xff0c;不只是轻量应用服务器&#xff0c;阿里云还可以选择ECS云服务器u1&#xff0c;腾讯云也可以选择CVM标准型S5云…

【echarts】如何修改折线图X轴每个刻度的间隔宽度,让拥挤的空间变大,所有坐标点的文案可以显示得下,Echarts x轴文本内容太长的几种解决方案

Echarts 如何修改折线图X轴每个刻度的间隔宽度&#xff0c;让拥挤的空间变大&#xff0c;所有坐标点的文案可以显示得下&#xff0c;Echarts x轴文本内容太长的几种解决方案 有以下几种方案&#xff0c;堪称最全方案&#xff1a; 1、dataZoom进行坐标的比例缩放 通过调整dataZ…

Python字符串详解(包含长字符串和原始字符串)

若干个字符的集合就是一个字符串&#xff08;String&#xff09;。Python 中的字符串必须由双引号" "或者单引号 包围&#xff0c;具体格式为&#xff1a; "字符串内容" 字符串内容 字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有…