一次精心设计的“自爆”:PGNLZ攻击事件分析

This article is not available in the current language yet. Showing the original version.
2026 年 1 月 27 日,BNB Smart Chain 上 PGNLZ 项目遭攻击,攻击者借闪电贷、抵押借款后,利用 PancakeSwap 交易操控 Token 价格,因项目通缩模型未验证扣费及 Burn 逻辑,致约 10 万 USD 损失。建议项目方设计时多验证,合约上线前选多家审计公司交叉审计。

背景介绍

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 的价格。建议项⽬⽅在设计经济模型和代码运⾏逻辑时要多⽅验证,合约上线前审计时尽量选择多个审计公司交叉审计。

Share to:

Author: 零时科技

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: 零时科技. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
PANews APP
US stocks closed mixed, with COIN falling more than 3.79%.
PANews Newsflash