Efficient vulnerability detection based on an optimized rule-checking static analysis technique

Static analysis is an efficient approach for software assurance. It is indicated that its most effective usage is to perform analysis in an interactive way through the software development process, which has a high performance requirement. This paper concentrates on rule-based static analysis tools and proposes an optimized rule-checking algorithm. Our technique improves the performance of static analysis tools by filtering vulnerability rules in terms of characteristic objects before checking source files. Since a source file always contains vulnerabilities of a small part of rules rather than all, our approach may achieve better performance. To investigate our technique’s feasibility and effectiveness, we implemented it in an open source static analysis tool called PMD and used it to conduct experiments. Experimental results show that our approach can obtain an average performance promotion of 28.7% compared with the original PMD. While our approach is effective and precise in detecting vulnerabilities, there is no side effect.

[1]  Terence Parr,et al.  ANTLRWorks: an ANTLR grammar development environment , 2008, Softw. Pract. Exp..

[2]  Andreas Steininger,et al.  Runtime verification of microcontroller binary code , 2014, Sci. Comput. Program..

[3]  Oleksandr Panchenko,et al.  Precise and Scalable Querying of Syntactical Source Code Patterns Using Sample Code Snippets and a Database , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[4]  Michael T. Helmick Interface-based programming assignments and automatic grading of java programs , 2007, ITiCSE.

[5]  Oleksandr Panchenko,et al.  Towards query formulation and visualization of structural search results , 2010, SUITE '10.

[6]  Ulf Nilsson,et al.  A Comparative Study of Industrial Static Analysis Tools , 2008, SSV.

[7]  May Haydar,et al.  A formal approach for run-time verification of web applications using scope-extended LTL , 2013, Inf. Softw. Technol..

[8]  Reinhold Plösch,et al.  On the Relation between External Software Quality and Static Code Analysis , 2008, 2008 32nd Annual IEEE Software Engineering Workshop.

[9]  Marco Tulio Valente,et al.  Study on the relevance of the warnings reported by Java bug-finding tools , 2011, IET Softw..

[10]  Sheng Jiang,et al.  Improving Static Analysis Performance Using Rule-Filtering Technique , 2014, SEKE.

[11]  Thomas Ball The Verified Software Challenge: A Call for a Holistic Approach to Reliability , 2005, VSTTE.

[12]  Benjamin Livshits,et al.  Finding application errors and security flaws using PQL: a program query language , 2005, OOPSLA '05.

[13]  Jeffrey S. Foster,et al.  A comparison of bug finding tools for Java , 2004, 15th International Symposium on Software Reliability Engineering.

[14]  Elnar Hajiyev,et al.  codeQuest: Scalable Source Code Queries with Datalog , 2006, ECOOP.

[15]  David Hovemeyer,et al.  Finding more null pointer bugs, but not too many , 2007, PASTE '07.

[16]  Sriram K. Rajamani Automatic Property Checking for Software: Past, Present and Future , 2006, Fourth IEEE International Conference on Software Engineering and Formal Methods (SEFM'06).

[17]  Terence Parr,et al.  LL(*): the foundation of the ANTLR parser generator , 2011, PLDI '11.

[18]  Monica S. Lam,et al.  Using Datalog with Binary Decision Diagrams for Program Analysis , 2005, APLAS.

[19]  Susan Loveland Using Open Source Tools to Prevent Write-Only Code , 2009, 2009 Sixth International Conference on Information Technology: New Generations.

[20]  J. David Morgenthaler,et al.  Evaluating static analysis defect warnings on production software , 2007, PASTE '07.

[21]  Evon M. O. Abu-Taieh,et al.  Comparative Study , 2020, Definitions.

[22]  Ruisheng Zhang,et al.  Implementing of Gaussian Syntax-Analyzer Using ANTLR , 2008 .

[23]  William G. Griswold,et al.  Effective pattern matching of source code using abstract syntax patterns , 2006, Softw. Pract. Exp..

[24]  G. L. Schaps,et al.  COMPILER CONSTRUCTION WITH ANTLR AND JAVA : TOOLS FOR BUILDING TOOLS , 1999 .

[25]  Dawson R. Engler,et al.  Bugs as deviant behavior: a general approach to inferring errors in systems code , 2001, SOSP.

[26]  María Alpuente,et al.  Using Datalog and Boolean Equation Systems for Program Analysis , 2009, FMICS.

[27]  Stan Jarzabek,et al.  Design of Flexible Static Program Analyzers with PQL , 1998, IEEE Trans. Software Eng..

[28]  David Zook,et al.  Typed Datalog , 2009, PADL.

[29]  Patrice Godefroid,et al.  Billions and billions of constraints: Whitebox fuzz testing in production , 2013, 2013 35th International Conference on Software Engineering (ICSE).