Battles with False Positives in Static Analysis of Java']JavaScript Web Applications in the Wild

被引:25
|
作者
Park, Joonyoung [1 ]
Lim, Inho [2 ]
Ryu, Sukyoung [1 ]
机构
[1] Korea Adv Inst Sci & Technol, Daejeon, South Korea
[2] Samsung Elect, Suwon, South Korea
来源
2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING COMPANION (ICSE-C) | 2016年
基金
新加坡国家研究基金会;
关键词
Static analysis; !text type='Java']Java[!/text]Script; web applications; false positives;
D O I
10.1145/2889160.2889227
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Now that HTML5 technologies are everywhere from web services to various platforms, assuring quality of web applications becomes very important. While web application developers use syntactic checkers and type-related bug detectors, extremely dynamic features and diverse execution environments of web applications make it particularly difficult to statically analyze them leading to too many false positives. Recently, researchers have developed static analyzers for JavaScript web applications addressing quirky JavaScript language semantics and browser environments, but they lack empirical studies on the practicality of such analyzers. In this paper, we collect 30 JavaScript web applications in the wild, analyze them using SAFE, the state-of-the-art JavaScript static analyzer with bug detection, and investigate false positives in the analysis results. After manually inspecting them, we classify 7 reasons that cause the false positives: W3C APIs, browser-specific APIs, JavaScript library APIs, dynamic fi le loading, dynamic code generation, asynchronous calls, and others. Among them, we identify 4 cases which are the sources of false positives that we can practically reduce. Rather than striving for sound analysis with unrealistic assumptions, we choose to be intentionally unsound to analyze web applications in the real world with less false positives. Our evaluation shows that the approach effectively reduces false positives in statically analyzing web applications in the wild.
引用
收藏
页码:61 / 70
页数:10
相关论文
共 25 条
  • [1] Journey to Find Bugs in Java']JavaScript Web Applications in the Wild
    Ryu, Sukyoung
    ACM SIGPLAN NOTICES, 2016, 51 (09) : 2 - 2
  • [2] Toward Analysis and Bug Finding in Java']JavaScript Web Applications in the Wild
    Ryu, Sukyoung
    Park, Jihyeok
    Park, Joonyoung
    IEEE SOFTWARE, 2019, 36 (03) : 74 - 82
  • [3] Eval Is Evil: Analyzing Performance of Web Applications Based on PHP and Java']JavaScript by Static Analysis
    Shah, Nilay
    Gubbala, Praveen
    COMPUTING AND NETWORK SUSTAINABILITY, 2017, 12 : 109 - 117
  • [4] Towards Understanding the Value of False Positives in Static Code Analysis
    Dimastrogiovanni, Carlo
    Laranjeiro, Nuno
    2016 SEVENTH LATIN-AMERICAN SYMPOSIUM ON DEPENDABLE COMPUTING (LADC), 2016, : 119 - 122
  • [5] DETECTING SERVER-SIDE ENDPOINTS IN WEB APPLICATIONS BASED ON STATIC ANALYSIS OF CLIENT-SIDE Java']JavaScript CODE
    Sigalov, D. A.
    Khashaev, A. A.
    Gamayunov, D. Yu.
    PRIKLADNAYA DISKRETNAYA MATEMATIKA, 2021, (53): : 32 - 54
  • [6] Type Refinement for Static Analysis of Java']JavaScript
    Kashyap, Vineeth
    Sarracino, John
    Wagner, John
    Wiedermann, Ben
    Hardekopf, Ben
    ACM SIGPLAN NOTICES, 2014, 49 (02) : 17 - 26
  • [7] Guided Mutation Testing for Java']JavaScript Web Applications
    Mirshokraie, Shabnam
    Mesbah, Ali
    Pattabiraman, Karthik
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2015, 41 (05) : 429 - 444
  • [8] A Framework for Automated Testing of Java']JavaScript Web Applications
    Artzi, Shay
    Dolby, Julian
    Jensen, Simon Holm
    Moller, Anders
    Tip, Frank
    2011 33RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2011, : 571 - 580
  • [9] Static Analysis of Event-Driven Node.js']js Java']JavaScript Applications
    Madsen, Magnus
    Tip, Frank
    Lhotak, Ondrej
    ACM SIGPLAN NOTICES, 2015, 50 (10) : 505 - 519
  • [10] Accelerating Java']JavaScript Static Analysis via Dynamic Shortcuts
    Park, Joonyoung
    Park, Jihyeok
    Youn, Dongjun
    Ryu, Sukyoung
    PROCEEDINGS OF THE 29TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE '21), 2021, : 1129 - 1140