Incident: Decentralized Autonomous Organization (DAO) Heist: Ethereum Smart Contract Vulnerability.

Published Date: 2016-06-17

Postmortem Analysis
Timeline 1. The software failure incident happened in June 2016. - Clues from Article 45008: The incident was reported on Friday, and the article was published on 2016-06-17. - Using the published date of the article and the mention of the incident happening on Friday, the incident occurred on June 17, 2016. [45008]
System 1. Decentralized Autonomous Organization (DAO) [Article 45008, Article 44659] 2. Ethereum system [Article 45008, Article 44659]
Responsible Organization 1. The hacker who exploited a weakness in the code of the Decentralized Autonomous Organization (DAO) was responsible for causing the software failure incident [45008]. 2. The thief who made off with $50 million of virtual currency from the DAO was also responsible for causing the software failure incident [44659].
Impacted Organization 1. Investors in the Decentralized Autonomous Organization (DAO) who poured more than $150 million of Ether into the project [45008, 44659] 2. Participants who wanted to prove the safety and security of digital currency [45008]
Software Causes 1. The software failure incident was caused by a vulnerability in the code of the Decentralized Autonomous Organization (D.A.O.) project, known as the recursive call vulnerability, which allowed a hacker to exploit a weakness in the code and move money into a side fund in an endlessly repeating loop [45008]. 2. The hack in the D.A.O. project was likely facilitated by a programming mistake common in smart contracts, where the attacker exploited a flaw that allowed for automatic repetition of transactions before the system checked the balance, enabling the hacker to withdraw more money than initially put in [44659].
Non-software Causes 1. Human greed and mistakes [Article 45008] 2. Vulnerabilities in the underlying code of the project [Article 45008] 3. Philosophical questions about the viability of decentralized systems [Article 44659] 4. Unintended consequences of smart contracts due to human error [Article 44659] 5. Lack of trust in humans despite the aim to eliminate human involvement [Article 44659]
Impacts 1. Loss of over $50 million in digital money from the Decentralized Autonomous Organization (DAO) project, leading to the end of the project and affecting thousands of participants [45008]. 2. Raised concerns and debates about the viability and principles of virtual currencies like Bitcoin and Ether [45008]. 3. Decrease in the price of Ether by 33% and Bitcoin also falling after the attack, impacting the cryptocurrency market [45008]. 4. Exposed vulnerabilities in smart contracts and the Ethereum system, leading to philosophical questions about the viability of decentralized systems [44659]. 5. Divided opinions within the Ethereum community on whether to reverse the theft transactions, highlighting the challenges of governance and decision-making in decentralized systems [44659].
Preventions 1. Conducting thorough code audits and security assessments to identify vulnerabilities in the software [45008, 44659]. 2. Implementing stricter validation and verification processes to catch potential programming mistakes, such as the one that allowed the hack to occur [44659]. 3. Enhancing the governance structure of the decentralized system to ensure better decision-making and oversight [45008]. 4. Developing and enforcing stricter security protocols to prevent unauthorized access and exploitation of the system [45008]. 5. Educating developers and users about common pitfalls in smart contract programming languages to avoid unintended consequences [44659].
Fixes 1. Making a one-time change to the code to recover the frozen money by potentially implementing a fork in the Ethereum network [45008]. 2. Reversing the theft by releasing a new version of the Ethereum software that tweaks the ledger to essentially undo the DAO heist transactions, if enough people install this version [44659].
References 1. Computer scientists involved in the project, such as Emin Gün Sirer [Article 45008] 2. Community organizers and employees of Slock.it, the company that wrote the project's software [Article 45008] 3. Programmers working on the Ethereum network [Article 45008] 4. Vitalik Buterin, founder and lead programmer on the Ethereum project [Article 45008] 5. Stephan Tual, COO of Slock.it [Article 44659] 6. Andrew Miller, a PhD student at the University of Maryland who studies smart contracts [Article 44659] 7. Emin Gun Sirer, a Cornell University computer scientist [Article 44659] 8. Alex Van de Sande, a user experience designer who has contributed to several Ethereum-related projects [Article 44659]

Software Taxonomy of Faults

