Preview

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

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

Анализ характера изменений программ и поиск неисправленных фрагментов кода

https://doi.org/10.15514/ISPRAS-2019-31(1)-3

Аннотация

Разработчики программного обеспечения часто прибегают к заимствованию кода – как внутри одного проекта, так и из других проектов. Ввиду возможного содержания ошибки в исходном фрагменте это может привести к её дальнейшему распространению по коду ПО. Используемые библиотеки без исходного кода также могут содержать потенциальные ошибки. Целью данной работы является разработка методов анализа характера изменений между версиями компонентов ПО, для которых отсутствует исходный код. А для изменений потенциально относящихся к исправлению дефектов поиск подобных, но не исправленных дефектов при помощи методов поиска клонов кода. Внедрение предлагаемого подхода к анализу используемых компонентов при разработке ПО позволит обеспечить оценку качества предлагаемых программных «заплаток». Поскольку реализованный метод независим от архитектуры операционной системы, а также работает с исполняемым кодом ПО это позволяет применять его как для анализа сторонних компонентов, так и для анализа бинарных сборок собственного программного обеспечения. Средний процент истинных срабатываний на тестовом наборе CoreBench составляет ~73%.

Об авторах

Марьям Сероповна Арутюнян
Институт системного программирования им. В.П. Иванникова РАН
Россия


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


Вааг Геворгович Варданян
Институт системного программирования им. В.П. Иванникова РАН
Россия


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


Арутюн Ишханович Аветисян
Институт системного программирования им. В.П. Иванникова РАН
Россия


Шамиль Фаимович Курмангалеев
Институт системного программирования им. В.П. Иванникова РАН
Россия


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

1. S. Ducasse, M. Rieger, S. Demeyer. A language independent approach for detecting duplicated code. In Proc. of the 15th International Conference on Software Maintenance, 1999, pp. 109-118.

2. T. Kamiya, S. Kusumoto, K. Inoue. CCFinder: A multilinguistic tokenbased code clone detection system for large scale source code. IEEE Transactions on Software Engineering, vol. 28, issue 7, 2002, pp. 654-670.

3. S. C. Misra и V. C. Bhavsar. Relationships between selected software measures and latent bug-density: Guidelines for improving quality. Lecture Notes in Computer Science, vol. 2667, 2003, pp. 724-732.

4. ГОСТ 19.102-77. Единая система программной документации. Стадии разработки. Москва, Стандартинформ, 2010.

5. Security Development Lifecycle (SDL). Режим доступа: https://www.microsoft.com/en-us/sdl, дата обращения 10.01.2019.

6. F. Long, M. Rinard. Automatic patch generation by learning correct code. In Proc. of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’2016), 2016, pp. 298-312.

7. D. Kim, J. Nam, J. Song, S. Kim. Automatic patch generation learned from human-written patches, In Proc. of the 35th International Conference on Software Engineering (ICSE), 2013, pp. 802-811.

8. S. Mechtaev, J. Yi, A. Roychoudhury. Directfix: Looking for simple program repairs. In Proc. of the 37th IEEE International Conference on Software Engineering (ICSE), 2015, pp. 448-458.

9. Y. Tian, J. Lawall, D. Lo. Identifying linux bug fixing patches. In Proc. of the 34th International Conference on Software Engineering (ICSE), 2012, pp. 386-396.

10. C.S. Corley, N.A. Kraft, L.H. Etzkorn, S.K. Lukins. Recovering traceability links between source code and fixed bugs via patch analysis. In Proc. of the 6th International Workshop on Traceability in Emerging Forms of Software Engineering, 2011, pp. 31-37.

11. H.K. Aslanyan. Effective and Accurate Binary Clone Detection. Mathematical Problems of Computer Science, vol. 48, 2017, pp. 64-73.

12. H. Aslanyan, A. Avetisyan, M. Arutunian, G. Keropyan, S. Kurmangaleev, V. Vardanyan, Scalable Framework for Accurate Binary Code Comparison. In Proc. of the 2017 Ivannikov ISPRAS Open Conference (ISPRAS), Moscow, 2017. DOI: 10.1109/ISPRAS.2017.00013

