Flow-sensitive static analysis of software

We could even implement such a flow sensitive analysis by transforming the program to assign to a variable at most once. This paper presents androlic, a precise static analysis framework for android which is flow, context, object, field and pathsensitive. Sparse flowsensitive pointer analysis for multithreaded. Traditionally, static analyses are often used to gather information on the modification, preservation and usage of data quantities for the purpose of code optimization 7. Flowsensitive, contextsensitive, and objectsensitive information. I am interested to know what context means in the context of static code analysis, specifically with java and when used in conjunction with the term context insensitive analysis. A programs control flow graph cfg is used to determine those. Static analysis computes data flows conservatively flowsensitive intraprocedural analysis flowinsensitive interprocedural analysis uses andersens pointsto algorithm scales to very large. Two common integer anomalies are integer overflow and integer underflow. Flowsensitive loopvariant variable classi cation in. The program summary graph and flowsensitive interprocedural.

The code is the heart of a software and will tell a lot when a hacker gets his hands on it. Flowinsensitive static analysis for detecting integer. Runtime instrumentation for precise flow sensitive type analysis 3 the complex behavior of the php interpreter. So here is our example again, but reworked to be in ssa form. Static analysis involves no dynamic execution of the software under test and can detect possible defects in an early stage, before running the program. Contribute to svftoolssvf development by creating an account on github. Box 1892 rice university houston, texas 77251 1 introduction.

Static analysis is more efficient than analyses performed dynamically such as tracing of an execution. Because of the variety of concerns in static analysis of android apps, it is important for the field, which has already produced substantial. And this is converting the program to what is called static single assignment form or ssa. We propose a constraintbased flowsensitive static analysis for concurrent programs by iteratively composing threadmodular abstract interpreters via the use of a system of lightweight constraints. We argue that ifc must better exploit modern program analysis technology, and present an approach. Joana java objectsensitive analysis information flow. A programs control flow graph cfg is used to determine those parts of a program to which a particular value assigned to a variable might propagate. Pointer analysis and program depedence analysis in llvm view wiki on github download source code download dockerfile what is svf.

In fact i have not found a decent definition of context yet. Loops with flowsensitive loopvariant variable updates 2 related work while the recognition of \traditional forms of ivs is extensively described in the literature, there is a limited body of work on. The analysis identified 200 problems in the code and in the type hints of the original source code base. We describe a combination of runtime information and static analysis for checking properties of complex and. In programming language theory, flowsensitive typing or flow typing is a type system where the type of an expression depends on its position in the control flow in statically typed languages, a type of an. In this chapter, we explain why this can be useful and interesting, and we discuss the basic characteristics of analysis tools. A comparative study of industrial static analysis tools. The stanford suif compiler group programming tools. These algorithms explore various dimensions to achieve this balance. Based on our experience as php programmers, we believe that this is a reasonable design. Attackflow software security source code analysis tools. After identifying thoroughly the set of related research publications, we perform a trend analysis and provide a detailed overview on key aspects of static analysis of android apps such as the characteristics of static analysis, the androidspecific features, the addressed problems e. Svf allows value flow construction and pointer analysis to be performed iteratively, thereby. Program obfuscation as obstruction of program static analysis.

Malpas a software static analysis toolset for a variety of languages including ada, c, pascal and assembler intel, powerpc and motorola. Flowsensitive composition of threadmodular abstract. Static analysis can be done by a machine to automatically walk through the source code and detect noncomplying rules. Box 1892 rice university houston, texas 77251 1 introduction this paper discusses a method for interprocedural data flow analysis which is powerful enough to express flow. Flowsensitive pointer analysis for millions of lines of code. To summarize, this paper presents the following original contributions.

Some of these problems can cause exploits, infinite loops, and crashes. Static analysis vs dynamic analysis in software testing. The program summary graph and flow sensitive interprocedural data flow analysis david callahan department of computer science p. I guess that might be easier than adding dataflow to the analysis, but honestly, id rather make the analysis smarter than add yet more runtime assertions for static properties. For flowsensitive analysis, in particular dataflow analysis chapter 5, where statement order matters it is more convenient to view the program. This tool is mainly used to analyze the code from a security point of view. Saint simple static taint analysis tool internet archive. Jul 21, 2008 a comparative study of industrial static analysis tools paa. Runtime instrumentation for precise flowsensitive type. It has been also shown that sound purely dynamic information flow enforcement is more permissive than static analysis in the flow insensitive case. Static program analysis department of computer science. Were upgrading the acm dl, and would like your input. Our implementation can treat all software product lines developed in the javabased color ide cide 5.

