Н.Н. Самарин
Постановка проблемы. Ошибки в программном обеспечении, реализующем синтаксический анализ файлов, могут привести к пропуску значимых данных, а также к возникновению уязвимостей, эксплуатация которых позволит злоумышленнику выполнить произвольный код в контексте этого программного обеспечения. Наиболее перспективным и распространенным методом поиска ошибок в программном обеспечении является фаззинг-тестирование, состоящее в отправке заведомо некорректных входных данных и анализе реакций программного обеспечения на них.
Цель. Представить метод фаззинг-тестирования программ для синтаксического анализа с применением инструмента PolyTracker.
Результаты. Рассмотрены типы синтаксических анализаторов и выявлены их недостатки. Предложен метод фаззинг-тес-тирования программ для синтаксического анализа с использованием инструмента PolyTracker, который устраняет выделенные недостатки, увеличивая покрытие кода и нивелируя проблему взрыва числа состояний (state explosion). Показано, что применение этого метода позволяет увеличить скорость генерации входных данных за счет тестирования конкретных функций программного обеспечения, а не всего приложения в целом.
Практическая значимость. Дальнейшие исследования в данной области могут быть направлены на расширение алгоритма работы инструмента PolyTracker для преобразования машинного кода бинарных файлов в язык высокого уровня, что позволит уйти от необходимости инструментации исходного кода.
Самарин Н.Н. Метод фаззинг-тестирования программ для синтаксического анализа с применением инструмента PolyTracker // Радиотехника. 2024. Т. 88. № 2. С. 62−66. DOI: https://doi.org/10.18127/j00338486-202402-09
- File Parsing with Python: How to Parse Files? [Электронный ресурс]. URL: https://www.klippa.com/en/blog/information/file-parsing/ (Дата обращения: 10.12.2023).
- Погорелов Д.А., Таразанов А.М., Волкова Л.Л. От LR к GLR: обзор синтаксических анализаторов // Новые информационные технологии в автоматизированных системах. 2017. № 20. С. 245-250.
- Burke M.G., Fisher G.A. A practical method for LR and LL syntactic error diagnosis and recovery // ACM Transactions on Programming Languages and Systems (TOPLAS). 1987. V. 9. № 2. С. 164-197.
- Murching A.M., Prasad Y.V., Srikant Y.N. Incremental recursive descent parsing // Computer Languages. 1990. V. 15. № 4. Р. 193-204.
- Tomita M. Efficient parsing for natural language: a fast algorithm for practical systems. Springer Science & Business Media. 2013. V. 8.
- De Jonge M. Language-parametric techniques for language-specific editors. Doctoral thesis. Delft University of Technology. Amsterdam. 2014.
- PolyTracker [Электронный ресурс]. URL: https://github.com/trailofbits/polytracker/ (Дата обращения: 04.12.2023).
- Brodin H., Surovič M., Sultanik E. Blind spots: Identifying exploitable program inputs // 2023 IEEE Security and Privacy Workshops (SPW). IEEE. 2023. Р. 175-186.
- Brodin H., Sultanik E., Surovič M. Blind Spots: Automatically detecting ignored program inputs //arXiv preprint arXiv:2301.08700. 2023.
- How to avoid the aCropalypse [Электронный ресурс]. URL: https://blog.trailofbits.com/2023/03/30/acropalypse-polytracker-blind-spots/ (Дата обращения: 10.12.2023).
- Духан Е.И., Воеводин С.В., Сазонов В.Ю., Звежинский С.С. Обобщенная методика оценки потенциальных характеристик средств обнаружения на основе метода машинного эксперимента // Радиотехника. Т. 86. № 1. 2022. С. 41-48. DOI: https://doi.org/10.18127/j00338486-202201-07.