背景介绍
2025年 11 ⽉ 23 ⽇,我们监控到 BNB Smart Chain 上针对Port3项⽬的攻击事件(其中之⼀):
https://bscscan.com/tx/0xa7488ff4d6a85bf19994748837713c710650378383530ae709aec628023cd7cc
经过详细分析,攻击者从 2025 年 11 ⽉ 23 ⽇起,持续对 Port3 项⽬发起攻击,攻击造成 Port3 Token ⼤量增发,导致价格归零。
攻击及事件分析
看⼀下攻击者发起的交易,
攻击者先调⽤ registerChains 后,再调⽤ bridgeIn 。通过利⽤ bridgeIn 完成了 Port3 Token 的 free mint 。
我们看⼀下Port3项⽬的合约中的registerChains函数是如何实现的:
该函数的主要作⽤就是设置接收指定 chainID 的 token 。但是,这个函数有对应的权限校验函数 onlyOwnerOrOwnerSignature ,接下来,我们看看攻击者是如何绕过权限校验函数。
onlyOwnerOrOwnerSignature 的具体实现如下:
问题就出现在红框中代码,由于合约的 owner 没有设置,
所以,任何⼈都可以通过这个验证,攻击者通过 registerChains 将 token address 加⼊到 _state.tokenImplementations 中,随后在 bridgeIn 中的绕过检测,从⽽完成 _mint 的操作。
总结
本次漏洞的成因是函数 Port3 项⽬在合约部署后,未设置 onwer ,导致攻击者可以随意设置接收跨链交易的合约地址,最终导致攻击者伪造跨链交易完成 Port3 Token 的⼤量增发。建议项⽬⽅在设计经济模型和代码运⾏逻辑时要多⽅验证,合约上线前审计时尽量选择多个审计公司交叉审计。
