KJS: a complete formal semantics of JavaScript

Abstract

This paper presents KJS, the most complete and throughly tested formal semantics of JavaScript to date. Being executable, KJS has been tested against the ECMAScript 5.1 conformance test suite, and passes all 2,782 core language tests. Among the existing implementations of JavaScript, only Chrome V8's passes all the tests, and no other semantics passes more than 90%. In addition to a reference implementation for JavaScript, KJS also yields a simple coverage metric for a test suite: the set of semantic rules it exercises. Our semantics revealed that the ECMAScript 5.1 conformance test suite fails to cover several semantic rules. Guided by the semantics, we wrote tests to exercise those rules. The new tests revealed bugs both in production JavaScript engines (Chrome V8, Safari WebKit, Firefox SpiderMonkey) and in other semantics. KJS is symbolically executable, thus it can be used for formal analysis and verification of JavaScript programs. We verified non-trivial programs and found a known security vulnerability.

Document Details

Document Type
Pub Defense Publication
Publication Date
Jun 03, 2015
Source ID
10.1145/2813885.2737991

Entities

People

  • Andrei Stefănescu
  • Daejun Park
  • Grigore Rosu

Organizations

  • Boeing
  • Defense Advanced Research Projects Agency
  • National Science Foundation
  • University of Illinois Urbana–Champaign

Tags

Fields of Study

  • Computer science

Readers

  • Aerospace Test and Evaluation
  • Computational Modeling and Simulation
  • Database Systems and Applications