NoCFG: A Lightweight Approach for Sound Call Graph Approximation

05/07/2021
by   Aharon Abadi, et al.
0

Interprocedural analysis refers to gathering information about the entire program rather than for a single procedure only, as in intraprocedural analysis. Interprocedural analysis enables a more precise analysis; however, it is complicated due to the difficulty of constructing an accurate program call graph. Current algorithms for constructing sound and precise call graphs analyze complex program dependencies, therefore they might be difficult to scale. Their complexity stems from the kind of type-inference analysis they use, in particular the use of some variations of points-to analysis. To address this problem, we propose NoCFG, a new sound and scalable method for approximating a call graph that supports a wide variety of programming languages. A key property of NoCFG is that it works on a coarse abstraction of the program, discarding many of the programming language constructs. Due to the coarse program abstraction, extending it to support also other languages is easy. We provide a formal proof for the soundness of NoCFG and evaluations for real-world projects written in both Python and C#. The experimental results demonstrate a high precision rate of 90 a security use-case over projects with up to 2 million lines of code.

READ FULL TEXT
research
08/04/2021

Reasoning about Iteration and Recursion Uniformly based on Big-step Semantics

A reliable technique for deductive program verification should be proven...
research
12/21/2021

AmPyfier: Test Amplification in Python

Test Amplification is a method to extend handwritten tests into a more r...
research
11/15/2018

Effect Handling for Composable Program Transformations in Edward2

Algebraic effects and handlers have emerged in the programming languages...
research
05/31/2023

PERFOGRAPH: A Numerical Aware Program Graph Representation for Performance Optimization and Program Analysis

The remarkable growth and significant success of machine learning have e...
research
03/08/2022

ProbTA: A sound and complete proof rule for probabilistic verification

We propose a sound and complete proof rule ProbTA for quantitative analy...
research
07/15/2019

A Relational Static Semantics for Call Graph Construction

The problem of resolving virtual method and interface calls in object-or...
research
08/03/2018

Lightweight Call-Graph Construction for Multilingual Software Analysis

Analysis of multilingual codebases is a topic of increasing importance. ...

Please sign up or login with your details

Forgot password? Click here to reset