
背景介绍
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 的价格。建议项⽬⽅在设计经济模型和代码运⾏逻辑时要多⽅验证,合约上线前审计时尽量选择多个审计公司交叉审计。
免责声明:本文提供的信息不是交易建议。BlockWeeks.com不对根据本文提供的信息所做的任何投资承担责任。我们强烈建议在做出任何投资决策之前进行独立研究或咨询合格的专业人士。