Preview

Труды Института системного программирования РАН

Расширенный поиск

Платформа автоматического фаззинга программного интерфейса приложений

https://doi.org/10.15514/ISPRAS-2020-32(2)-13

Аннотация

Рандомизированное тестирование приложений (фаззинг, фаззинг-тестирование) является одним из широко используемых методов поиска ошибок. Цель фаззинг-тестирования – определить стабильность приложений при обработке псевдослучайно сгенерированных входных данных. В ходе тестирования приложение запускается на множестве произвольных входных данных, которые могут быть недействительными/неожиданными. Современное программное обеспечение часто предоставляет программный интерфейс (Application programming interface) для расширения возможностей программы. Это еще больше усложняет тестирование программного обеспечения, поскольку становится необходимым учитывать все возможные сценарии использования предоставленных интерфейсных функций. Применение фаззинга для генерации разных сценариев использования программного интерфейса приложения и соответствующих входных данных позволяет эффективным образом выявить ошибки в реализации функций программного интерфейса. В данной статье описывается новый метод фаззинг-тестирования для Android приложений и библиотек, написанных на языке Java. Разработанный инструмент фаззинг-тестирования выявил 15 уникальных дефектов, приводящих к аварийному завершению приложения SmartThings, разработанного компанией Samsung.

Об авторах

Севак Сеникович САРГСЯН
Российско-Армянский университет
Армения
Научный сотрудник, преподаватель, заведующий кафедрой, кандидат физико-математических наук


Ваагн Геворгович ВАРДАНЯН
Российско-Армянский университет
Армения
Научный сотрудник, преподаватель, кандидат технических наук


Дживан Андраникович АКОПЯН
Российско-Армянский университет
Армения
Научный сотрудник, преподаватель, аспирант


Анна Мартиросовна АГАБАЛЯН
Российско-Армянский университет
Армения
Научный сотрудник, магистр


Матевос Саргисович МЕГРАБЯН
Российско-Армянский университет
Армения
Научный сотрудник, магистр


Шамиль Фаимович КУРМАНГАЛЕЕВ
Институт системного программирования им. В.П. Иванникова РАН
Россия
Кандидат физико-математических наук, старший научный сотрудник


Александр Юрьевич ГЕРАСИМОВ
Институт системного программирования им. В.П. Иванникова РАН
Россия
Кандидат физико-математических наук


Михаил Кириллович ЕРМАКОВ
Институт системного программирования им. В.П. Иванникова РАН
Россия
Кандидат технических наук


Сергей Павлович ВАРТАНОВ
Институт системного программирования им. В.П. Иванникова РАН
Россия


Список литературы

1. SDL. Available at: https://www.microsoft.com/en-us/securityengineering/sdl, accessed 26.11.2019.

2. Fuzzingю Available at: https://en.wikipedia.org/wiki/Fuzzing, accessed 26.11.2019.

3. Borton P. Miller, Lars Fedriksen. Bryan So. An Empirical Study of the Reliability of UNIX utilities. Communications of the ACM, vol. 33, № 12, 1990, pp. 32-44.

4. Unix. Available at: https://en.wikipedia.org/wiki/Unix, accessed 26.11.2019.

5. Michael Zelewski. American Fuzzy Lop. 2014. Available at: http://lcamtuf.coredump.cx/afl. Accessed 26.11.2019.

6. Sevak Sargsyan, Shamil Kurmangaleev, Matevos Mehrabyan, Maksim Mishechkin, Tsolak Ghukasyan, Sergey Asryan. Grammar-Based Fuzzing. In Proc. of the 2018 Ivannikov Memorial Workshop (IVMEM), Yerevan, Armenia, 2018, pp. 32-35, doi: 10.1109/IVMEM.2018.00013.

7. Sevak Sargsyan, Shamil Kurmangaleev, Jivan Hakobyan, Matevos Mehrabyan, Sergey Asryan, Hovhannes Movsisyan. Directed Fuzzing Based on Program Dynamic Instrumentation. In Proc. of the 2019 International Conference on Engineering Technologies and Computer Science (EnT), Moscow, Russia, 2019, pp. 30-33, doi: 10.1109/EnT.2019.00011.