Category Option Rationale
Recurring one_organization (a) The software failure incident having happened again at one_organization: - The incident involving the theft of virtual currency from the Decentralized Autonomous Organization (DAO) project on the Ethereum network is a significant software failure incident that occurred within the same organization [45008, 44659]. - The DAO project, built on Ethereum, experienced a hack that resulted in the theft of $50 million worth of Ether, showcasing vulnerabilities in the code and smart contracts used by the organization [45008, 44659]. (b) The software failure incident having happened again at multiple_organization: - The articles do not mention any specific instances of similar software failure incidents occurring at other organizations or with their products and services.
Phase (Design/Operation) design, operation (a) The software failure incident in the articles can be attributed to design-related factors introduced during the system development phase. The incident involved a hack that exploited a vulnerability in the code of the Decentralized Autonomous Organization (DAO) project, leading to the theft of over $50 million of digital money [Article 45008]. The DAO was built on Ethereum, a system designed for decentralized applications, with the intention of creating a more democratic financial institution without centralized control. However, the incident highlighted how the code can be vulnerable to human greed and mistakes, emphasizing the importance of robust design and development practices to prevent such attacks. (b) Additionally, the software failure incident can also be linked to operation-related factors introduced during the operation or misuse of the system. The hacker behind the attack on the DAO project was able to exploit a programming mistake common in smart contracts, allowing them to repeatedly withdraw funds from the system before the balance was checked, ultimately leading to the significant theft [Article 44659]. This operational vulnerability highlights the importance of secure operational practices and ongoing monitoring to detect and prevent unauthorized activities that can compromise the system's integrity.
Boundary (Internal/External) within_system, outside_system From the provided articles, the software failure incident related to the theft of $50 million from the Decentralized Autonomous Organization (DAO) project involved contributing factors both within and outside the system. 1. **Within the System (within_system):** - The incident involved a vulnerability in the code of the DAO project, specifically a recursive call vulnerability that allowed the hacker to move money into a side fund in an endlessly repeating loop [Article 45008]. - The DAO project was built on Ethereum, a system designed for building decentralized applications, and the attack exploited a programming mistake common in smart contracts [Article 44659]. - The programming language used to write smart contracts, Solidity, made it easy to make the mistake that led to the theft [Article 44659]. 2. **Outside the System (outside_system):** - The theft was attributed to a hacker who exploited a weakness in the code of the DAO project, indicating an external threat to the system [Article 45008]. - The thief transferred the stolen funds into a clone of the DAO, likely with code that delays payouts for a few weeks, showing an external manipulation of the system [Article 44659]. - The incident raised questions about the viability of decentralized systems and the human factor in such systems, suggesting external factors influencing the success or failure of the project [Article 44659].
Nature (Human/Non-human) non-human_actions, human_actions (a) The software failure incident occurring due to non-human actions: - The incident involved a hacker exploiting a weakness in the code of the Decentralized Autonomous Organization (DAO) to siphon more than $50 million of digital money [Article 45008]. - The thief transferred the stolen funds into a clone of the DAO, likely including code that delays payouts for a few weeks, indicating a mechanism set up within the software itself [Article 44659]. (b) The software failure incident occurring due to human actions: - Prior to the attack, computer scientists had pointed out vulnerabilities in the DAO's underlying code, warning that such an incident was possible or likely, indicating human oversight or errors in the code [Article 45008]. - The attack was likely facilitated by a programming mistake in the smart contract code, which allowed the hacker to exploit a common vulnerability in smart contracts [Article 44659].
Dimension (Hardware/Software) software (a) The software failure incident reported in the articles was primarily due to contributing factors originating in software. The incident involved a hacker exploiting a vulnerability in the code of the Decentralized Autonomous Organization (DAO) project, leading to the theft of over $50 million of digital money [45008, 44659]. The attack was facilitated by a recursive call vulnerability in the code, allowing the hacker to move funds into a side fund in an endlessly repeating loop [45008]. Additionally, the incident highlighted the unintended consequences of smart contracts, where the attacker exploited a programming mistake common in smart contracts to siphon off funds [44659]. (b) The software failure incident was not attributed to contributing factors originating in hardware. The focus was on vulnerabilities in the software code, particularly in the DAO project built on Ethereum, rather than any hardware-related issues [45008, 44659].
Objective (Malicious/Non-malicious) malicious, non-malicious From the provided articles: (a) Malicious: The software failure incident was caused by a hacker who exploited a weakness in the code of the Decentralized Autonomous Organization (DAO) to steal over $50 million of digital money [45008]. The hacker used a recursive call vulnerability to move money away from the DAO into a side fund in an endlessly repeating loop, leading to chaos and prompting discussions on how to recover the stolen funds [45008]. The incident raised concerns about the vulnerability of virtual currencies like Bitcoin and Ether to human greed and malicious attacks [45008]. (b) Non-malicious: The software failure incident also involved unintended consequences of smart contracts in the DAO, where a programming mistake allowed the attacker to exploit a common flaw in smart contracts, enabling them to withdraw more money than they put in [44659]. The incident highlighted the challenges of developing secure smart contracts and the need for vigilance in preventing such flaws, even though the developers tried to be vigilant about preventing such vulnerabilities [44659]. The incident demonstrated that despite efforts to create systems based on immutable rules of mathematics, human factors and mistakes can still impact the functioning of the software [44659].
Intent (Poor/Accidental Decisions) poor_decisions (a) The intent of the software failure incident was related to poor_decisions. The incident involved a hacker exploiting a weakness in the code of the Decentralized Autonomous Organization (DAO) to steal over $50 million of digital money [45008]. The DAO was designed to be a decentralized investment fund where investors could vote on which companies to fund, aiming to eliminate the need for centralized control. However, the vulnerability in the code allowed the hacker to execute a malicious transaction and drain a significant portion of the funds [44659]. The incident highlighted the risks associated with relying solely on code and the potential consequences of poor decisions in software development.
Capability (Incompetence/Accidental) development_incompetence (a) The software failure incident in Article 44659 was related to development incompetence. The incident involved a theft of $50 million of virtual currency due to a programming mistake in the smart contract of the Decentralized Autonomous Organization (DAO) built on Ethereum. The attacker exploited a common programming mistake in smart contracts, allowing them to repeatedly withdraw funds before the system checked the balance, leading to the significant theft [44659]. (b) The software failure incident in Article 45008 was accidental in nature. The incident involved a hacker exploiting a weakness in the code of the Decentralized Autonomous Organization (DAO) to steal over $50 million of digital money. The attack was not intentional but rather a result of vulnerabilities in the underlying code that were pointed out by computer scientists before the theft occurred [45008].
Duration permanent, temporary (a) The software failure incident in the articles appears to be more permanent in nature. The incident involved a hacker siphoning more than $50 million of digital money from the Decentralized Autonomous Organization (DAO) project, leading to significant financial loss and raising doubts about the viability of virtual currencies like Bitcoin and Ether [45008]. The incident highlighted vulnerabilities in the code underlying the project, leading to a debate about potential changes to the code to recover the stolen funds [45008]. The attack on the DAO project was described as a heist that raised philosophical questions about the trustworthiness of decentralized systems and the role of humans in such systems [44659]. (b) The software failure incident could also be considered temporary to some extent. Efforts were made to potentially reverse the theft by considering changes to the ledger through a new version of the software that could essentially undo the transactions related to the heist [44659]. There were discussions within the Ethereum community about the possibility of refunding the stolen funds, indicating a potential temporary solution to address the consequences of the hack [44659].
Behaviour value, other (a) crash: The incident involving the Decentralized Autonomous Organization (DAO) and Ethereum was not a crash where the system loses state and does not perform any of its intended functions. Instead, it was a case of a hacker exploiting vulnerabilities in the code to siphon off a significant amount of digital money [45008]. (b) omission: The software failure incident did not involve the system omitting to perform its intended functions at an instance(s). It was more about a malicious actor exploiting a vulnerability in the code to carry out a theft [45008]. (c) timing: The timing of the software failure incident was not related to the system performing its intended functions too late or too early. It was more about the exploitation of vulnerabilities in the code leading to a significant theft of digital money [45008]. (d) value: The failure in this incident was related to the system performing its intended functions incorrectly, allowing a hacker to steal a substantial amount of digital money from the Decentralized Autonomous Organization project [45008]. (e) byzantine: The software failure incident did not exhibit behaviors of a byzantine failure where the system behaves erroneously with inconsistent responses and interactions. It was more about a targeted attack exploiting vulnerabilities in the code [45008]. (f) other: The behavior of the software failure incident can be categorized as a security breach or hack, where a malicious actor exploited vulnerabilities in the code to steal a significant amount of digital money from the Decentralized Autonomous Organization project [45008].

IoT System Layer

Layer Option Rationale
Perception None None
Communication None None
Application None None

Other Details

Category Option Rationale
Consequence property, theoretical_consequence (d) property: People's material goods, money, or data was impacted due to the software failure In the software failure incident involving the Decentralized Autonomous Organization (DAO) and Ethereum, a hacker managed to siphon off more than $50 million of digital money from the project, affecting the investors who had contributed to the project with Ether [Article 45008]. The theft led to chaos among investors and users, prompting discussions on potential solutions to recover the stolen funds [Article 44659]. The incident highlighted vulnerabilities in the code and the potential financial impact on those involved in the project.
Domain finance (a) The failed system was related to the finance industry, specifically involving virtual currencies like Bitcoin and Ether. The incident involved the theft of over $50 million from the Decentralized Autonomous Organization (DAO), a virtual currency project [45008, 44659]. (h) The software failure incident was directly related to the finance industry as it involved a virtual currency project, the Decentralized Autonomous Organization (DAO), which aimed to act as a decentralized investment fund funded by investors using Ether [45008, 44659].

Sources

Back to List