Incident: Copycat Coders Creating Vulnerable Apps by Copying Insecure Code

Published Date: 2019-10-07

Postmortem Analysis
Timeline 1. The software failure incident mentioned in the article happened when the researchers conducted their study on lazy developers copying vulnerable code snippets from Stack Overflow and Github. The incident was reported in an article published on 2019-10-07 [90965]. Therefore, the software failure incident likely occurred before October 2019.
System The system that failed in the software failure incident described in the article is: 1. Code snippets copied from Stack Overflow lacking basic security checks and using obsolete functions [90965]
Responsible Organization 1. Lazy developers who copied insecure code snippets from Stack Overflow and other sources without implementing proper security measures [90965]
Impacted Organization 1. Developers who copied insecure code snippets from Stack Overflow and other sources [90965].
Software Causes 1. Lack of basic checks in copied code snippets that would stop common attacks [90965] 2. Use of obsolete functions in the code snippets [90965] 3. Insufficient validation of user responses in the code snippets [90965] 4. Failure to look for attempts to break the application in the code snippets [90965]
Non-software Causes 1. Lack of proper checks in copied code snippets from Stack Overflow leading to security vulnerabilities [90965] 2. Reliance on obsolete functions in the code snippets [90965] 3. Insufficient validation of user responses in the code snippets [90965] 4. Failure to anticipate and prevent attempts to break the application in the code snippets [90965] 5. Developers' belief that code was safe because users could not change it once the app was running [90965]
Impacts 1. The software failure incident led to the creation of vulnerable apps that were susceptible to attacks due to developers copying insecure code snippets without proper security checks [90965].
Preventions 1. Implementing basic checks in the code snippets to stop common attacks could have prevented the software failure incident [90965]. 2. Using up-to-date functions and ensuring proper validation of user responses could have enhanced the security of the apps and prevented vulnerabilities [90965]. 3. Conducting thorough code reviews and testing for potential security risks before deploying the code could have helped in identifying and fixing the issues [90965].
Fixes 1. Developers should avoid blindly copying code from sources like Stack Overflow without understanding and verifying the security implications [90965]. 2. Implementing basic checks in the code to prevent common attacks and vulnerabilities [90965]. 3. Conducting thorough code reviews and testing to identify and rectify insecure code blocks [90965]. 4. Educating programmers on secure coding practices to reduce the reliance on potentially risky code snippets [90965].
References 1. Stack Overflow 2. Github 3. The Register tech news site 4. Canadian and Iranian universities

Software Taxonomy of Faults