8. Gerasimov A.Yu., Sargsyan S.S., Kurmangaleev S.F., Hakobyan J.A., Asryan S.A., Ermakov M.K. Combining dynamic symbolic execution and fuzzing. Trudy ISP RAN/Proc. ISP RAS, vol. 30, issue 6, 2018, pp. 25-38. DOI: 10.15514/ISPRAS-2018-30(6)-2.

9. libFuzzer. Available at: https://llvm.org/docs/LibFuzzer.html, accessed 26.11.2019.

10. Trinity: Linux system call fuzzer. Available at: https://github.com/kernelslacker/trinity, accessed 26.11.2019.

11. syzkaller: Linux syscall fuzzer. Available at: https://github.com/google/syzkaller syzkaller, accessed 26.11.2019.

12. Linux. Available at: https://www.linux.org/, accessed 26.11.2019.

13. JAR. Available at: https://en.wikipedia.org/wiki/JAR_(file_format), accessed 26.11.2019.

14. Sevak Sargsyan, Jivan Hakobyan, Matevos Mehrabyan, Maxim Mishechkin, Vitaliy Akozin, Shamil Kurmangaleev. ISP-Fuzzer: Extendable Fuzzing Framework. In Proc. of the 2019 Ivannikov Memorial Workshop (IVMEM), Velikiy Novgorod, Russia, 2019, pp. 68-71, doi: 10.1109/IVMEM.2019.00017.

15. SmartThings. Available at: https://www.samsung.com/global/galaxy/apps/smartthings/, accessed 26.11.2019.

16. Samsung. Available at: https://www.samsung.com, accessed 26.11.2019.

17. Bruneton E., Lenglet R., Coupaye T. ASM: A code manipulation tool to implement adaptable systems. In Proc. of the ASF (ACM SIGOPS France) Journées Composants 2002: Syst`emes `a composants adaptables et extensibles (Adaptable and Extensible Component Systems), Grenoble, France, 2002.

18. Gordon Fraser, Andrea Arcuri. EvoSuite: automatic test suite generation for object-oriented software. In Proc. of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering, Szeged, Hungary, 2011, pp. 416-419.

19. JUnit4. Available at: https://junit.org/junit4/, accessed 26.11.2019.

20. Android. Available at: https://www.android.com/, accessed 26.11.2019.

21. Christoph Csallner, Yannis Smaragdakis, Tao Xie. DSD-Crasher: A hybrid analysis tool for bug finding. ACM Transactions on Software Engineering and Methodology, vol.17, issue 2, 2008, Article No. 8.

22. Christoph Csallner, Yannis Smaragdakis. JCrasher: an automatic robustness tester for Java. Software – Practice & Experience, vol. 34, issue 11, 2004, pp. 1025 - 1050.

23. Carlos Pacheco, Michael D. Ernst. Randoop: feedback-directed random testing for Java. In Proc.of the OOPSLA '07 Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion, Montreal, Quebec, Canada, 2007, pp. 815-816.


Рецензия

Для цитирования:


САРГСЯН С.С., ВАРДАНЯН В.Г., АКОПЯН Д.А., АГАБАЛЯН А.М., МЕГРАБЯН М.С., КУРМАНГАЛЕЕВ Ш.Ф., ГЕРАСИМОВ А.Ю., ЕРМАКОВ М.К., ВАРТАНОВ С.П. Платформа автоматического фаззинга программного интерфейса приложений. Труды Института системного программирования РАН. 2020;32(2):161-173. https://doi.org/10.15514/ISPRAS-2020-32(2)-13

For citation:


SARGSYAN S.S., VARDANYAN V.G., HAKOBYAN J.A., AGHABALYAN A.M., MEHRABYAN M.S., KURMANGALEEV Sh.F., GERASIMOV A.Yu., ERMAKOV M.K., VARTANOV S.P. Automatic API fuzzing framework. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2020;32(2):161-173. (In Russ.) https://doi.org/10.15514/ISPRAS-2020-32(2)-13



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)