PSA: Do This and Prevent Your dApp from Getting Hacked
Updated: Dec 17, 2021
Update: A Cryptoslate article incorrectly stated "Cardano has a universal app exploit". This is not true. There is a common mistake dApp developers keep making. The rapid development of new dApps with the vulnerability has made public discussion difficult. This blog post is to encourage Plutus developers to reach out to knowledgable parties privately, to keep the number of vulnerable UTxOs from growing.
Update 2: IOG has published and disclosed the attack vector now: https://plutus.readthedocs.io/en/latest/reference/common-weaknesses/double-satisfaction.html?highlight=double%20satisfication
Since Mid-October, every Cardano dApp with publicly accessible smart contract code, has had a similar exploit in their initial smart contract.
All of the dApps have patched their smart contracts to prevent against the exploit.
To our knowledge, none of the UTxOs have been attacked, however since the exploit is live there has not been a public post-mortem explaining the attack in detail.
A full in-depth description is coming. Additionally, Canonical has been building consensus privately among the Plutus developer community on how to prevent this exploit, initially through best practices, and ultimately via design changes to the Plutus smart contract system.
For now, if you are developing a dApp, and plan to release within the next month, reach out to Canonical, MLabs, Well-Typed, IOHK or developers of the affected dApps, to ensure your code does not have the same class of exploits.
If you do not understand the nature of the attack, there is a high likelihood you have it in your code. Additionally, mitigating the attack has ramifications around the design and efficiency of smart contracts, which can lead to considerable amounts of redesign if you are not aware of the design constraints early on.
At Canonical, we assumed as early developers of Plutus smart contracts, we would be the first to experience and learn of these attack vectors. We look forward to working with the community to help prevent this vulnerability from spreading, and when it safe to do so, publicly providing education and suggestions on how to prevent this exploit from emerging in the future.
Feel free to contact use here, to setup a time to discuss the details in depth.