点击蓝字
关注我们
不需要闪电贷,也不用代码博弈。11月23日,Port3 Network因一个“忘记上锁”的低级失误,被攻击者轻松掏空。
这起因“未初始化变量”引发的惨案,折射出行业对基础安全的惊人忽视。当锁匠忘记了锁,无主之地便成了掠夺者的乐园。
01 事件背景
当锁匠忘记了锁
11月23日,BNB Chain上的Port3 Network遭受了一场无需“黑客技术”的攻击。
这是一起典型的“未初始化”事故,没有复杂的代码博弈,没有昂贵的闪电贷成本,甚至不需要私钥。攻击者只是试着拧了一下门把手,门就开了。
仅仅几分钟,10亿枚凭空铸造的代币涌入市场,K线瞬间断头。而在废墟之上,留给行业的是一个昂贵的常识。
02 攻击复现
合约逻辑短路
为了看懂这次攻击,我们必须深入到以太坊虚拟机(EVM)的签名验证逻辑底层。
链上数据显示,攻击者(0xb13a...812e)并没有绕过大门,而是伪造了一把“看不见的钥匙”。
这是一次基于签名缺陷与变量未初始化的复合型攻击。我们将通过攻击者的关键交易(Tx: 0xfa...051c)还原现场。
1. 攻击准备
这次攻击利用了Solidity开发中两个极其低级的疏忽,构成了一个“负负得正”的逻辑闭环:
疏忽A:verifySignature函数在使用ecrecover验签时,未检查返回值是否为0地址。当传入无效签名(全0)时,ecrecover会返回0x00...00。
疏忽B:合约部署后owner未初始化,其值默认为0x00...00。
这好比保安只认空白身份证(Verify逻辑漏洞),而房主的名单上恰好写的是空白名字(Owner未初始化)。只要你递上一张白纸,你就是这房子的主人。
2. 开始攻击
掌握了这个“幽灵钥匙”后,攻击者调用registerChain精准的参数注入精准的参数注入:
chainId:23tokenContract:0x00...(攻击者预设的恶意逻辑地址)signature:0x0000...0000(一段从未被私钥签名的全零字节流)
整个攻击就是,合约收到全零签名,判定“管理员身份验证通过”。registerChain函数执行,将攻击者指定的恶意合约注册为Chain ID23的合法跨链资产。随后,攻击者调用bridgeIn,利用这个“合法身份”凭空铸造代币,开启了收割模式。
03 资金追踪
理性思考的掠夺
链析安全团队对攻击者地址进行了全链路穿透,发现其行为极其克制。
1.精算式变现:攻击者铸造了10亿枚代币,精准抽走抛售了1.6亿枚换得199.5BNB(约$16.6万)。他拿走了流动性允许的最大值,避免了滑点过高。
2.销毁剩余:获利后,他直接销毁了剩余的8.37亿枚代币。
本次攻击导致Port3币价出现“断头铡”式暴跌,更致命的是信任溢价的归零。社区因攻击手法过于低级而质疑项目方的技术实力。
尽管项目方迅速采取了熔断措施并联系交易所封锁充值,但修复代码只需几分钟,修复共识却需要几个月。
写在最后:
在区块链的世界里,“无主之地”并不意味着自由,它意味着掠夺。
Port3攻击事件之所以让人痛心,不是因为黑客手段有多高明,而是因为防御方犯了一个连刚入门的Solidity开发者都不该犯的常识性错误,哪怕只是看一眼链上合约的Owner栏是否显示为0x000,或许就能避开这次攻击。
如果你有困扰和疑问,或不小心卷入这类事件
👇👇👇
也可以添加小助手微信号
如果你担心钱包安全
可以关注我们公众号
进行免费的安全检测
监测潜在风险,防止资产被盗
我们提供以下专业服务:
钱包安全体检:检测你的钱包是否存在授权风险。
加密资产追踪:已经被盗,可提供链上分析报告,帮你追踪资产流向。
防骗法律咨询:遭遇诈骗,可联系我们获得专业建议。

