Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

Analysis of program changes nature and searching for unpatched code fragments

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

Abstract

Software developers often resort to borrowing code both within one project and from another. Due to the possible content of errors in the source code snippet, this can lead to error propagation across program. Libraries used without source code may also contain potential errors. The purpose of this work is developing methods for analyzing the nature of changes between versions of software components for which source code is missing. And for changes potentially related to the correction of defects, search for similar, but not fixed defects using the code clone search methods. The implementation of the proposed approach to the analysis of the components used in software development will ensure the assessment of the quality of the proposed software patches. Since the implemented method is independent of the architecture of the operating system, and also works with executable software code, this allows it to be used for analyzing third-party components and for analyzing binary builds of proprietary software. The average percentage of true positives on the CoreBench test suite is ~ 73%.

About the Authors

Mariam Seropovna Arutunian
Ivannikov Institute for System Programming of the Russian Academy of Sciences
Russian Federation


Gregory Sergeevitch Ivanov
Ivannikov Institute for System Programming of the Russian Academy of Sciences
Russian Federation


Vahagn Gevorgovitch Vardanyan
Ivannikov Institute for System Programming of the Russian Academy of Sciences
Russian Federation


Hayk Karenovitch Aslanyan
Ivannikov Institute for System Programming of the Russian Academy of Sciences
Russian Federation


Arutyun Ishkhanovitch Avetisyan
Ivannikov Institute for System Programming of the Russian Academy of Sciences
Russian Federation


Shamil Faimovitch Kurmangaleev
Ivannikov Institute for System Programming of the Russian Academy of Sciences
Russian Federation


References

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. H.K. Aslanyan, S.F. Kurmangaleev, V.G. Vardanyan, M.S. Arutunian, S.S. Sargsyan, Platform-independent and scalable tool for binary code clone detection. Trudy ISP RAN/Proc. ISP RAS, vol. 28, issue 5, 2016, pp. 215-226 (in Russian). 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.


Review

For citations:


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
This work is licensed under a Creative Commons Attribution 4.0 License.


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