|
Automatic API fuzzing framework
S. S. Sargsyana, V. G. Vardanyana, J. A. Hakobyana, A. M. Aghabalyana, M. S. Mehrabyana, Sh. F. Kurmangaleevb, A. Yu. Gerasimovb, M. K. Ermakovb, S. P. Vartanovb a Russian-Armenian University
b Ivannikov Institute for System Programming of the Russian Academy of Sciences
Abstract:
Randomized testing (fuzzing) is a well-known approach for finding bugs in programs. Fuzzing is typically performed during the finishing stage of quality assurance in order to check the stability of the target program in the face of malformed or unexpected input data. Modern software more than often provides an API for extending its functionality by third-party developers; since an API is an entry point to software internals, its functionality and usage scenarios must be tested as well. Thorough API testing must involve checking a large number of possible scenarios and it is fairly obvious that fuzzing can be applied to this task by generating usage scenarios in an automatic randomized way—which brings us to the concept of API fuzzing. In this paper we describe an automatic approach to randomized testing of API libraries for Android/desktop Java. Proposed method is able to change the sequence of called API functions in order to discover new execution paths. It consists of two basic stages. In the first stage the arguments of currently called API functions are mutated. When mutation of called API functions arguments can't find new execution path the tool switches to the second stage. In the second stage current sequence of API functions calls is mutated. Mutation can add new API functions calls or remove some of them. After API calls sequence mutation, the tool switches back to the first stage. Switches between the first and the second stages are continued during whole process of fuzzing. During the experimental setup developed method of randomized testing were able to find 15 crashes in SmartThings application developed by Samsung.
Keywords:
internet of things, fuzzing, API call generation.
Citation:
S. S. Sargsyan, V. G. Vardanyan, J. A. Hakobyan, A. M. Aghabalyan, M. S. Mehrabyan, Sh. F. Kurmangaleev, A. Yu. Gerasimov, M. K. Ermakov, S. P. Vartanov, “Automatic API fuzzing framework”, Proceedings of ISP RAS, 32:2 (2020), 161–173
Linking options:
https://www.mathnet.ru/eng/tisp506 https://www.mathnet.ru/eng/tisp/v32/i2/p161
|
Statistics & downloads: |
Abstract page: | 158 | Full-text PDF : | 48 | References: | 24 |
|