A Formal Model for Checking Cryptographic API Usage in JavaScript
Collection editors:
Sako, Kazue; Schneider, Steve; Ryan, Peter Y. A.
Title of conference publication:
Computer Security – ESORICS 2019
Subtitle of conference publication:
24th European Symposium on Research in Computer Security, Luxembourg, September 23–27, 2019, Proceedings, Part I
Series title:
Lecture Notes in Computer Science
Series volume:
11735
Conference title:
European Symposium on Research in Computer Security (24., 2019, Luxenburg)
Conference title:
ESORICS 2019
Venue:
Luxembourg
Year of conference:
2019
Date of conference beginning:
23.09.2019
Date of conference ending:
27.09.2019
Place of publication:
Cham
Publisher:
Springer
Year:
2019
Pages from - to:
341-360
Language:
Englisch
Abstract:
Modern JavaScript implementations include APIs offering strong cryptography, but it is easy for non-expert developers to misuse them and introduce potentially critical security bugs. In this paper, we formalize a mechanism to rule out such bugs through runtime enforcement of cryptographic API specifications. In particular, we construct a dynamic variant of Security Annotations, which represent security properties of values via type-like information. We formalize Security Annotations within an existing JavaScript semantics and mechanize it to obtain a reference interpreter for JavaScript with embedded Security Annotations. We provide a specification for a fragment of the W3C WebCrypto standard and demonstrate how this specification can reveal security vulnerabilities in JavaScript code with the help of a case study. We define a notion of safety with respect to Security Annotations and extend this to security guarantees for individual programs. «
Modern JavaScript implementations include APIs offering strong cryptography, but it is easy for non-expert developers to misuse them and introduce potentially critical security bugs. In this paper, we formalize a mechanism to rule out such bugs through runtime enforcement of cryptographic API specifications. In particular, we construct a dynamic variant of Security Annotations, which represent security properties of values via type-like information. We formalize Security Annotations within an ex... »