Context: The Heartbleed vulnerability brought OpenSSL to international attention in 2014. The almost moribund project was a key security component in public web servers and over a billion mobile devices. This vulnerability led to new investments in OpenSSL. Objective: The goal of this study is to determine how the Heartbleed vulnerability changed the software evolution of OpenSSL. We study changes in vulnerabilities, code quality, project activity, and software engineering practices. Method: We use a mixed methods approach, collecting multiple types of quantitative data and qualitative data from web sites and an interview with a developer who worked on post-Heartbleed changes. We use regression discontinuity analysis to determine changes in levels and slopes of code and project activity metrics resulting from Heartbleed. Results: The OpenSSL project made tremendous improvements to code quality and security after Heartbleed. By the end of 2016, the number of commits per month had tripled, 91 vulnerabilities were found and fixed, code complexity decreased significantly, and OpenSSL obtained a CII best practices badge, certifying its use of good open source development practices. Conclusions: The OpenSSL project provides a model of how an open source project can adapt and improve after a security event. The evolution of OpenSSL shows that the number of known vulnerabilities is not a useful indicator of project security. A small number of vulnerabilities may simply indicate that a project does not expend much effort to finding vulnerabilities. This study suggests that project activity and CII badge best practices may be better indicators of code quality and security than vulnerability counts.
翻译:目标:本项研究的目标是,确定 " 核心脆弱性 " 项目如何改变了 " 开放SSL " 软件的演变。我们研究了脆弱性、代码质量、项目活动和软件工程做法方面的变化。方法:我们采用混合方法,从网站收集多种类型的定量数据和定性数据,并与从事 " 重度 " 后变化的开发者进行访谈。我们使用 " 回归不连续 " 分析来确定 " 心脏 " 后代码和项目活动衡量标准的水平和斜度的变化。结果: " 开放SSL " 项目在 " 心脏 " 后大大改进了代码质量和安全性。到2016年底,每月承诺数可能增加两倍,发现91个脆弱性并固定,代码复杂度显著下降。OpenSSL获得了CII最佳做法徽章,认证其使用 " 良好公开源 " 开发做法。结论: " 开放SSL " 项目提供了 " 回归不连续 " 分析 " 确定 " 代码 " 代码 " 和 " 代码 " 度 " 度 " 变化 " 变化度 " 变化度 " 的模型,以 " 心脏 " 生成 " 代码 " 后 " 代码 " 的 " 度 " 度 " 度 " 度 " 度 " 标准 " 标准 " 值 " 值 " 变化 " 变化 " 后 " 变化的 " 。结果: " 变化性 " 变化性 " 变化性 " 变化性 " 变化性 " 变化性 " 分析 " 后 " 变化性 " 变化性 " 变化性 " 变化性 " 变化性 " 变化性 " ;结果: " 是指 " 的 " ;结果: " : " : " : " : " 变化性项目项目项目项目项目在 " 变化性 " 后对 " 值的 " 值的 " 变化性 " 变化性 " 变化性 " 值的 " 变化性 " 变化性 " 变化性 " 值的 " 变化性 " 变化性 " 变化性 " ;结果: " 指标码 " ; " 指指指指指指的 " 后 " 后 " ; " ; " ; " ; " ; " ; " ; " ; " 指指的 " ; "