While there is a large body of work on analyzing concurrency related software bugs and developing techniques for detecting and patching them, little attention has been given to concurrency related security vulnerabilities. The two are different in that not all bugs are vulnerabilities: for a bug to be exploitable, there needs be a way for attackers to trigger its execution and cause damage, e.g., by revealing sensitive data or running malicious code. To fill the gap, we conduct the first empirical study of concurrency vulnerabilities reported in the Linux operating system in the past ten years. We focus on analyzing the confirmed vulnerabilities archived in the Common Vulnerabilities and Exposures (CVE) database, which are then categorized into different groups based on bug types, exploit patterns, and patch strategies adopted by developers. We use code snippets to illustrate individual vulnerability types and patch strategies. We also use statistics to illustrate the entire landscape, including the percentage of each vulnerability type. We hope to shed some light on the problem, e.g., concurrency vulnerabilities continue to pose a serious threat to system security, and it is difficult even for kernel developers to analyze and patch them. Therefore, more efforts are needed to develop tools and techniques for analyzing and patching these vulnerabilities.
翻译:虽然在分析与货币有关的软件错误和开发探测和弥补这些错误的技术方面有大量的工作,但很少注意与货币有关的安全弱点,两者是不同的,因为并不是所有的错误都是弱点:一个错误要被利用,攻击者需要有一种方法来触发其执行并造成损害,例如,通过披露敏感数据或运行恶意代码。为了填补这一空白,我们对Linux操作系统在过去十年中所报告的同货币弱点进行第一次经验性研究。我们注重分析共同脆弱性和暴露数据库中存档的经证实的脆弱性,然后根据错误类型、利用模式和开发者采用的补丁战略将其分类为不同的群体。我们使用代码片段来说明个别脆弱性类型和补丁战略。我们还使用统计数据来说明整个景观,包括每种脆弱性类型的百分比。我们希望对问题有所了解,例如同货币脆弱性继续对系统安全构成严重威胁,因此即使内核开发者也难以分析和补补补这些脆弱性。因此,我们需要更多的努力来开发各种工具和技术。