We use cookies to improve your experience with our site.

验证缺失的自动化检测与修复推荐

Automatic Detection and Repair Recommendation for Missing Checks

  • 摘要: 对安全敏感操作中使用的不可信输入缺乏验证是导致各种漏洞的主要原因之一。有效地检测和修复验证缺失对于预先诊断潜在漏洞,提高代码可靠性至关重要。我们提出了系统性的静态分析方法检测C/C++程序中对安全敏感操作使用的可操纵数据的验证缺失,并推荐修复参考。首先,借助轻量级的静态分析定位自定义的安全敏感操作。然后,通过污点分析判断安全敏感操作中使用敏感数据的可攻击性。接着,评估验证缺失的存在性和风险程度。最后,对高风险的验证缺失推荐修复参考。我们基于Clang/LLVM 3.6.0实现了我们的方法,并开发了一个名为Vanguard的跨平台自动化检测工具。在大规模开源项目上的实验评估显示了方法的有效性及其效率。进一步的,Vanguard已经帮助我们发现了五个已知的漏洞和十二个新的漏洞。

     

    Abstract: Missing checks for untrusted inputs used in security-sensitive operations is one of the major causes of various vulnerabilities. Efficiently detecting and repairing missing checks are essential for prognosticating potential vulnerabilities and improving code reliability. We propose a systematic static analysis approach to detect missing checks for manipulable data used in security-sensitive operations of C/C++ programs and recommend repair references. First, customized securitysensitive operations are located by lightweight static analysis. Then, the assailability of sensitive data used in securitysensitive operations is determined via taint analysis. And, the existence and the risk degree of missing checks are assessed. Finally, the repair references for high-risk missing checks are recommended. We implemented the approach into an automated and cross-platform tool named Vanguard based on Clang/LLVM 3.6.0. Large-scale experimental evaluation on open-source projects has shown its effectiveness and efficiency. Furthermore, Vanguard has helped us uncover five known vulnerabilities and 12 new bugs.

     

/

返回文章
返回