Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1109/ASE.2015.28acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

Practically tunable static analysis framework for large-scale JavaScript applications

Published: 09 November 2015 Publication History

Abstract

We present a novel approach to analyze large-scale JavaScript applications statically by tuning the analysis scalability possibly giving up its soundness. For a given sound static baseline analysis of JavaScript programs, our framework allows users to define a sound approximation of selected executions that they are interested in analyzing, and it derives a tuned static analysis that can analyze the selected executions practically. The selected executions serve as parameters of the framework by taking trade-off between the scalability and the soundness of derived analyses. We formally describe our framework in abstract interpretation, and implement two instances of the framework. We evaluate them by analyzing large-scale real-world JavaScript applications, and the evaluation results show that the framework indeed empowers users to experiment with different levels of scalability and soundness. Our implementation provides an extra level of scalability by deriving sparse versions of derived analyses, and the implementation is publicly available.

References

[1]
"100 JavaScript online games," http://www.lutanho.net/stroke/online.html.
[2]
"List of languages that compile to JS," https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js.
[3]
"Node OS," https://node-os.com.
[4]
"Runtime.JS," http://runtimejs.org.
[5]
G. Richards, S. Lebresne, B. Burg, and J. Vitek, "An analysis of the dynamic behavior of JavaScript programs," in Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2010.
[6]
K. Yi and S. Ryu, "A cost-effective estimation of uncaught exceptions in Standard ML programs," Theoretical Computer Science, vol. 277, no. 1--2, pp. 185--217, 2002.
[7]
X. Leroy and F. Pessaux, "Type-based analysis of uncaught exceptions," ACM Transactions on Programming Languages and Systems, vol. 22, no. 2, pp. 340--377, Mar. 2000.
[8]
H. Oh, K. Heo, W. Lee, W. Lee, and K. Yi, "Design and implementation of sparse global analyses for C-like languages," in Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2012, pp. 229--238.
[9]
Y. Ko, K. Heo, and H. Oh, "A sparse evaluation technique for detailed semantic analyses," Computer Languages, Systems & Structures, 2014.
[10]
H. Oh, K. Heo, W. Lee, W. Lee, D. Park, J. Kang, and K. Yi, "Global sparse analysis framework," ACM Transactions on Programming Languages and Systems, vol. 36, no. 3, 2014.
[11]
KAIST PLRG, "SAFE: JavaScript analysis framework," http://safe.kaist.ac.kr, 2013.
[12]
S. Bae, H. Cho, I. Lim, and S. Ryu, "SAFE<sub>WAPI</sub>: Web API misuse detector for web applications," in Proceedings of the ACM SIGSOFT Symposium and the European Conference on Foundations of Software Engineering, 2014.
[13]
A. Møller, S. H. Jensen, P. Thiemann, M. Madsen, M. D. Ingesman, P. Jonsson, and E. Andreasen, "TAJS: Type analyzer for JavaScript," https://github.com/cs-au-dk/TAJS, 2014.
[14]
M. Madsen and A. Møller, "Sparse dataflow analysis with pointers and reachability," in Proc. 21st International Static Analysis Symposium (SAS), 2014.
[15]
IBM Research, "T.J. Watson Libraries for Analysis (WALA)," http://wala.sf.net.
[16]
M. Sridharan, J. Dolby, S. Chandra, M. Schäfer, and F. Tip, "Correlation tracking for points-to analysis of JavaScript," in Proceedings of the European Conference on Object-Oriented Programming, 2012.
[17]
M. Schäfer, M. Sridharan, J. Dolby, and F. Tip, "Dynamic determinacy analysis," in Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2013.
[18]
A. Feldthaus, M. Schäfer, M. Sridharan, J. Dolby, and F. Tip, "Efficient construction of approximate call graphs for JavaScript IDE services," in Proceedings of the International Conference on Software Engineering, 2013.
[19]
"IBM Security AppScan," http://www-03.ibm.com/software/products/en/appscan.
[20]
B. Livshits, M. Sridharan, Y. Smaragdakis, O. Lhoták, J. N. Amaral, B.-Y. E. Chang, S. Z. Guyer, U. P. Khedker, A. Møller, and D. Vardoulakis, "In defense of soundiness: A manifesto," Communications of the ACM, pp. 44--46, 2015.
[21]
P. Cousot and R. Cousot, "Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints," in Proceedings of the ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, 1977, pp. 238--252.
[22]
P. Cousot and R. Cousot, "Systematic design of program analysis frameworks," in Proceedings of the ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, 1979, pp. 269--282.
[23]
"Implementation of practically tunable static analysis framework for large-scale JavaScript applications," Omitted for anonymizing authors, 2015.
[24]
G. Bracha and W. Cook, "Mixin-based inheritance," in Proceedings of the European Conference on Object-oriented Programming / Object-oriented Programming Systems, Languages, and Applications, 1990, pp. 303--311.
[25]
E. Andreasen and A. Møller, "Determinacy in static analysis for jQuery," in Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, 2014.
[26]
C. Park and S. Ryu, "Scalable and precise static analysis of JavaScript applications via loop-sensitivity," in Proceedings of the European Conference on Object-Oriented Programming, 2015.
[27]
S. Wei and B. G. Ryder, "Practical blended taint analysis for JavaScript," in Proceedings of the International Symposium on Software Testing and Analysis, 2013, pp. 336--346.
[28]
J.-D. Choi, V. Sarkar, and E. Schonberg, "Incremental computation of static single assignment form," in Proceedings of the International Conference on Compiler Construction, 1996.
[29]
C. Lattner, A. Lenharth, and V. Adve, "Making context-sensitive points- to analysis with heap cloning practical for the real world," in Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 2007.
[30]
W. T. Cheung, S. Ryu, and S. Kim, "Development nature matters: An empirical study of code clones in javascript applications," Empirical Software Engineering, 2015.
[31]
A. Feldthaus and A. Møller, "Checking correctness of TypeScript interfaces for JavaScript libraries," in Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, 2014.
[32]
S. H. Jensen, P. A. Jonsson, and A. Møller, "Remedying the eval that men do," in Proceedings of the International Symposium on Software Testing and Analysis, 2012.
[33]
S. H. Jensen, M. Madsen, and A. Møller, "Modeling the HTML DOM and browser API in static analysis of JavaScript web applications," in Proceedings of the European Conference on Foundations of Software Engineering, 2011.
[34]
V. Kashyap, K. Dewey, E. A. Kuefner, J. Wagner, K. Gibbons, J. Sarracino, B. Wiedermann, and B. Hardekopf, "JSAI: A static analysis platform for JavaScript," in FSE '14: Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, 2014.

