论文标题
了解Linux内核中的并发漏洞
Understanding Concurrency Vulnerabilities in Linux Kernel
论文作者
论文摘要
尽管在分析与并发相关的软件错误和开发用于检测和修补它们的技术方面有很多工作,但很少关注与并发相关的安全漏洞。这两者的不同之处在于,并非所有错误都是漏洞:要利用错误,攻击者需要一种方法来触发其执行并造成损害,例如,通过揭示敏感数据或运行恶意代码。为了填补空白,我们对过去十年来Linux操作系统报告的并发漏洞进行了首次实证研究。我们专注于分析在常见漏洞和暴露(CVE)数据库中存档的确认漏洞,然后根据开发人员采用的错误类型,利用模式和补丁策略将其分类为不同的组。我们使用代码片段来说明单个漏洞类型和补丁策略。我们还使用统计数据来说明整个景观,包括每种漏洞类型的百分比。我们希望能阐明这个问题,例如,并发脆弱性继续对系统安全构成严重威胁,即使对于内核开发人员也很难进行分析和修补它们。因此,需要更多的努力来开发用于分析和修补这些漏洞的工具和技术。
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.