Orchestrating Dynamic Analyses of Distributed Processes for Full-Stack JavaScript Programs
Wed 7 Nov 2018 20:27 - 20:30 at Georgian - Poster & SRC
The predominant approach to implementing a dynamic analysis for a JavaScript program is to instrument the program under analysis. Examples of analyses implemented this way range from checkers of user-defined program invariants to concolic testers. For a full-stack JavaScript program, these analyses need to reason about the state of the distributed processes the program is comprised of. Lifting a dynamic analysis from a single process to multiple distributed processes can be challenging. In this paper, we propose an approach to orchestrating the corresponding analysis processes that relieves the analysis developer from implementing distributed communication concerns. We implemented our approach on top of the existing JavaScript instrumentation platform Aran and use this prototype to lift three representative Aran-based analyses. The evaluation shows that our approach greatly simplifies the lifting process at the cost of an additional analysis overhead. We deem this overhead acceptable for analyses intended for use at development time.