Vulnerability (computer security): Difference between revisions

Content deleted Content added
No edit summary
Tags: Reverted section blanking blanking Mobile edit Mobile app edit iOS app edit App section source
Reverted edits by 51.36.103.230 (talk): unexplained content removal (HG) (3.4.13)
Line 11:
A vulnerability is initiated when it is introduced into hardware or software. It becomes active and exploitable when the software or hardware containing the vulnerability is running. The vulnerability may be discovered by the vendor or a third party. Disclosing the vulnerability (as a [[software patch |patch]] or otherwise) is associated with an increased risk of compromise because attackers often move faster than patches are rolled out. Regardless of whether a patch is ever released to remediate the vulnerability, its lifecycle will eventually end when the system, or older versions of it, fall out of use.
 
==Causes ==
Despite developers' goal of delivering a product that works entirely as intended, virtually all [[software bugs|software]] and [[hardware bug|hardware]] contains bugs.{{sfn|Ablon|Bogart|2017|p=1}} If a bug creates a security risk, it is called a vulnerability.{{sfn|Ablon|Bogart|2017|p=2}}{{sfn|Daswani |Elbayadi|2021|p=25}}{{sfn|Seaman|2020|pp=47-48}} [[Software patch]]es are often released to fix identified vulnerabilities, but those that remain unknown ([[Zero-day (computing)|zero day]]s) as well as those that have not been patched are still liable for exploitation.{{sfn|Daswani |Elbayadi|2021|pp=26-27}} Vulnerabilities vary in their ability to be [[Exploit (computer security)|exploit]]ed by malicious actors,{{sfn|Ablon|Bogart|2017|p=2}} and the actual risk is dependent on the nature of the vulnerability as well as the value of the surrounding system.{{sfn|Haber |Hibbert|2018|pp=5-6}} Although some vulnerabilities can only be used for [[denial of service]] attacks, more dangerous ones allow the attacker to [[code injection|inject]] and run their own code (called [[malware]]), without the user being aware of it.{{sfn|Ablon|Bogart|2017|p=2}} Only a minority of vulnerabilities allow for [[privilege escalation]], which is necessary for more severe attacks.{{sfn|Haber |Hibbert|2018|p=6}} Without a vulnerability, the exploit cannot gain access.{{sfn|Haber |Hibbert|2018|p=10}} It is also possible for [[malware]] to be installed directly, without an exploit, if the attacker uses [[Social engineering (security)|social engineering]] or implants the malware in legitimate software that is downloaded deliberately.{{sfn|Haber |Hibbert|2018|pp=13–14}}
===Design factors===
Fundamental design factors that can increase the burden of vulnerabilities include:
*Complexity: Large, complex systems increase the probability of flaws and unintended [[File system permissions|access point]]s.<ref name=Vacca23>{{cite book
|last= Kakareka
|first=Almantas
|editor-last=Vacca
|editor-first=John
|title=Computer and Information Security Handbook
|series=Morgan Kaufmann Publications
|year=2009
|publisher= Elsevier Inc
|isbn= 978-0-12-374354-1
|page=393
|chapter=23
}}
</ref>
*Familiarity: Using common, well-known code, software, operating systems, and/or hardware increases the probability an attacker has or can find the knowledge and tools to exploit the flaw.<ref>{{cite book | title = Technical Report CSD-TR-97-026 | first = Ivan | last = Krsul | publisher = The COAST Laboratory Department of Computer Sciences, Purdue University | date = April 15, 1997 | citeseerx = 10.1.1.26.5435 }}</ref>
*Connectivity: any system connected to the internet can be accessed and compromised. [[Air gap (networking)|Disconnecting systems from the internet]] is one truly effective measure against attacks, but it is rarely feasible.{{sfn|Linkov|Kott|2019|p=2}}
*[[Legacy software]] and [[legacy hardware|hardware]] is at increased risk, but upgrading often is prohibitive in terms of cost and [[downtime]].{{sfn|Haber |Hibbert|2018|p=155}}
===Development factors===
Some [[software development]] practices can affect the risk of vulnerabilities being introduced to a code base. Lack of knowledge about secure software development or excessive pressure to deliver features quickly can lead to avoidable vulnerabilities to enter production code, especially if security is not prioritized by the [[company culture]]. This can lead to unintended vulnerabilities. The more complex the system is, the easier it is for vulnerabilities to go undetected. Some vulnerabilities are deliberately planted, which could be for any reason from a disgruntled employee selling access to cyber criminals, to sophisticated state-sponsored schemes to introduce vulnerabilities to software.{{sfn|Strout|2023|p=17}} Inadequate [[code review]]s can lead to missed bugs, but there are also [[Static application security testing|static code analysis]] tools that can be used as part of code reviews and may find some vulnerabilities.{{sfn|Haber |Hibbert|2018|p=143}}
 
[[DevOps]], a development workflow that emphasizes automated testing and deployment to speed up the deployment of new features, often requires that many developers be granted access to change configurations, which can lead to deliberate or inadvertent inclusion of vulnerabilities.{{sfn|Haber |Hibbert|2018|p=141}} Compartmentalizing dependencies, which is often part of DevOps workflows, can reduce the [[attack surface]] by paring down dependencies to only what is necessary.{{sfn|Haber |Hibbert|2018|p=142}} If [[software as a service]] is used, rather than the organization's own hardware and software, the organization is dependent on the cloud services provider to prevent vulnerabilities.{{sfn|Haber |Hibbert|2018|pp=135-137}}
===National Vulnerability Database classification===
The [[National Vulnerability Database]] classifies vulnerabilities into eight root causes that may be overlapping, including:{{sfn|Garg|Baliyan|2023|pp=17–18}}
#[[Improper input validation|Input validation]] (including [[buffer overflow]] and [[boundary condition]]) vulnerabilities occur when [[input checking]] is not sufficient to prevent the attacker from injecting malicious code.{{sfn|Garg|Baliyan|2023|p=17}}
# [[Access control]] vulnerabilities enable an attacker to access a system that is supposed to be restricted to them, or engage in [[privilege escalation]].{{sfn|Garg|Baliyan|2023|p=17}}
#When the system fails to handle and exceptional or unanticipated condition correctly, an attacker can exploit the situation to gain access.{{sfn|Garg|Baliyan|2023|p=18}}
#A [[configuration vulnerability]] comes into existence when configuration settings cause risks to the system security, leading to such faults as unpatched software or file system permissions that do not sufficiently restrict access.{{sfn|Garg|Baliyan|2023|p=18}}
#A [[race condition]]—when timing or other external factors change the outcome and lead to inconsistent or unpredictable results—can cause a vulnerability.{{sfn|Garg|Baliyan|2023|p=18}}
==Vulnerabilities by component==
===Hardware ===