背景介绍
2026年1月27日,我们监控到BNB Smart Chain上针对PGNLZ 项目的攻击事件:
https://bscscan.com/tx/0xa7488ff4d6a85bf19994748837713c710650378383530ae709aec628023cd7cc
经过详细分析,攻击者在 2026 年 1 月 27 日,持续对PGNLZ项目发起攻击,攻击共造成约100k USD的损失。
攻击及事件分析
攻击者首先从Moolah Protocol利用闪电贷贷了1,059 BTCB,
随后,在 Venus Protocol 中抵押了 1,059 BTCB ,从而 borrow 了 30,000,000 USDT。
接着,攻击者在 PancakeSwap 调用函数 swapTokensForExactTokens ,利用 23,337,952 USDT 兑换了 982,506 PGNLZ ,但是却把这些 PGNLZ 销毁了(兑换给了 0xdead )。
兑换前,PancakeSwap Pool中有100,901 USDT和982,506 PGNLZ,此时PGNLZ的价格为1 PGNLZ = 0.1 USDT。兑换完成后,PancakeSwap Pool剩余23,438,853 USDT和4,240 PGNLZ,此时,PGNLZ的价格为1 PGNLZ = 5,528 USDT。
随后,攻击者调用函数swapExactTokensForTokensSupportingFeeOnTransferTokens,这个函数主要是支持Fee-On TransferToken也就是买卖带手续费的Token。PGNLZ通过_update来处理交易的fee,具体的调用链为:transferFrom -> _spendAllowance -> _transfer -> _update
因为本次是 sell ,所以会调用到 _handleSellTax 。
我们在看 _executeBurnFromLP 是如何实现的,
可以看到,_executeBurnFromLP会使用_update来burn掉pendingBurnFromLP数量的PGNLZ。在前一个区块查询到pendingBurnFromLP为4,240,113,074,578,781,194,669。
经过 burn 之后,LP Pool 中的只剩下的 0.00000001 PGNLZ ,此时 1 PGNLZ = 234,385,300,000,000 USDT ,拉升了 40 Billion 倍。
最后,攻击者将LP Pool掏空,还清了闪电贷后,获利100 k USDT。
总结
本次漏洞的成因是通缩的经济模型,在扣费或者 Burn LP Pool 时没有进行验证。导致攻击者利用通缩特性操控了 Token 的价格。建议项目方在设计经济模型和代码运行逻辑时要多方验证,合约上线前审计时尽量选择多个审计公司交叉审计。















