The Internet is currently on fire because of what is being described as an “OpenSea exploit”, but was really an OpenSea NFT attack, where people are losing their NFTs off the platform to an unknown attacker. As of writing there have been dozens of victims to this attack, but contrary to initial reports it does not appear that the OpenSea smart contract was exploited, but rather a traditional phishing attack that collected signed transactions ahead of time.
So it appears that the anatomy of the attack is a boring old IT security issue and not a fancy smart contract exploit. Because it was known that OpenSea was in the middle of a systems migration the adversary was able to use a traditional phishing campaign to convince users that they needed to sign a 0 cost transaction as part of the OpenSea migration. In reality this transaction was delegating access to a malicious smart contract written by the attacker(s). Once users had pre-signed this delegated authorization the attacker(s) were able to create 0 Ether purchase order for the NFTs held in the compromised wallet. With patience the attacker(s) were able to sit on that pre-signed authorization until they had a few more ready and then move on them all at once. Yesterday.
Like most cyber attacks there is going to be a lot of victim blaming here. People love to blame the victims of information security attacks because it makes us feel smarter. “I wasn’t a victim because I’m smart, so therefore you were a victim because you weren’t smart enough” is a very common attitude in my industry. But its wrong. While people are absolutely responsible for their own actions, and you really shouldn’t click links in emails and then authenticate with anything, username or web wallet, that doesn’t mean that anyone is responsible for the hack other than the attacker. That’s important to remember.
That shouldn’t stop you from protecting yourself though. Never open links that look phishy. If you have access to significant funds you should use an email service with very good security protection and possibly a real enterprise security filtering solution like ProofPoint, Cisco’s IronPort or Microsoft’s Advanced Email Threat Protection (if you’re on Office 365). Using a protonmail account is great for privacy, but lousy for the other parts of security since they very deliberately don’t scan your mail with advanced tools. This is why threat modelling is important. To most people they are far greater risk of issues from spam or malicious activity than they are from government surveillance. That’s not universally true, and I love protonmail, but its mostly true for most people. And most importantly do not sign anything with your wallet without double-checking. Ever. And practice good wallet hygiene with multiple levels of wallets.
Now, why do I bring up the UTXO model in the headline? Well, the way this hack worked seems to be that the attacker used delegated account access to the Ethereum accounts that contained the NFTs in order to call the legitimate OpenSea smart contracts and initiate the transfers for 0 Ether. You can read about it in the thread below.
Chia does not have accounts. Chia has coins that are signed by private keys. You cannot delegate access to an entire wallet to someone else, the functionality simply does not exist. You can, in theory, delegate access to a specific coin to someone else, although I don’t believe anyone has written that yet, but that will only expose a single coin (and might be more obvious). With a UTXO coin model cryptocurrency you might not be able to enable some of the same functionality as easily as you can with Ethereum’s account model access, and it certainly can be a pain in the ass when using a lot of coins, but it is more secure as even the contents of a wallet subdivided with some level of security barrier.
A similar theoretical attack on Chia would have, at most, cost users a single NFT that they had signed for and it would have been a specific one which would likely have caused more warning bells to go off since it would be weird to pre-sign access to your NFTs. The reason this worked is that in the Ethereum ecosystem people are used to delegating access to their wallet for execution of smart contracts. You do it a lot with NFTs. And it is a terrible security practice.
Because we do not yet have a real NFT standard from Chia Network is it impossible to guarantee that their format will allow for a better operating NFT marketplace, but at the same time with how the currency is architected it seems highly unlikely it could be worse. From conversations with the team they are developing the standard precisely with these kinds of Ethereum shortcomings in mind and using the advantages of hindsight to construct an NFT smart coin that is far less susceptible to these kinds of attack. Also, not having to sign away your entire wallet helps a lot too.