This tool uses binary codebytecode and hence ensures 100% test coverage. Integer anamolies take place when arithmetic operations on integer values yield new values that cannot be. Joana is based on a stack of sophisticated program analysis techniques, such as pointer analysis, exception analysis, and program dependence graphs. Parallel flowsensitive pointsto analysis jisheng zhao rice university jisheng. Our static taint analysis algorithm is built upon the iterative dataflow framework 11111171 and has been implemented in the tool saint simple static taint analysis tool. Our method is compositional in that it first applies sequential abstract interpreters to individual threads and then composes their results. Carnegie mellon reaching definitions every assignment is a definition a definitiondreachesa point p if there existspath from the point immediately following dto p such that dis not killed overwritten along. Runtime instrumentation for precise flowsensitive type analysis 3 the complex behavior of the php interpreter. Video created by university of maryland, college park for the course software security. A frequently used method for optimizing a flowsensitive dataflow analysis is to perform a sparse analysis, such as in the flowsensitive pointsto analysis of 2, 12. Our flowsensitive algorithm is based on a sparse representation of program code created by a staged, flowinsensitive pointer analysis. Dataflow analysis is a technique for gathering information about the possible set of values calculated at various points in a computer program.

There are various kinds of quality assurance security tests with. For example this paper makes extensive use of context in this context. Our static taint analysis is interprocedural, flow sensitive, and developers can choose to run it either with contextsensitivity or without. Citeseerx document details isaac councill, lee giles, pradeep teregowda. Static information flow inference analysis is a technique which automatically infers information flows based on data or control. Moose moose started as a software analysis platform with many tools to manipulate, assess or visualize software. Phantm analyzes each function separately by default but uses php documentation features to allow users to declare types of function. Example controlflow graph with precise flowsensitive and flowinsensitive pointsto sets. Through configuration items and apis provided by androlic, developers can easily extend it to perform custom analysis tasks. Crosssite scripting prevention with dynamic data tainting. Context, flow, and fieldsensitive dataflow analysis using. Our static code analyzer is built on top of those analysis methods and combines symbolic execution and formal verification. Static analysis, static and restriction researchgate, the professional network for. This tool proves to be a good choice if you want to write secure code.

Dataflow analysis is typically pathinsensitive, though it is possible to define dataflow. Runtime instrumentation for precise flow sensitive type analysis 301 to include in the application code base, making a conservative analysis entirely useless. Whereas a purely dynamic analysis for such software systems is useful, it may entirely miss opportunities for identifying errors by code inspection. But many ifc analyses are imprecise, as they are flow insensitive, contextinsensitive, or objectinsensitive.

Runtime instrumentation for precise flowsensitive type analysis. A programs control flow graph cfg is used to determine those parts of a. It has been previously shown that flow sensitive static information flow analysis is. Languagebased ifc analyzes the program source code to discover security. We introduce a new regionbased selective flowsensitive selfs approach to interprocedural pointer analysis for c that operates on the regions partitioned from a program. We propose a constraintbased flow sensitive static analysis for concurrent programs by iteratively composing threadmodular abstract interpreters via the use of a system of light. A controlflowsensitive analysis and optimization framework for. We propose a constraintbased flow sensitive static analysis for concurrent programs by iteratively composing threadmodular abstract interpreters via the use of a system of lightweight constraints. Racerx is a static tool that uses flow sensitive, interprocedural analysis to detect both race conditions and deadlocks. Combining constant and type propagation, abstract an important step in compiletime optimization of objectoriented languages with polymorphic and virtual functions is static determination of concrete types classes of variables referring to objects.

