2 Oct 2026, 13:05 UTC · Kestrelle Launchpad
BNB Chain
- Attack class
- Privileged parameter abuse (rug pull)
- Events recorded
- 7
- Alerts raised
- 7 (2 critical)
- First alert
- At the first malicious action
- Contained
- +55 min
- Pool liquidity removed
- 96%
- GLF supply minted by owner
- 40%
- Sale claims
- Paused
Liquidity lock shortened and drained on a launchpad sale
An owner-only setter moved a liquidity unlock date forward by six months; the pool was drained four minutes later.
Kestrelle’s LiquidityLocker let the platform owner reassign any lock and let a lock owner change its unlock time without a lower bound. The GLF project lock was reassigned to the project deployer, its unlock date moved from April 2027 to three minutes ahead, and 96% of pool liquidity was withdrawn. The deployer then minted 40% of GLF supply through a mint function the sale page described as disabled and sold it into what remained of the pool.
Root cause
Lock guarantees depended on two privileged setters: transferLockOwnership (platform owner) and setUnlockTime (lock owner), neither timelocked or restricted to extending a lock. The GLF token kept an owner-only mint function. Users relied on a promise that the code did not enforce.
Detection
R-02 fired on the lock owner change at 13:05, and R-09 at critical severity on the unlock-date change two minutes later. Both alerts arrived before the liquidity was withdrawn, but nobody outside the platform owner could act on them: the locker had no guardian or pause.
Timeline
- Preparation20 Sept 2026, 09:12 UTC
Deployer funded from an exchange
The GLF deployer received 3 BNB from deposit cluster EX-19 eight days before the sale closed.
- Preparation28 Sept 2026, 16:00 UTC
Sale finalised and liquidity locked
Sale proceeds seeded the GLF/WBNB pool and the LP tokens were locked until 1 April 2027.
- Execution2 Oct 2026, 13:05 UTC
Lock reassigned to the deployer
The platform owner transferred lock 2217 to the deployer address.
Events EV-1601
- Execution2 Oct 2026, 13:07 UTC
Unlock date moved forward
setUnlockTime moved the unlock to 13:10 the same day.
Events EV-1602
- Execution2 Oct 2026, 13:11 UTC
Liquidity withdrawn
96% of LP tokens were redeemed for the underlying WBNB and GLF.
Events EV-1603
- Execution2 Oct 2026, 13:12 UTC
Owner mint
40% of supply minted to the deployer through a function described as disabled.
Events EV-1604
- Execution2 Oct 2026, 13:15 UTC
Minted tokens sold
Sold into the remaining 4% of reserves.
Events EV-1605
- Containment2 Oct 2026, 14:00 UTC
Claims paused
The platform owner paused GLF sale claims.
Events EV-1606
- Post-incident3 Oct 2026, 10:00 UTC
Platform ownership transferred
Ownership of the sale factory moved to an address with no history. The investigation remains open.
Events EV-1607
Behavioural indicators
- Lock owner change followed by an unlock-time change within minutes
- Owner mint on a token whose sale page states minting is disabled
- Liquidity removal above 90% of reserves in a single transaction
What to change
- Lock contracts should only allow extensions; shortening a lock should be impossible rather than permissioned.
- Token contracts listed by a launchpad should be checked for retained mint, blacklist and fee setters before a sale opens.
- An alert is only useful when someone independent of the alerted role can act on it.
Further reading: Detecting suspicious on-chain behaviour before the exploit transaction · Upgradeable proxy security: storage, selectors and the upgrade path


