空手套白狼 —— YIEDL 被黑分析
内容提要
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。