事件背景
Hinkal 是主打稳定币隐私/保密交易的 DeFi 协议。核心缺陷在 证明与签名没有把「承诺 commitment、nullifier、交易 call data」绑定成不可拆分的整体:
- 正常隐私池要求:同一笔记(note)只能花费一次,nullifier 防双花,且提取参数必须被证明覆盖;
- 实现上,攻击者可反复构造新的 nullifier、stealth 地址、H0/H1 以及 calldataHash,使验证器误以为每次都是合法新花费;
- 入口还暴露了 prooflessDeposit()(无证明存款)一类路径,降低了攻击前置成本,使「先塞入再反复 transact 抽出」成为可脚本化循环。
因此这不是用户被钓鱼签名,而是 协议合约执行路径/校验逻辑被利用,可在不持有真实存款证明的情况下抽走池内 USDC。
事件经过
- 切入:攻击者调用 prooflessDeposit() 在有缺陷的路径上建立可操作状态。
- 循环提取:多次调用 transact(),公开监测显示单次约提取 2.5 万美元 量级,重复直至池内可抽资金耗尽。
- 规模:合计抽走约 80 万—82 万美元 USDC。
- 换币:USDC 在 Ethereum 上换成 ETH。
- 清洗分叉:
- 约 410 ETH 进入 Tornado Cash;
- 约 44.67 ETH 经 THORChain 换成 BTC,跨出 EVM 视线。
- 项目响应:受影响合约被冻结;团队称事件限于特定 Ethereum 池,并表态用户补偿口径(以官方最终公告为准)。
资金流向
- 约 410 ETH 进入 Tornado Cash;
金额口径
约80万—82万美元USDC
证据边界
完整地址/Tx 不足时不猜补。
处置状态
受影响合约被项目方冻结;大部分赃款已混币或跨到Bitcoin。