Reading through publications about Web3 security, we’re struck by the same pattern that we’ve seen over and over again: tight focus on blockchain-specific functionality. A lot of useful digital currency, exchange, contract, blockchain, mining, etc., security information and research have been published. But much of that excellent work misses security needs that lie outside the specifics of Web3 and its blockchain, mining, and virtual state machines.
Have there been vulnerabilities in JSON implementations? You bet.
Should developers depending on these intermediate parts of the software stack worry? I would!
An example of Smart Contract Development Layers.
Yes, there are Web3-Specific Software Threats
Howard Poston provides a fairly thorough blockchain-specific threat model. The Cloud Security Alliance (CSA) generated a spreadsheet of Web3 exploitation techniques (threats). C4 (Crypto Consortium) offers the Cryptocurrency Security Standard (CCSS). There’s lots more useful Web3 specific security guidance available for the curious: descriptions of smart contract scanners, deep dives into compromises, etc.
Still, we at Resilient Software Security are left wondering where plain old (boring) AppSec/software security comes in? Is the blockchain immune to the plague of vulnerabilities from which every other piece of software suffers? How is that possible? (Hint: it’s not).
The Data Reveals Many Non-Web3 Software Security Issues As Well
CSA compiled a list of publicly available blockchain incidents. Out of 94 total incidents, 26 are attributed to non-Web3 related issues, like application vulnerabilities and cloud tenancy breaches. That is, of the total compiled, just under 30% were issues that vanilla software security normally tries to prevent and/or mitigate.
Out of 94 total blockchain security incidents, 26 are attributed to non-Web3 related issues
As an example of non-Web3 specific issues, the 1st (and reference) Ethereum Virtual Machine (EVM) implementation was written in C/C++, languages well-known for the ease with which memory vulnerabilities slip past scanning tools. Well-funded companies with very mature software security practices and tool sets still release the occasional nasty overflow error. How would the Ethereum programmers escape the same fate? I don’t think they can, assuming that they paid attention to C/C++ secure coding?
Couple the omnipresence of C++ errors to the EVM JSON interfaces and one has created a perfect environment for Remote Code Execution (RCE) compromise. Bear in mind that EVM JSON interfaces must be held in a relatively “open” state since they must be public by necessity. That means that attackers have ample opportunity to probe for opportunities to slip past input validations, if any.
We don’t mean to imply that I have some inside information on EVM issues. Still, there’s a fair chance that somewhere in the C++ EVM waits at least one overflow possibility that can be reached through a crafted bit of JSON data. Why? Because nearly every C++ JSON contains at least one as yet undiscovered remote code execution (RCE).
To be fair, the CSA spreadsheet cited above does include some common issues amongst the Web3-specific. The CCSS security standard requires periodic penetration testing, which certainly remains an important piece of the software security puzzle.
Plugging The Gap
Unfortunately, we at Resilient encounter an over-reliance on penetration testing far too often. Penetration tests are a scalpel to catch errors and misses that automated tools can’t find. When performed comprehensively, a penetration test should also be used to prove a system’s threat model. But reliance on penetration testing alone misunderstands its capabilities. Please see our other writing and presentations about the pitfalls of relying solely on penetration tests.
The short of it is, yes, we must pay attention to web3-specific issues. At the same time, all software must also attend to all the tasks required by unexciting but still very necessary, plain old, vanilla, not specifically Web3 software security.
The 5-Minute Security Assessment for Startups
If you are a blockchain startup, founder, or developer, you may have questions about how to properly protect your platform from both web3 and non-web3 security flaws. We're happy to meet and provide advice and recommendations that help you improve... for free.
The best and most efficient way that we do this is via our Free 5-Minute security assessment, designed specifically for software startups.
Yes, it really does take only 5 minutes, then we do the rest. Once you complete the short assessment form, we craft two confidential reports - A Security Assessment report that show what your gaps and risks are, as well as A Security Recommendations Report with custom solutions and priorities that your team can either begin implementing or add to your roadmap.