零时科技 || PGNLZ 攻击事件分析
2026-01-2816:21
零时科技
2026-01-28 16:21
零时科技
2026-01-28 16:21
收藏文章
订阅专栏


背景介绍


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

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

专栏文章
查看更多
数据请求中

推荐专栏

数据请求中

一起「遇见」未来

DOWNLOAD FORESIGHT NEWS APP

Download QR Code