Accelerating JavaScript Static Analysis via Dynamic Shortcuts (Extended Version)

05/28/2021
by   Joonyoung Park, et al.
0

JavaScript has become one of the most widely used programming languages for web development, server-side programming, and even micro-controllers for IoT. However, its extremely functional and dynamic features degrade the performance and precision of static analysis. Moreover, the variety of built-in functions and host environments requires excessive manual modeling of their behaviors. To alleviate these problems, researchers have proposed various ways to leverage dynamic analysis during JavaScript static analysis. However, they do not fully utilize the high performance of dynamic analysis and often sacrifice the soundness of static analysis. In this paper, we present dynamic shortcuts, a new technique to flexibly switch between abstract and concrete execution during JavaScript static analysis in a sound way. It can significantly improve the analysis performance and precision by using highly-optimized commercial JavaScript engines and lessen the modeling efforts for opaque code. We actualize the technique via SAFE_, an extended combination of SAFE and Jalangi, a static analyzer and a dynamic analyzer, respectively. We evaluated SAFE_ using 269 official tests of Lodash 4 library. Our experiment shows that SAFE_ is 7.81x faster than the baseline static analyzer, and it improves the precision to reduce failed assertions by 12.31

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/07/2021

Improving Dynamic Code Analysis by Code Abstraction

In this paper, our aim is to propose a model for code abstraction, based...
research
08/29/2018

Towards security defect prediction with AI

In this study, we investigate the limits of the current state of the art...
research
04/02/2018

Using Unit Testing to Detect Sanitization Flaws

Input sanitization mechanisms are widely used to mitigate vulnerabilitie...
research
10/20/2017

Self-adaptive static analysis

Static code analysis is a powerful approach to detect quality deficienci...
research
02/15/2023

Path-sensitive Type Analysis with Backward Analysis for Quality Assurance of Dynamic Typed Language Code

Precise and fast static type analysis for dynamically typed language is ...
research
01/30/2019

ExceLint: Automatically Finding Spreadsheet Formula Errors

Spreadsheets are one of the most widely used programming environments, a...
research
04/22/2022

From Monolith to Microservices: Static and Dynamic Analysis Comparison

One of the most challenging problems in the migration of a monolith to a...

Please sign up or login with your details

Forgot password? Click here to reset