Favocado: Fuzzing the Binding Code of Java']JavaScript Engines Using Semantically Correct Test Cases

被引:17
|
作者
Sung Ta Dinh [1 ]
Cho, Haehyun [1 ]
Martin, Kyle [2 ]
Oest, Adam [3 ]
Zeng, Kyle [1 ]
Kapravelos, Alexandros [2 ]
Ahn, Gail-Joon [1 ,4 ]
Bao, Tiffany [1 ]
Wang, Ruoyu [1 ]
Doupe, Adam [1 ]
Shoshitaishvili, Yan [1 ]
机构
[1] Arizona State Univ, Tempe, AZ 85287 USA
[2] North Carolina State Univ, Raleigh, NC USA
[3] PayPal Inc, San Jose, CA USA
[4] Samsung Res, Seoul, South Korea
基金
美国国家科学基金会;
关键词
D O I
10.14722/ndss.2021.24224
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
JavaScript runtime systems include some specialized programming interfaces, called binding layers. Binding layers translate data representations between JavaScript and unsafe low-level languages, such as C and C++, by converting data between different types. Due to the wide adoption of JavaScript (and JavaScript engines) in the entire computing ecosystem, discovering bugs in JavaScript binding layers is critical. Nonetheless, existing JavaScript fuzzers cannot adequately fuzz binding layers due to two major challenges: Generating syntactically and semantically correct test cases and reducing the size of the input space for fuzzing. In this paper, we propose Favocado, a novel fuzzing approach that focuses on fuzzing binding layers of JavaScript runtime systems. Favocado can generate syntactically and semantically correct JavaScript test cases through the use of extracted semantic information and careful maintaining of execution states. This way, test cases that Favocado generates do not raise unintended runtime exceptions, which substantially increases the chance of triggering binding code. Additionally, exploiting a unique feature (relative isolation) of binding layers, Favocado significantly reduces the size of the fuzzing input space by splitting DOM objects into equivalence classes and focusing fuzzing within each equivalence class. We demonstrate the effectiveness of Favocado in our experiments and show that Favocado outperforms a stateof-the-art DOM fuzzer. Finally, during the evaluation, we find 61 previously unknown bugs in four JavaScript runtime systems (Adobe Acrobat Reader, Foxit PDF Reader, Chromium, and WebKit). 33 of these bugs are security vulnerabilities.
引用
下载
收藏
页数:15
相关论文
共 30 条
  • [1] Evaluating seed selection for fuzzing Java']JavaScript engines
    Wen, Ming
    Wang, Yongcong
    Xia, Yifan
    Jin, Hai
    EMPIRICAL SOFTWARE ENGINEERING, 2023, 28 (06)
  • [2] Fuzzing Java']JavaScript Engines with Aspect-preserving Mutation
    Park, Soyeon
    Xu, Wen
    Yun, Insu
    Jang, Daehee
    Kim, Taesoo
    2020 IEEE SYMPOSIUM ON SECURITY AND PRIVACY (SP 2020), 2020, : 1628 - 1642
  • [3] SoFi: Reflection-Augmented Fuzzing for Java']JavaScript Engines
    He, Xiaoyu
    Xie, Xiaofei
    Li, Yuekang
    Sun, Jianwen
    Li, Feng
    Zou, Wei
    Liu, Yang
    Yu, Lei
    Zhou, Jianhua
    Shi, Wenchang
    Huo, Wei
    CCS '21: PROCEEDINGS OF THE 2021 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY, 2021, : 2229 - 2242
  • [4] A lightweight and high-precision approach for bulky Java']JavaScript engines fuzzing
    Zhou, Lianpei
    Xiao, Xi
    Hu, Guangwu
    Li, Hao
    Wu, Xiangbo
    Zhou, Tao
    2023 IEEE 22ND INTERNATIONAL CONFERENCE ON TRUST, SECURITY AND PRIVACY IN COMPUTING AND COMMUNICATIONS, TRUSTCOM, BIGDATASE, CSE, EUC, ISCI 2023, 2024, : 982 - 989
  • [5] Automated Conformance Testing for Java']JavaScript Engines via Deep Compiler Fuzzing
    Ye, Guixin
    Tang, Zhanyong
    Tan, Shin Hwei
    Huang, Songfang
    Fang, Dingyi
    Sun, Xiaoyang
    Bian, Lizhong
    Wang, Haibo
    Wang, Zheng
    PROCEEDINGS OF THE 42ND ACM SIGPLAN INTERNATIONAL CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION (PLDI '21), 2021, : 435 - 450
  • [6] Fuzzing Java']JavaScript engines with a syntax-aware neural program model
    Xu, Haoran
    Wang, Yongjun
    Jiang, Zhiyuan
    Fan, Shuhui
    Fu, Shaojing
    Xie, Peidai
    COMPUTERS & SECURITY, 2024, 144
  • [7] CodeAlchemist: Semantics-Aware Code Generation to Find Vulnerabilities in Java']JavaScript Engines
    Han, HyungSeok
    Oh, DongHyeon
    Cha, Sang Kil
    26TH ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM (NDSS 2019), 2019,
  • [8] PYTHIA: Generating Test Cases with Oracles for Java']JavaScript Applications
    Mirshokraie, Shabnam
    Mesbah, Ali
    Pattabiraman, Karthik
    2013 28TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE), 2013, : 610 - 615
  • [9] Exposing bugs in Java']JavaScript engines through test transplantation and differential testing
    Lima, Igor
    Silva, Jefferson
    Miranda, Breno
    Pinto, Gustavo
    d'Amorim, Marcelo
    SOFTWARE QUALITY JOURNAL, 2021, 29 (01) : 129 - 158
  • [10] Exploring Plausible Patches Using Source Code Embeddings in Java']JavaScript
    Csuvik, Viktor
    Horvath, Daniel
    Lajko, Mark
    Vidacs, Laszlo
    2021 IEEE/ACM INTERNATIONAL WORKSHOP ON AUTOMATED PROGRAM REPAIR (APR 2021), 2021, : 11 - 18