Searching for Taint Vulnerabilities with Svace Static Analysis Tool

被引:0
作者
Borodin, A. E. [1 ]
Goremykin, A., V [1 ,2 ]
Vartanov, S. P. [1 ]
Belevantsev, A. A. [1 ,2 ]
机构
[1] Russian Acad Sci, Ivannikov Inst Syst Programming, Ul Solzhenitsyna 25, Moscow 109004, Russia
[2] Moscow MV Lomonosov State Univ, Moscow 119991, Russia
基金
俄罗斯基础研究基金会;
关键词
XML - Static analysis - Defects - Abstracting;
D O I
10.1134/S0361768821060037
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
This paper is dedicated to finding taint-based errors in the source code of programs, i.e., errors caused by unsafe use of data from external sources, which could potentially be modified by a malefactor. The interprocedural static analyzer Svace is used as a basis. The analyzer searches for both program defects and suspicious points where the logic of the program may be corrupted. The goal is to find as many errors as possible at an acceptable speed and low false positive rate (<20-35%). For this purpose, Svace builds, with the help of a modified compiler, a low-level typed intermediate representation, which is input to the main SvEng analyzer. The analyzer constructs a call graph and then carries out summary-based analysis. In this analysis, functions are traversed according to the call graph, starting from the leaves. Once a function is analyzed, its summary is created, which is then used to analyze call instructions. The analysis has both high speed and good scalability. Intraprocedural analysis is based on symbolic execution with state merging at join points. An SMT solver can be used to filter out infeasible paths for some checkers. In this case, the SMT solver is called only if an error is suspected. The analyzer has been extended to find defects of tainted data use. The checkers are implemented as plugins based on the source-sink scheme. The sources are calls of library functions that receive data from the outside of the program, as well as arguments of the main function. The sinks are accesses to arrays, uses of variables as steps or loop boundaries, and calls of functions that require checked arguments. Checkers that cover most of possible vulnerabilities for tainted integers and strings are implemented. To assess the coverage, the Juliet project is used. The false negative rate ranges from 46.31% to 81.17% with a small number of false positives.
引用
收藏
页码:466 / 481
页数:16
相关论文
共 20 条
  • [1] An Overview of the Saturn Project
    Aiken, Alex
    Bugrara, Suhabe
    Dillig, Isil
    Dillig, Thomas
    Hackett, Brian
    Hawkins, Peter
    [J]. PASTE'07 PROCEEDINGS OF THE 2007 ACM SIGPLAN- SIGSOFT WORKSHOP ON PROGRAM ANALYSIS FOR SOFTWARE TOOLS & ENGINEERING, 2007, : 43 - 48
  • [2] [Anonymous], 1992, ACM LETT PROGRAM LAN
  • [3] [Anonymous], 2012, JUL TEST SUIT V1 2 C
  • [4] Babic D, 2008, ICSE'08 PROCEEDINGS OF THE THIRTIETH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, P211, DOI 10.1145/1368088.1368118
  • [5] Belevantsev A.A., 2017, Sist. Admin., P135
  • [6] Design and Development of Svace Static Analyzers
    Belevantsev, Andrey
    Borodin, Alexey
    Dudina, Irina
    Ignatiev, Valery
    Izbyshev, Alexey
    Polyakov, Sergey
    Velesevich, Evgeny
    Zhurikhin, Dmitry
    [J]. 2018 IVANNIKOV MEMORIAL WORKSHOP (IVMEM 2018), 2018, : 3 - 9
  • [7] Black P.E., 2018, JULIET 13 TEST SUITE
  • [8] [Бородин А.Е. Borodin A.], 2015, [Труды Института системного программирования РАН, Trudy Instituta sistemnogo programmirovaniya RAN], V27, P111, DOI 10.15514/ISPRAS-2015-27(6)-8
  • [9] Deterministic Static Analysis
    Borodin, Alexey
    Belevantsev, Andrey
    Zhurikhin, Dmitry
    Izbyshev, Alexey
    [J]. 2018 IVANNIKOV MEMORIAL WORKSHOP (IVMEM 2018), 2018, : 10 - 14
  • [10] Bush WR, 2000, SOFTWARE PRACT EXPER, V30, P775, DOI 10.1002/(SICI)1097-024X(200006)30:7<775::AID-SPE309>3.0.CO