JuS: Squeezing the Sense out of JavaScript Programs

We introduce JuS (JavaScript under Scrutiny), a first step towards a static-analysis tool for JavaScript based on a program logic in the style of separation logic. In particular, we focus on reasoning automatically about the JavaScript variable store. Because of prototype-based inheritance and with statements, even reasoning about variables is not trivial in JavaScript. We evaluate our tool on examples from the Firefox test suite which illustrate the scoping mechanism of the JavaScript variable store.

[1]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[2]  Sophia Drossopoulou,et al.  Towards Type Inference for JavaScript , 2005, ECOOP.

[3]  Peter Thiemann Towards a Type System for Analyzing JavaScript Programs , 2005, ESOP.

[4]  Peter W. O'Hearn,et al.  Smallfoot: Modular Automatic Assertion Checking with Separation Logic , 2005, FMCO.

[5]  Ajay Chander,et al.  JavaScript instrumentation for browser security , 2007, POPL '07.

[6]  Peter W. O'Hearn,et al.  Scalable Shape Analysis for Systems Code , 2008, CAV.

[7]  Ankur Taly,et al.  An Operational Semantics for JavaScript , 2008, APLAS.

[8]  Matthew J. Parkinson,et al.  jStar: towards practical verification for java , 2008, OOPSLA.

[9]  Peter W. O'Hearn,et al.  Compositional Shape Analysis by Means of Bi-Abduction , 2011, JACM.

[10]  Collin Jackson,et al.  Rootkits for JavaScript Environments , 2009, WOOT.

[11]  Shriram Krishnamurthi,et al.  The Essence of JavaScript , 2010, ECOOP.

[12]  Samin Ishtiaq,et al.  SLAyer: Memory Safety for Systems-Level Code , 2011, CAV.

[13]  Radu Grigore,et al.  coreStar : the Core of jStar , 2011 .

[14]  Philippa Gardner,et al.  Towards a program logic for JavaScript , 2012, POPL '12.

[15]  Ravi Chugh,et al.  Dependent types for JavaScript , 2012, OOPSLA '12.

[16]  Juan Chen,et al.  Fully abstract compilation to JavaScript , 2013, POPL.

[17]  Carlo A. Furia,et al.  Javanni: A Verifier for JavaScript , 2013, FASE.