Cited By

View all
  • (2024)Efficient Static Vulnerability Analysis for JavaScript with Multiversion Dependency GraphsProceedings of the ACM on Programming Languages10.1145/36563948:PLDI(417-441)Online publication date: 20-Jun-2024
  • (2024)Dead or aliveJournal of Information Security and Applications10.1016/j.jisa.2024.10374682:COnline publication date: 17-Jul-2024
  • (2024)User-assisted code query customization and optimizationInternational Journal on Software Tools for Technology Transfer (STTT)10.1007/s10009-024-00763-026:5(607-619)Online publication date: 1-Oct-2024
  • Show More Cited By
  1. Practically tunable static analysis framework for large-scale JavaScript applications

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ASE '15: Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering
    November 2015
    935 pages
    ISBN:9781509000241

    Sponsors

    In-Cooperation

    • IEEE CS

    Publisher

    IEEE Press

    Publication History

    Published: 09 November 2015

    Check for updates

    Qualifiers

    • Research-article

    Conference

    ASE '15
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 82 of 337 submissions, 24%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)1
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 18 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Efficient Static Vulnerability Analysis for JavaScript with Multiversion Dependency GraphsProceedings of the ACM on Programming Languages10.1145/36563948:PLDI(417-441)Online publication date: 20-Jun-2024
    • (2024)Dead or aliveJournal of Information Security and Applications10.1016/j.jisa.2024.10374682:COnline publication date: 17-Jul-2024
    • (2024)User-assisted code query customization and optimizationInternational Journal on Software Tools for Technology Transfer (STTT)10.1007/s10009-024-00763-026:5(607-619)Online publication date: 1-Oct-2024
    • (2023)User-Assisted Code Query OptimizationProceedings of the 12th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis10.1145/3589250.3596148(40-46)Online publication date: 6-Jun-2023
    • (2021)Of JavaScript AOT compilation performanceProceedings of the ACM on Programming Languages10.1145/34735755:ICFP(1-30)Online publication date: 19-Aug-2021
    • (2021)Memory-Safety Challenge Considered Solved? An In-Depth Study with All Rust CVEsACM Transactions on Software Engineering and Methodology10.1145/346664231:1(1-25)Online publication date: 28-Sep-2021
    • (2021)A Survey of Parametric Static AnalysisACM Computing Surveys10.1145/346445754:7(1-37)Online publication date: 18-Jul-2021
    • (2021)Chianina: an evolving graph system for flow- and context-sensitive analyses of million lines of C codeProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454085(914-929)Online publication date: 19-Jun-2021
    • (2019)Static call graph construction in AWS Lambda serverless applicationsProceedings of the 11th USENIX Conference on Hot Topics in Cloud Computing10.5555/3357034.3357059(20-20)Online publication date: 8-Jul-2019
    • (2019)Static security evaluation of an industrial web applicationProceedings of the 34th ACM/SIGAPP Symposium on Applied Computing10.1145/3297280.3297471(1952-1961)Online publication date: 8-Apr-2019
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media