由于静态代码审计工具具有自动化、不容易出错的特点,开发人员经常使用它来检测代码漏洞,但是检测出的代码漏洞的结果会产生大量的警告信息,开发人员必须手动进行检查和纠正。此工具的缺点是浪费开发人员大量的时间。通过对用户的输入...由于静态代码审计工具具有自动化、不容易出错的特点,开发人员经常使用它来检测代码漏洞,但是检测出的代码漏洞的结果会产生大量的警告信息,开发人员必须手动进行检查和纠正。此工具的缺点是浪费开发人员大量的时间。通过对用户的输入以及敏感数据流的追踪来确定警告的缺陷是否真的被利用,从而减少静态检测工具产生的大量警告数量。同时提供给开发者更多真正能对软件产生威胁的警告信息。针对静态代码审计工具的缺点,研究三种不同的方法来提高静态代码审计工具的性能。第一,对于商业性的静态代码分析工具Coverity,重新分析它的结果,并且从安全的角度创建一组具体的相关警告。第二,对开放的源代码分析工具Findbugs进行修改,并只对被用户输入所污染的代码进行分析。第三,研发灰盒代码审计工具,此工具侧重于Java代码中的跨站脚本攻击XSS(Cross Site Scripting),使用数据流分析的方法来确定漏洞的切入点。实验结果证明工程B使警告数量降低了20%,工程E只产生了2%的警告,降低了工具产生警告的数量,为开发人员提供更多的信息来区分此警告是否是真正的安全威胁。展开更多
文摘由于静态代码审计工具具有自动化、不容易出错的特点,开发人员经常使用它来检测代码漏洞,但是检测出的代码漏洞的结果会产生大量的警告信息,开发人员必须手动进行检查和纠正。此工具的缺点是浪费开发人员大量的时间。通过对用户的输入以及敏感数据流的追踪来确定警告的缺陷是否真的被利用,从而减少静态检测工具产生的大量警告数量。同时提供给开发者更多真正能对软件产生威胁的警告信息。针对静态代码审计工具的缺点,研究三种不同的方法来提高静态代码审计工具的性能。第一,对于商业性的静态代码分析工具Coverity,重新分析它的结果,并且从安全的角度创建一组具体的相关警告。第二,对开放的源代码分析工具Findbugs进行修改,并只对被用户输入所污染的代码进行分析。第三,研发灰盒代码审计工具,此工具侧重于Java代码中的跨站脚本攻击XSS(Cross Site Scripting),使用数据流分析的方法来确定漏洞的切入点。实验结果证明工程B使警告数量降低了20%,工程E只产生了2%的警告,降低了工具产生警告的数量,为开发人员提供更多的信息来区分此警告是否是真正的安全威胁。