空手套白狼 —— YIEDL 被黑分析

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

2024年4月24日,慢雾安全团队报告称,BSC链上的YIEDL项目遭到攻击,攻击者获利约30万美元。攻击者利用redeem函数未验证用户输入的外部参数,实现未授权资产转移。慢雾安全团队建议项目方在开发中实施严格的参数验证机制,避免类似事件再次发生。

🔎

延伸解读

零赎回攻击的运作机制

攻击者多次调用 redeem 函数,申请赎回数量为 0 的资产。由于赎回数量为零,通常不会触发资金流动,但该函数会遍历合约允许的资产列表,并在当前资产与用户期望接收的资产不一致时,根据传入的 dataList 参数解析并外部调用 1inch Router 执行兑换。攻击者利用这一逻辑,构造恶意 dataList 调用 1inch 的 unoswapTo 函数,将合约中的 WBNB-ADA Token 兑换为 BNB 并发送至攻击者地址。

参数验证缺失是漏洞根源

本次攻击的核心在于 redeem 函数未能充分验证用户输入的 dataList 参数。该参数控制资产兑换的关键数据,包含交易指令或路由信息,但合约未对其进行检查和验证,导致攻击者可以构造恶意值,通过 1inch Router 执行任意可控的代币兑换操作。慢雾安全团队指出,项目方应在涉及资金操作的合约中实施严格的参数验证机制,确保外部调用符合预期行为。

对项目方的安全启示

慢雾安全团队建议项目方在开发中实施严格的参数验证机制,尤其是在涉及合约中的资金操作时,要确保所有外部调用均符合预期的行为规范,并对合约的逻辑进行彻底的安全审计。此次事件表明,即使赎回数量为零,未经验证的外部参数也可能被利用来转移合约资产,因此任何接受外部输入并触发资金操作的功能都应视为高风险点。

❓

Q&A

YIEDL项目是如何被攻击的?

YIEDL项目被攻击是因为其redeem函数未能验证用户输入的外部参数,攻击者利用这一漏洞实现了未授权的资产转移。

攻击者从YIEDL项目中获利多少?

攻击者从YIEDL项目中获利约30万美元。

攻击者使用了什么地址进行攻击?

攻击者使用的地址是0x322696471792440499b1979e0a440491e870667a。

慢雾安全团队对YIEDL项目的建议是什么?

慢雾安全团队建议项目方实施严格的参数验证机制,并进行彻底的安全审计,以避免类似事件再次发生。

攻击者是如何触发资产兑换操作的?

攻击者通过恶意构造外部参数,调用redeem函数并传入未经过验证的dataList参数,从而触发资产兑换操作。

YIEDL项目的被攻击合约地址是什么?

被攻击的合约地址是0x4edda16ab4f4cc46b160abc42763ba63885862a4。

🏷️

标签

➡️

继续阅读