Preview

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

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

Метод выявления некоторых типов ошибок работы с памятью в бинарном коде программ

https://doi.org/10.15514/ISPRAS-2015-27(2)-7

Аннотация

В статье рассматривается метод выявления ошибок работы с памятью в бинарном коде программ, таких как выход за границы буфера при чтении и записи. Предлагаемый метод основывается на использовании динамического анализа и символьного выполнения. Метод применяется к бинарным файлам программ без дополнительной отладочной информации. Описанный метод был реализован в виде программного инструмента. Возможности инструмента продемонстрированы на примере поиска ошибок в 11 программах, которые работают под управлением ОС Windows и Linux, в 7 из них ошибки не были исправлены на момент написания статьи.

Об авторах

В. В. Каушан
ИСП РАН
Россия


А. Ю. Мамонтов
ИСП РАН
Россия


В. А. Падарян
ИСП РАН
Россия


А. Н. Федотов
ИСП РАН
Россия


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

1. Common Weakness Enumeration, a community-developed dictionary of software weakness types. https://cwe.mitre.org Дата обращения: 8.04.2015

2. К. Батузов, П. Довгалюк, В. Кошелев, В. Падарян. Два способа организации механизма полносистемного детерминированного воспроизведения в симуляторе QEMU. // Труды Института системного программирования РАН, том 22, 2012 г. Стр. 77-94.

3. Андрей Тихонов, Арутюн Аветисян, Вартан Падарян. Методика извлечения алгоритма из бинарного кода на основе динамического анализа. // Проблемы информационной безопасности. Компьютерные системы. №3, 2008. Стр. 66-71

4. Андрей Тихонов, Вартан Падарян. Применение программного слайсинга для анализа бинарного кода, представленного трассами выполнения. // Материалы XVIII Общероссийской научно-технической конференции «Методы и технические средства обеспечения безопасности информации». 2009. стр. 131

5. А.Ю.Тихонов, А.И. Аветисян. Комбинированный (статический и динамический) анализ бинарного кода. // Труды Института системного программирования РАН,том 22, 2012 г. cтр. 131-152.

6. Alexander Getman, Vartan Padaryan, and Mikhail Solovyev. Combined approach to solving problems in binary code analysis. // Proceedings of 9th International Conference on Computer Science and Information Technologies (CSIT’2013), pp. 295-297.

7. Довгалюк П.М., Макаров В.А., Романеев М.С., Фурсова Н.И. Применение программых эмуляторов в задачах анализа бинарного кода. // Труды Института системного программирования РАН, том 26, 2014 г. Выпуск 1. Стр. 277-296. DOI: 10.15514/ISPRAS-2014-26(1)-9.

8. King J.C. Symbolic execution and program testing. // Commun. ACM. - 1976. - No 19.

9. Падарян В.А., Каушан В.В., Федотов А.Н. Автоматизированный метод построения эксплойтов для уязвимости переполнения буфера на стеке. // Труды Института системного программирования РАН, том 26, 2014 г. Выпуск 3. Стр. 127-144. DOI: 10.15514/ISPRAS-2014-26(3)-7.

10. E. J. Schwartz, T. Avgerinos, D. Brumley. // All you ever wanted to know about dynamic taint analysis and forward symbolic execution (but might have been afraid to ask). // IEEE Symposium on Security and Privacy, May 2010, pp. 317-331.

11. Ru-Gang Xu, Patrice Godefroid, Rupak Majumdar. // Testing for Buffer OverFlows with Length Abstraction. // ISSTA, 2008

12. В.А. Падарян, А.И. Гетьман, М.А. Соловьев, М.Г.Бакулин, А.И. Борзилов, В.В. Каушан, И.Н. Ледовских, Ю.В. Маркин, С.С. Панасенко. // Методы и программные средства, поддерживающие комбинированный анализ бинарного кода. // Труды Института системного программирования РАН, том 26, 2014 г. Выпуск 1. Стр. 251-276. DOI: 10.15514/ISPRAS-2014-26(1)-8.

13. Падарян В. А., Соловьев М. А., Кононов А. И. // Моделирование операционной семантики машинных инструкций. // Программирование, No 3, 2011 г. Стр. 50-64.

14. Nikolaj Bjørner, Leonardo de Moura. // Z3: Applications, Enablers, Challenges and Directions/ // Sixth International Workshop on Constraints in Formal Verification Grenoble, 2009.

15. А. И. Аветисян, А. И. Гетьман. // Восстановление структуры бинарных данных по трассам программ. // Труды Института системного программирования РАН, том 22, 2012 г. Стр. 95-118.

16. Prateek Saxena, Pongsin Poosankam, Stephen McCamant, Dawn Song. // Loop-Extended Symbolic Execution on Binary Programs. // ISSTA, 2009.

17. J. Caballero, P. Poosankam, S. McCamant, D. Babic, and D. Song. Input generation via decomposition and re-stitching: Finding bugs in malware. In Proc. of the ACM Conference on Computer and Communications Security, Chicago, IL, October 2010.

18. L. Martignoni, S. McCamant, P. Poosankam, D. Song, and P. Maniatis. Path-exploration lifting: Hi-fi tests for lo-fi emulators. // In Proc. of the International Conference on Architectural Support for Programming Languages and Operating Systems, London, UK, Mar. 2012.

19. P. Godefroid, M. Levin, and D. Molnar. Automated whitebox fuzz testing. // In Proc. of the Network and Distributed System Security Symposium, Feb. 2008.

20. Исаев, И. К., Сидоров, Д. В., Герасимов, А. Ю., Ермаков, М. К. (2011). Avalanche: Применение динамического анализа для автоматического обнаружения ошибок в программах использующих сетевые сокеты. Труды Института системного программирования РАН, том 21, 2011 г., стр. 55-70.


Рецензия

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


Каушан В.В., Мамонтов А.Ю., Падарян В.А., Федотов А.Н. Метод выявления некоторых типов ошибок работы с памятью в бинарном коде программ. Труды Института системного программирования РАН. 2015;27(2):105-126. https://doi.org/10.15514/ISPRAS-2015-27(2)-7

For citation:


Kaushan V.V., Mamontov A.Y., Padaryan V.A., Fedotov A.N. Memory violation detection method in binary code. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2015;27(2):105-126. (In Russ.) https://doi.org/10.15514/ISPRAS-2015-27(2)-7



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


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