While security issues are always huge for the crypto world, the vulnerability in the Polygon Blockchain was even more devastating. As observed, exploiting the bug could let an adversary make fraudulent withdrawals up to 233 times.
Polygon Blockchain Vulnerability
Security researcher Gerhard Wagner has shared insights about a critical vulnerability in the Polygon blockchain. Briefly, Polygon is a dedicated framework for connecting Ethereum-compatible blockchain networks.
As Wagner observed, a double-spending vulnerability existed in the protocol to allow an adversary to double the amounts during withdrawals. What made it severe was that the adversary could do this up to 233 times, hence, cashing out hefty amounts.
The bug affected the L1 checkpoints of the Plasma network where deposits and withdrawals take place. Withdrawing funds for a successful transaction requires the user to burn the tokens on the Plasma chain and present receipts of the burn transactions to the Plasma bridge.
That’s where the vulnerability appeared, allowing the user to burn a single transaction up to 233 times. For instance, an initial deposit of 200,000 could allow withdrawing 46.6 million by exploiting the bug.
The researcher has shared the technical details about the vulnerability in his post.
Researcher Won $2 Million Bounty
The researcher found the vulnerability after he decided to analyze the network following their bug bounty announcement. Under this program at Immunefi, researchers can win up to $2 million as rewards for reporting vulnerabilities.
Hence, the researcher reported the matter to Polygon, for which the developers rewarded him with a $2 million bounty.
As for the bug, Polygon fixed it by “hard coding the encoding meta character.”
Whereas, regarding why the bug appeared in the first place, Wagner stated,
If I had to guess why the bug happened, I would say it might be due to using someone else’s code and not having a 100% understanding of what it does.
Thus, he recommends staying cautious while using existing codes.
It’s OK to use exiting building blocks when you write smart contracts, but you must understand all implications of doing so. At the end of the day, it’s your code; it does not matter if you or someone else wrote it.
Let us know your thoughts in the comments.