13. Ida Pro. Режим доступа: https://www.hex-rays.com/products/ida, дата обращения 10.01.2019.

14. Binnavi. Режим доступа: https://www.zynamics.com/binnavi.html, дата обращения 10.01.2019.

15. А.К. Асланян, Ш.Ф. Курмангалеев, В.Г. Варданян, М.С. Арутюнян, С.С. Саргсян. Платформенно-независимый и масштабируемый инструмент поиска клонов кода в бинарных файлах. Труды ИСП РАН, vol. 28, вып 5, 2016 г., стр. 215-226. DOI: 10.15514/ISPRAS-2016-28(5)-13.

16. Z. Xu, B. Chen, M. Chandramohan, Y. Liu, F. Song. SPAIN: Security Patch Analysis for Binaries Towards Understanding the Pain and Pills. In Proc. of the IEEE/ACM 39th International Conference on Software Engineering, 2017, pp. 462-472.

17. S. Letian, F. Jianming, C. Jing, P. Guojun. PVDF: An automatic Patch-based Vulnerability Description and Fuzzing method. In Proc. of the 2014 Communications Security Conference (CSC 2014), 2014), pp. 1-8.

18. D. Gao, M. K. Reiter, D. Song. Binhunt: Automatically finding semantic differences in binary programs. Lecture Notes in Computer Science, vol. 5308, 2008, pp. 238-255.

19. J. Ming, M. Pan, D. Gao. iBinHunt: Binary Hunting with Inter-procedural Control Flow. In Proc. of the 15th international conference on Information Security and Cryptology, 2012, pp. 92-109

20. Corebench. Режим доступа: https://www.comp.nus.edu.sg/~release/corebench/, дата обращения 10.01.2019.

21. M. Jean, M. Lou. Efficient Computation of Interprocedural Definition-Use Chains. ACM Transactions on Programming Languages and Systems, vol. 16, issue 2, 1994, pp. 175-204.

22. J. Ferranite, J. Karl, D. Joe. The Program Dependence Graph and Its Use in Optimization. ACM Transactions on Programming Languages and Systems, vol. 9, issue 3, 1987, pp. 319-349.

23. T. Dullien, S. Porst. REIL: A platform-independent intermediate representation of disassembled code for static code analysis. In Proc. of the CanSecWest Conference, 2009, 7 p.

24. Bruff Derek. The Assignment Problem and the Hungarian Method, 2005. http://www.math.harvard.edu/archive/20_spring_05/handouts/assignment_overheads.pdf дата обращения 10.01.2019.

25. CVE-2017-12990/Fix printing of ISAKMPv1 Notification payload data. Режим доступа: https://50.3.69.148/hawken/tcpdump/commit/c2ef693866beae071a24b45c49f9674af1df4028, дата обращения 10.01.2019.

26. PostgreSQL. Режим доступа: https://www.postgresql.org/, дата обращения 10.01.2019.

27. Binexport. Режим доступа: https://github.com/google/binexport/, дата обращения 10.01.2019.

28. T. Dullien, E. Carrera, S. Eppler, S. Porst. Automated Attacker Correlation for Malicious Code. Technical report, DTIC Document, 2010, 9 p.


Рецензия

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


Арутюнян М.С., Иванов Г.С., Варданян В.Г., Асланян А.К., Аветисян А.И., Курмангалеев Ш.Ф. Анализ характера изменений программ и поиск неисправленных фрагментов кода. Труды Института системного программирования РАН. 2019;31(1):49-58. https://doi.org/10.15514/ISPRAS-2019-31(1)-3

For citation:


Arutunian M.S., Ivanov G.S., Vardanyan V.G., Aslanyan H.K., Avetisyan A.I., Kurmangaleev Sh.F. Analysis of program changes nature and searching for unpatched code fragments. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2019;31(1):49-58. (In Russ.) https://doi.org/10.15514/ISPRAS-2019-31(1)-3



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


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