Category Option Rationale
Recurring multiple_organization (a) The software failure incident having happened again at one_organization: The article does not provide specific information about the software failure incident happening again within the same organization or with its products and services. Therefore, it is unknown if a similar incident has occurred again at one organization. (b) The software failure incident having happened again at multiple_organization: The article mentions that the most widely used insecure code blocks were found in more than 2,800 separate projects on the Github website. This indicates that the software failure incident related to insecure code snippets has occurred in multiple projects across different organizations that utilize code from Github [90965].
Phase (Design/Operation) design, operation (a) The article discusses a software failure incident related to the design phase where lazy developers who copied code snippets from Stack Overflow and other websites introduced security vulnerabilities into their apps and programs. The copied code lacked basic checks to prevent common attacks, used obsolete functions, and did not adequately validate user responses, leading to potential security risks in over 2,800 projects on Github [90965]. (b) The article also touches upon a software failure incident related to the operation phase, where developers who were informed about the security risks in their code blocks on Github showed reluctance to fix the issues. Only 13% of the developers contacted said they had fixed the problematic code, while some even believed the code was safe because users could not change it once the app was running. This indicates a failure in addressing and rectifying issues introduced during the operation or maintenance of the system [90965].
Boundary (Internal/External) within_system (a) The software failure incident discussed in the article is primarily within the system. Lazy developers copying insecure code snippets from platforms like Stack Overflow and using them in their applications are creating vulnerabilities within the software itself. The lack of basic checks in the copied code chunks and the presence of obsolete functions contribute to the security risks within the system [90965].
Nature (Human/Non-human) non-human_actions, human_actions (a) The software failure incident occurring due to non-human actions: The article discusses how lazy developers who simply copy code solutions from websites like Stack Overflow without implementing proper security checks are creating apps vulnerable to attacks. The copied code chunks lacked basic checks to prevent common attacks, used obsolete functions, and did not adequately validate user responses, leading to security risks in the applications [90965]. (b) The software failure incident occurring due to human actions: The research team informed developers who were using insecure code chunks on Github about the security risks they introduced into their apps and programs. However, only 13% of the developers contacted said they had fixed the code, and some even declined to address the bugs. This highlights the human action aspect where developers were aware of the security issues but did not take necessary actions to rectify them [90965].
Dimension (Hardware/Software) software (a) The article does not provide information about a software failure incident occurring due to contributing factors originating in hardware. (b) The article discusses a software failure incident related to insecure code blocks in apps and programs. Lazy developers who copied code snippets from Stack Overflow without implementing basic security checks created vulnerable applications susceptible to attacks. The study found that many of the most copied code snippets lacked necessary security measures, such as using obsolete functions, inadequate user response checks, and neglecting attempts to break the application [90965].
Objective (Malicious/Non-malicious) non-malicious (a) The software failure incident discussed in the article is non-malicious. It highlights how lazy developers who copy code snippets from sources like Stack Overflow without implementing proper security measures are inadvertently creating vulnerable apps susceptible to attacks. The study found that many of the most copied code snippets lacked basic security checks, used obsolete functions, and did not adequately protect against common attacks. The incident was a result of developers taking shortcuts and not prioritizing secure coding practices, rather than any malicious intent [90965].
Intent (Poor/Accidental Decisions) poor_decisions The intent of the software failure incident discussed in the article is related to poor_decisions. The failure was attributed to lazy developers who copied code without implementing basic security checks, leading to vulnerable apps susceptible to attacks [90965]. The study highlighted that the copied code lacked necessary security measures, such as using obsolete functions, insufficient user response checks, and neglecting attempts to break the application, indicating poor decision-making in software development. Additionally, the researchers found that a significant number of developers did not address the security risks identified in their code, further emphasizing the consequences of poor decisions in software development [90965].
Capability (Incompetence/Accidental) development_incompetence (a) The software failure incident related to development incompetence is highlighted in the article [90965]. It discusses how lazy developers who copy solutions from Stack Overflow without understanding the code are creating apps vulnerable to attacks. The copied code lacks basic security checks, uses obsolete functions, and does not adequately protect against common attacks. The study found that many insecure code blocks were widely used in various projects on Github, indicating a lack of professional competence in ensuring secure coding practices. Additionally, the researchers contacted developers using problematic code but found that only a small percentage fixed the issues, while some believed the code was safe because users could not change it once the app was running. This lack of response and understanding of security risks further points to development incompetence in addressing software vulnerabilities.
Duration unknown The articles do not provide specific information about the duration of the software failure incident in terms of being permanent or temporary.
Behaviour value, other (a) crash: The article does not specifically mention a software failure incident related to a crash. (b) omission: The article does not specifically mention a software failure incident related to omission. (c) timing: The article does not specifically mention a software failure incident related to timing. (d) value: The article mentions that lazy developers who copy code snippets from Stack Overflow created apps that were vulnerable to attack due to lacking basic checks, using obsolete functions, and not checking user responses properly. This behavior can lead to the system performing its intended functions incorrectly [90965]. (e) byzantine: The article does not specifically mention a software failure incident related to a byzantine behavior. (f) other: The behavior described in the article is related to software vulnerabilities introduced by developers copying insecure code snippets, which can lead to security risks in apps and programs. This behavior can be categorized as a failure due to developers not implementing secure coding practices, potentially leading to system vulnerabilities and exploitation [90965].

IoT System Layer

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

Other Details

Category Option Rationale
Consequence theoretical_consequence (a) death: People lost their lives due to the software failure (b) harm: People were physically harmed due to the software failure (c) basic: People's access to food or shelter was impacted because of the software failure (d) property: People's material goods, money, or data was impacted due to the software failure (e) delay: People had to postpone an activity due to the software failure (f) non-human: Non-human entities were impacted due to the software failure (g) no_consequence: There were no real observed consequences of the software failure (h) theoretical_consequence: There were potential consequences discussed of the software failure that did not occur (i) other: Was there consequence(s) of the software failure not described in the (a to h) options? What is the other consequence(s)? The articles do not mention any direct consequences such as death, harm, impact on basic needs, property loss, or delays caused by the software failure incident discussed. The focus of the article is on the security risks posed by developers copying insecure code snippets, the lack of proper checks in the code, and the potential vulnerabilities introduced into apps and programs as a result. The consequences discussed are more related to the security implications and risks rather than direct physical or material harm to individuals or entities.
Domain other (a) The article does not specifically mention a software failure incident related to the production and distribution of information. (b) The article does not specifically mention a software failure incident related to transportation. (c) The article does not specifically mention a software failure incident related to natural resources. (d) The article does not specifically mention a software failure incident related to sales. (e) The article does not specifically mention a software failure incident related to construction. (f) The article does not specifically mention a software failure incident related to manufacturing. (g) The article does not specifically mention a software failure incident related to utilities. (h) The article does not specifically mention a software failure incident related to finance. (i) The article does not specifically mention a software failure incident related to knowledge. (j) The article does not specifically mention a software failure incident related to health. (k) The article does not specifically mention a software failure incident related to entertainment. (l) The article does not specifically mention a software failure incident related to government. (m) The article mentions a software failure incident related to the software development industry, where lazy developers who copied code from Stack Overflow created vulnerable apps [90965].

Sources

Back to List