Back to Blog

How a Vulnerability Is Silently Fixed by Coin98

Code Auditing
January 16, 2022

Last Friday, our monitoring system detected an attack to coin98 smart contract (0x8aaf408e06feed6a6a6182ea3c464035748b9b31 — the victim contract) on BSC. We immediately DMed the project owner through twitter, but got no response. Since the vulnerability still existed at that time, we did not make it public. Then after a couple of hours, we found that the project owner has created a new contract which fixed the vulnerability. As such, it is safe for us to summarize the vulnerability and the fix here.

Attack transaction and the root cause

The transaction raised by our internal monitoring system drew our attention. After a careful investigation, we confirmed that it’s due to the access control of the route parameter (means the router actually) in the swapExactTokensForTokens function, as follows:

This This contract blindly trusted the route and then invoked the swapExactTokensForTokens function of the router. Before this, it approves all the tokens owned by the victim contract to the route. However, the route could be passed by the attacker. In this case, the attacker can then transfer all the tokens by the victim to itself and then swap for WBNB to make a profit.

The following is one of the attack transaction.

The stealthy fix of the vulnerability

We DMed the project owner on Twitter last Friday, but got no response. We then double checked the contract today and found that there is a new smart contract (0x83f25d16bdf91f51120032f264dad0e1ab1c8227) has been deployed. This new contract has a whitelist for the route:

Conclusion

We have seen many cases that the passed parameter is blindly trusted by the smart contract. This DOES create a severe security hole.

DO NOT TRUST ANY PARAMETERS THAT ARE OUT OF THE CONTROL!

About BlockSec

BlockSec is a pioneering blockchain security company established in 2021 by a group of globally distinguished security experts. The company is committed to enhancing security and usability for the emerging Web3 world in order to facilitate its mass adoption. To this end, BlockSec provides smart contract and EVM chain security auditing services, the Phalcon platform for security development and blocking threats proactively, the MetaSleuth platform for fund tracking and investigation, and MetaSuites extension for web3 builders surfing efficiently in the crypto world.

To date, the company has served over 300 esteemed clients such as MetaMask, Uniswap Foundation, Compound, Forta, and PancakeSwap, and received tens of millions of US dollars in two rounds of financing from preeminent investors, including Matrix Partners, Vitalbridge Capital, and Fenbushi Capital.

Official website: https://blocksec.com/

Official Twitter account: https://twitter.com/BlockSecTeam

Sign up for the latest updates
From Incidents to Regulation: Why Crypto Institutions Need Blockchain Penetration Testing
Security Services

From Incidents to Regulation: Why Crypto Institutions Need Blockchain Penetration Testing

Exchanges, payment firms, custodians, and wallet providers now lose the most money beyond the smart contract—in signing, custody, keys, people, and supply chains. Code-level audit and transaction-level monitoring each leave a gap, and traditional penetration tests may miss crypto's signing and fund semantics. This article opens our blockchain penetration testing series with the two legs of the case for institutions in scope: where the risk actually comes from, and how NYDFS, DORA, VARA, SFC, and MAS treat adversarial testing across five jurisdictions.

What Is Blockchain Penetration Testing? Definitions and Boundaries
Security Services

What Is Blockchain Penetration Testing? Definitions and Boundaries

No widely accepted definition of blockchain penetration testing exists, and many proposed ones tangle it with audit, scanning, and bug bounty. This article sets out a working definition—an adversarial, hands-on assessment of a running system, under agreed scope and rules of engagement, that validates exploitable paths and control chains—and what web3 adds: a money-handling threat model whose defining composition gap is the off-chain-to-on-chain handoff. It then maps the five testable capabilities of that chain and routes nearby objectives to code audit, wallet security audit, web3 security testing, scanning, and bug bounty.

Rules of Engagement and Production Safety for Institutional Blockchain Penetration Testing
Security Services

Rules of Engagement and Production Safety for Institutional Blockchain Penetration Testing

A penetration test that touches signing, withdrawal, and ledger systems is prepared before it runs. This article follows the engagement lifecycle: turning a business decision into objective, scope, named owners, and authorized access; recording authority, permitted techniques, operating limits, prohibited activity, communications, and evidence handling in a Rules of Engagement document; and protecting live service with measurable stop criteria, monitoring, change coordination, and named pause authority. It closes with the remediation and retest that turn findings into validated controls.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit