A Formal Model for Checking Cryptographic API Usage in JavaScript
Herausgeber Sammlung:
Sako, Kazue; Schneider, Steve; Ryan, Peter Y. A.
Titel Konferenzpublikation:
Computer Security – ESORICS 2019
Untertitel Konferenzpublikation:
24th European Symposium on Research in Computer Security, Luxembourg, September 23–27, 2019, Proceedings, Part I
Reihentitel:
Lecture Notes in Computer Science
Bandnummer Reihe:
11735
Konferenztitel:
European Symposium on Research in Computer Security (24., 2019, Luxenburg)
Konferenztitel:
ESORICS 2019
Tagungsort:
Luxembourg
Jahr der Konferenz:
2019
Datum Beginn der Konferenz:
23.09.2019
Datum Ende der Konferenz:
27.09.2019
Verlagsort:
Cham
Verlag:
Springer
Jahr:
2019
Seiten von - bis:
341-360
Sprache:
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... »