Mosca Hack
Incident Overview
On January 8, 2025, the Mosca smart contract on Binance Smart Chain was exploited due to flawed balance resets in the exitProgram function. The attacker took advantage of improperly cleared user balances, repeatedly withdrawing tokens and resulting in a total loss of about $19,500.
The vulnerability stemmed from the withdrawAll function, which calculates a user’s withdrawal amount by summing user.balance, user.balanceUSDT, and user.balanceUSDC. After the withdrawal, only user.balance was set to zero, leaving user.balanceUSDT and user.balanceUSDC intact. An attacker increased their balance in USDC, joined the contract’s reward queue, and then repeatedly invoked exitProgram to withdraw tokens multiple times.
Each call exploited the non-zero USDT/USDC balances that were never reset, ultimately allowing the attacker to accumulate roughly $19,500 in stolen funds.
Incident Report
Protocol Information
What the Attacker Needed to Succeed
Understanding the prerequisites for this type of attack helps auditors identify protocols that are most at risk and helps developers build better defenses.
What Auditors Should Check
If you're auditing a protocol with similar architecture to Mosca, these are the critical security checks that could have prevented this incident (January 2025).
- Verify all logic paths related to Other are guarded by proper access controls and input validation
- Review privileged functions (owner, admin, governance) for potential abuse vectors - centralization risks should be documented and bounded with timelocks or multi-sigs
Master these auditing techniques with hands-on labs and real exploit scenarios in the Smart Contract Hacking course.
Free TrialSources & References
Learn to Prevent the Next Mosca
The Mosca hack is one of many attacks that skilled auditors are trained to detect before deployment. Master real exploit patterns and defense techniques with hands-on Web3 security training.