-
bitcoin $81146.637119 USD
4.42% -
ethereum $2629.002357 USD
5.43% -
tether $0.999603 USD
0.05% -
bnb $762.026478 USD
0.54% -
xrp $1.421069 USD
7.12% -
usd-coin $0.999888 USD
0.00% -
solana $112.034023 USD
5.89% -
tron $0.337704 USD
0.49% -
zcash $1570.017975 USD
5.10% -
hyperliquid $93.163180 USD
6.09% -
dogecoin $0.087182 USD
3.38% -
monero $568.185286 USD
6.74% -
chainlink $12.335175 USD
4.41% -
cardano $0.223261 USD
4.32% -
unus-sed-leo $8.875972 USD
-0.19%
什么是智能合同中的重新攻击?
A reentrancy attack exploits recursive function calls in smart contracts to drain funds, as seen in the infamous DAO hack.
2025/07/15 02:50
了解智能合约的基础知识
智能合约是一份自执行的合同,其条款直接写入代码中。它在以太坊等区块链平台上运行,并自动执行没有中介机构的各方之间的协议。这些合同一旦部署后都是不可变的,这意味着代码中存在的任何漏洞都无法改变驱逐后。这种不变性使得确保智能合约在上线之前可以免受所有可能的漏洞的安全至关重要。
这样的利用之一是重新进入攻击,该攻击造成了加密货币生态系统中的重大损失。了解这种漏洞的工作方式需要掌握智能合约如何通过功能调用与外部帐户和其他合同相互作用。
什么是重新进入攻击?
当恶意合同在初始执行完成之前反复调用另一个合同中的脆弱功能时,会发生重新攻击。这种递归行为可以以意想不到的方式流失资金或操纵状态变量。
经典的示例涉及合同处理以太转移。如果功能在更新其内部余额之前将以太发送到外部地址,则恶意合同可以在转移期间重新输入该功能,并反复流失合同的资金。 2016年臭名昭著的DAO骇客导致了6000万美元的以太损失,这是由于重新进入的结果。
重新进入攻击如何在实践中起作用?
为了更好地理解重新进入攻击的机制,请考虑以下简化方案:
- 合同具有
withdraw()功能,允许用户撤回其沉积以太。 - 该函数首先使用
call.value()将以太发送给用户,然后将用户的余额更新为零。 - 恶意合同将自己注册为用户,并将以太存入目标合同。
- 当它调用
withdraw()时,目标合同会启动以太转移。 - 在转移期间,恶意合同的后备功能(会自动触发)再次呼叫
withdraw()。 - 由于余额尚未更新,因此合同认为用户仍然有可用的资金并发送更多的以太。
- 该循环一直持续到合同耗尽或气体用完为止。
此过程利用合同中的操作顺序 - 特别是在更新状态之前发送以太。
重新输入漏洞的类型
重新进入攻击有几种形式,每种攻击都利用合同逻辑的不同方面:
- 单功能重新输入:当单个函数包含外部呼叫和状态更改时,就会发生这种情况。攻击者在更新状态之前在外部呼叫期间触发重新进入。
- 跨功能重新输入:在这里,多个功能共享状态变量。攻击者可以在第一个仍在执行时重新输入第二个功能,从而不一致地操纵共享数据。
- 授权重新输入:此高级变体使用
delegatecall机制在另一个合同中执行代码。如果不仔细处理,这可能会导致意外的重新进入场景。
每种类型都需要仔细的审核和特定的缓解策略,以防止剥削。
如何防止重新进入攻击
防止重新进入攻击涉及在合同设计和利用安全工具方面采用最佳实践:
- 使用检查效应 - 交互模式:在拨打任何外部呼叫之前,请务必更新合同的状态。这样可以确保没有重新进入可以操纵现有的平衡或州。
- 实施重新进入警卫:诸如OpenZeppelin之类的库提供了重新输入后卫修饰符,该修饰符使用MUTEX变量阻止重新进入呼叫。
- 避免复杂的外部呼叫:最大程度地减少与未知或未经信任合同的互动。在必要时,请确保回调是安全的,并且不要触发任意代码。
- 使用推拉付款:而不是将资金推向用户,而是让他们启动提款。这降低了递归排水的风险。
- 进行详尽的审核:使用自动化工具和手动审查来检测代码库中潜在的重新输入矢量。
通过采用这些策略,开发人员可以大大减少成功重新进入攻击的可能性。
真实世界的重新输入示例
几起备受瞩目的事件强调了重新进入攻击的毁灭性影响:
- DAO HACK(2016) :最著名的案件涉及一个分散的自治组织,其智能合同允许递归提款。攻击者利用了这一点,以耗尽数百万美元的乙醚。
- Fusion网络攻击(2021年) :黑客在协议中利用了一个跨功能重新输入错误,导致了1400万美元的损失。
- Warp Finance Hack(2021) :在不同职能上利用了多个重新入侵点,使攻击者能够耗尽近800万美元的资产。
这些示例强调了严格的测试和遵守对确保编码实践的重要性。
常见问题
问:在非埃塞姆区块链中可以重新进入攻击吗?是的,重新输入攻击会影响任何以外部呼叫和可变状态支持智能合约的区块链平台。尽管以太坊已经看到了最突出的案例,但二元智能链,Solana等人也存在类似的漏洞。
问:所有外部电话都危险吗?不,但是应该谨慎对待外部呼叫。在更新临界状态变量之前制造时会出现危险。正确的编码模式和保障措施可以减轻这种风险。
问:如何测试我的重新进入漏洞的合同?您可以使用静态分析工具,例如Slither或Secrefify,执行手动代码审核,并使用Brownie或Hardhat等框架模拟攻击方案。使用重新进入警卫并遵循安全的开发实践也有帮助。
问:Flash贷款攻击与重新进入攻击之间有什么区别?尽管两者都可以利用Defi协议,但Flash贷款攻击依赖于借用大量资本而无需抵押并将其偿还在同一交易中。重新入侵的重点是递归呼吁操纵合同状态的职能。但是,有些攻击结合了两种技术,以增加影响。
免责声明:info@kdj.com
所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!
如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。
- Egrag Crypto 揭示 XRP 趋势:驾驭短期波动以获得长期收益
- 2026-09-19 16:40:02
- 香港前银行家因加密货币行贿 47 万美元被判入狱四年
- 2026-09-19 16:35:01
- XRP 价格预测:在不断变化的市场浪潮中驾驭波动并突破关键水平
- 2026-09-19 12:45:01
- Binance 新上市、SWIFT 17 家银行和 Pepeto 100x 入门:加密货币金融的下一波浪潮
- 2026-09-19 09:00:02
- 拉加德、币安和希腊策略:一场高风险的欧盟监管僵局
- 2026-09-19 08:55:01
- MemeToro 加密货币预售审查:公共代码旨在获得信任,但执行是 $MT 代币的关键
- 2026-09-19 08:35:01
相关百科
如何查看SOL期货成交量和持仓量?
2026-09-14 00:40:03
访问 SOL 期货市场数据1. 前往SOL永续合约或季度合约上市的官方交易平台,例如Bybit、OKX或Bitget。 2. 找到SOL/USDT或SOL/USD期货交易对页面,切换到“合约概览”或“市场数据”选项卡。 3. 识别标记为“交易量(24 小时)”和“未平仓合约”的实时字段,这两个字段通...
如何查看XRP期货交易量和持仓量?
2026-09-15 05:00:12
访问实时 XRP 期货数据1. 访问列出 XRP 永续合约和季度期货合约的主要衍生品交易所,包括 Binance、Bybit、OKX 和 Bitget。 2. 导航至XRP/USDT或XRP/USD交易对页面,找到实时显示交易量和持仓量数据的市场深度面板。 3. 确认显示的持仓量是否反映了多头/空头...
如何查看DOGE期货成交量及持仓量?
2026-09-12 08:39:38
了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...
如何查看ETH期货交易量和持仓量?
2026-09-16 19:00:18
访问实时 ETH 期货数据1. Binance、Bybit和OKX等主要中心化交易所提供实时仪表板,显示ETH永续和季度期货交易量和持仓量。这些指标每 5-10 秒更新一次,无需登录其公开市场页面即可访问。 2. Glassnode、CryptoQuant 和 Coinglass 等链上分析平台可以...
如何查看BTC期货交易量和持仓量?
2026-09-12 15:19:55
BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...
如何阅读SOLUSDT永续合约图表?
2026-09-19 14:19:47
了解 SOLUSDT 价格结构1. SOLUSDT 永续合约图表显示 Solana 原生代币相对于 Tether 报价的实时价格走势。每根蜡烛代表一个定义的时间间隔(例如 1 分钟、15 分钟或 1 天),并编码开盘价、最高价、最低价和收盘价。 2、上影线表示更高层的拒绝;下影线反映支撑区附近的买盘...
如何查看SOL期货成交量和持仓量?
2026-09-14 00:40:03
访问 SOL 期货市场数据1. 前往SOL永续合约或季度合约上市的官方交易平台,例如Bybit、OKX或Bitget。 2. 找到SOL/USDT或SOL/USD期货交易对页面,切换到“合约概览”或“市场数据”选项卡。 3. 识别标记为“交易量(24 小时)”和“未平仓合约”的实时字段,这两个字段通...
如何查看XRP期货交易量和持仓量?
2026-09-15 05:00:12
访问实时 XRP 期货数据1. 访问列出 XRP 永续合约和季度期货合约的主要衍生品交易所,包括 Binance、Bybit、OKX 和 Bitget。 2. 导航至XRP/USDT或XRP/USD交易对页面,找到实时显示交易量和持仓量数据的市场深度面板。 3. 确认显示的持仓量是否反映了多头/空头...
如何查看DOGE期货成交量及持仓量?
2026-09-12 08:39:38
了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...
如何查看ETH期货交易量和持仓量?
2026-09-16 19:00:18
访问实时 ETH 期货数据1. Binance、Bybit和OKX等主要中心化交易所提供实时仪表板,显示ETH永续和季度期货交易量和持仓量。这些指标每 5-10 秒更新一次,无需登录其公开市场页面即可访问。 2. Glassnode、CryptoQuant 和 Coinglass 等链上分析平台可以...
如何查看BTC期货交易量和持仓量?
2026-09-12 15:19:55
BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...
如何阅读SOLUSDT永续合约图表?
2026-09-19 14:19:47
了解 SOLUSDT 价格结构1. SOLUSDT 永续合约图表显示 Solana 原生代币相对于 Tether 报价的实时价格走势。每根蜡烛代表一个定义的时间间隔(例如 1 分钟、15 分钟或 1 天),并编码开盘价、最高价、最低价和收盘价。 2、上影线表示更高层的拒绝;下影线反映支撑区附近的买盘...
查看所有文章














