2020
DOI: 10.1109/tse.2018.2878020
|View full text |Cite
|
Sign up to set email alerts
|

Platform-Independent Dynamic Taint Analysis for JavaScript

Abstract: Previous approaches to dynamic taint analysis for JavaScript are implemented directly in a browser or JavaScript engine, limiting their applicability to a single platform and requiring ongoing maintenance as platforms evolve, or they require nontrivial program transformations. We present an approach that relies on instrumentation to encode taint propagation as instructions for an abstract machine. Our approach has two key advantages: it is platform-independent and can be used with any existing JavaScript engin… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2

Citation Types

0
18
0

Year Published

2020
2020
2024
2024

Publication Types

Select...
5
2
2

Relationship

0
9

Authors

Journals

citations
Cited by 39 publications
(27 citation statements)
references
References 30 publications
(47 reference statements)
0
18
0
Order By: Relevance
“…Code-based taint analysis tools [19], [22]- [24] often fail to analyze source code for commercial reasons, and only binary code analysis is possible. The main practice is to insert taint tracking codes in the binary code to get taint propagation information when the program is running.…”
Section: Related Workmentioning
confidence: 99%
“…Code-based taint analysis tools [19], [22]- [24] often fail to analyze source code for commercial reasons, and only binary code analysis is possible. The main practice is to insert taint tracking codes in the binary code to get taint propagation information when the program is running.…”
Section: Related Workmentioning
confidence: 99%
“…Language-specific dynamic taint analysis systems typically treat data flow outside of the targeted programming language as a black box. For example, for language-embeddings such as node.js, the instrumentation typically only supports the dynamic language code [35,58]. Some of these systems, e.g.…”
Section: Related Workmentioning
confidence: 99%
“…While this approach can be applied to languages like C that are compiled anyway, it is unpractical for interpreted high-level languages as it prevents more high-level language-specific instrumentation. Taint analysis applications for higher-level languages may instead determine the data flow effects behind a language boundary from an externally supplied specification [33,35]. However, especially for larger libraries such specifications are tedious to maintain and are not guaranteed to reflect the actually executed code.…”
Section: Introductionmentioning
confidence: 99%
“…Understanding dependencies between program elements is a fundamental task in software engineering [1], [2]. It provides a basis for many software engineering tasks including program comprehension [3], software testing [4], maintenance [5], [6], refactoring [7], security [8], and debugging [9]. The traditional static approach based on dependence graphs [10] has been widely adopted but suffers from issues such as its inability to handle multi-lingual systems (combining analyses for multiple languages is too complicated) and limited scalability (partial analysis of a large system is not viable using static approaches that require whole-program analyses).…”
Section: Introductionmentioning
confidence: 99%