Regionbased selective flowsensitive pointer analysis. Svf pointer analysis and program depedence analysis in llvm view wiki on github download source code download dockerfile what is svf. Static flowsensitive security analysis alejandro russo andrei sabelfeld dept. The traditional flowsensitive approach 4, 14, 27 uses a dense iterative dataflow analysis, which does not scale to large programs. Veracode is a static analysis tool which is built on the saas model. As such, solutions for alpha1 and alpha2 can differ. Flowsensitive, contextsensitive, and objectsensitive.

A frequently used method for optimizing a flowsensitive dataflow analysis is to perform a sparse analysis. From the softwareprotection point of view, static analysis. Used primarily for safety critical applications in nuclear and aerospace industries. I am interested to know what context means in the context of static code analysis, specifically with java and when used in conjunction with the term context in sensitive analysis. We introduce a new regionbased selective flow sensitive selfs approach to interprocedural pointer analysis for c that operates on the regions partitioned from a program. But perhaps its not worth the trouble, especially since you might have to sprinkle a lot of these around. Reasoning about information flow can help software en gineering. Static program analysis aims to automatically answer questions about the possible behaviors of programs. A variable is live at a program point if its current value. Svf is a static tool that enables scalable and precise.

The analysis works in an inter procedural and controlflowsensitive manner and provides value, type, and. Sparse flowsensitive pointer analysis for multithreaded programs yulei sui, peng di, and jingling xue unsw australia. Data flow analysis is a technique for gathering information about the possible set of values calculated at various points in a computer program. In programming language theory, flow sensitive typing or flow typing is a type system where the type of an expression depends on its position in the control flow in statically typed languages, a type of an expression is determined by the types of the subexpressions that compose it. Static analysis, also called static code analysis, is a method of computer program debugging that is done by examining the code without executing the program. Based on our experience as php programmers, we believe that this is a reasonable design decision. Integer anamolies take place when arithmetic operations on integer values yield new values that cannot be represented in the range for the integer type. Static analysis at each program point statement boundary in a php program, determine properties or. Combining constant and type propagation, abstract an important step in compiletime optimization of objectoriented languages with polymorphic and virtual. Full text of saint simple static taint analysis tool. Traditionally, static analyses are often used to gather information on the modification, preservation. In this chapter, we explain why this can be useful and interesting, and we discuss the basic. Example controlflow graph with precise flowsensitive and. It has been previously shown that flow sensitive static information flow analysis is a natural generalization of flowinsensitive static analysis, which allows accepting more secure programs.

We propose a constraintbased flowsensitive static analysis for concurrent programs by iteratively composing threadmodular abstract interpreters via the use of a system of light. Flowsensitive pointer analysis for millions of lines of code ut cs. This paper describes a static analysis algorithm to detect potential integer anomalies in software. Static analysis helps developers and tester to find. Information flow control ifc checks whether a program can leak secret data to public ports, or whether critical computations can be influenced from outside. Static analysis is done after coding and before executing unit tests. The process provides an understanding of the code structure, and can help to ensure that the code adheres to industry standards.

It has been previously shown that flowsensitive static informationflow analysis is. It can evolve to a more generic data analysis platform. Security static code analysis is executed on the static code by the help of another software with a mainly security perspective focusing on finding weaknesses without running it. Our static taint analysis algorithm is built upon the iterative dataflow framework kildall1973 and has been implemented in the tool saint simple static static taint analysis tool. Pdf flowsensitive static optimizations for runtime. Firstly, it converts source code to an intermediate representation and then performs flow sensitive analysis, interprocedural analysis, context sensitive analysis and object sensitive analysis.

Jun 27, 2009 information flow control ifc checks whether a program can leak secret data to public ports, or whether critical computations can be influenced from outside. Hence, a large number of approximation algorithms have been published that balance the precision of the results and the ef. The algorithm uses a fully flowsensitive and contextsensitive analysis to derive the likely object invariants and to check that the objects are used consistently throughout the program. We have applied our analysis tool to over 50000 lines of php code, including the popular dokuwiki software, which has a plugin architecture. The program summary graph and flowsensitive interprocedural data flow analysis david callahan department of computer science p. This paper seeks to answer fundamental questions about tradeoffs between static and dynamic security analysis.

46 1043 338 1557 1382 591 380 1256 1246 720 1262 1209 575 572 661 1520 1348 579 178 345 75 394 100 308 476 531 95 1403 1029 477 148 1390