7 Tổng kết
7.3 Phương hướng phát triển
Để công cụ có thể được hoàn thiện hơn và khắc phục được các hạn chế đã nêu ở trên, chúng tôi đề xuất một số hướng phát triển có thể được thực hiện như sau.
• Xét về vấn đề với sự thiếu hụt dữ liệu cần thiết, chúng tôi nhận thấy bộ dữ liệu được thu thập từ các kho lưu trữ mã nguồn mở là một nguồn dữ liệu có tiềm năng khai thác lớn. Việc xác định sự tồn tại lỗ hổng bảo mật có thể được xác định nhờ kiểm tra lịch sử các commit của những chương trình này và đối chiếu với danh sách các CVE. Tuy vậy, vẫn còn một trở ngại lớn đó là yêu cầu về nhân lực và thời gian để thực hiện rà soát và gán nhãn các mã nguồn. Vấn đề này có thể được xem xét như một bài gom cụm các mã nguồn có đặc điểm giống nhau thành một lớp để thực hiện gán nhãn tự động.
• Xét về tính ứng dụng của công cụ, có hai khía cạnh cần được phát triển thêm: số lượng lỗ hổng bảo mật được nhận diện và khả năng xác định vị trí lỗ hổng. Đối với việc tăng số lượng lỗ hổng bảo mật, vấn đề quan trọng nhất cần giải quyết là cung cấp dữ liệu với đa dạng các loại lỗ hỗng, nghĩa là ta phải giải quyết bài toán về tập dữ liệu đã nêu trước đó. Đối với khả năng xác định vị trí lỗ hổng, chúng tôi cho rằng các mức độ chi tiết để xem xét mã nguồn cơ bản như cấp chương trình, cấp file, cấp hàm, cấp câu lệnh, . . . chưa thực sự phù hợp. Nghiên cứu mở rộng có thể đề xuất một phương pháp chia mã nguồn thành các đơn vị cơ bản khác, phù hợp hơn cho quá trình xem xét và định vị lỗ hổng bảo mật.
• Một hướng phát triển mở rộng hơn nữa là tích hợp thêm cho công cụ khả năng tự động sửa lỗi sau khi đã xác định được lỗ hổng. Ý tưởng này xuất phát từ việc chúng tôi quan sát được nhóm dữ liệu “an toàn” cho một loại lỗ hổng bảo mật thường bao gồm các đoạn mã chứa chức năng có lỗ hổng bảo mật nhưng có sự can thiệp của các hàm sàn lọc dữ liệu trên dòng dữ liệu hoặc có sự thay đổi trong luồng thực thi so với đoạn mã nguy hiểm để tạo nên tính an toàn của nó.
Tóm lại, đề tài của chúng tôi được hoàn thành với việc hiện thực thành công một công cụ ứng dụng kĩ thuật học máy để nhận diện lỗ hổng bảo mật. Tuy nhiên, ý nghĩa của đề tài không chỉ dừng lại ở đây mà còn mở ra nhiều phương hướng phát triển mới, có tiềm năng đưa công cụ của chúng tôi nói riêng và các nghiên cứu liên quan nói chung hoàn thiện hơn, đến gần hơn với mục tiêu tự động hóa quá trình kiểm tra lỗ hổng bảo mật và hỗ trợ một cách linh hoạt và hiêu quả cho người sử dụng.
Tài liệu tham khảo
[1] Hisham Alasmary et al. “Analyzing and Detecting Emerging Internet of Things Mal- ware: A Graph-Based Approach”. In: IEEE Internet of Things Journal 6.5 (2019), pp. 8977–8988.
[2] M. Backes et al. “Efficient and Flexible Discovery of PHP Application Vulnera- bilities”. In: 2017 IEEE European Symposium on Security and Privacy (EuroS P).
2017, pp. 334–349.
[3] Michael Backes et al. “Efficient and Flexible Discovery of PHP Application Vulner- abilities”. In: 2017 IEEE European Symposium on Security and Privacy (EuroS P).
2017, pp. 334–349.
[4] D. Balzarotti et al. “Saner: Composing Static and Dynamic Analysis to Validate Sanitization in Web Applications”. In: 2008 IEEE Symposium on Security and Pri- vacy (sp 2008). 2008, pp. 387–401.
[5] Z. Bilgin et al. “Vulnerability Prediction From Source Code Using Machine Learn- ing”. In: IEEE Access 8 (2020), pp. 150672–150684.
[6] Deepayan Chakrabarti. “Graph Mining”. In: Encyclopedia of Machine Learning.
Ed. by Claude Sammut and Geoffrey I. Webb. Boston, MA: Springer US, 2010, pp. 469–471. url: https://doi.org/10.1007/978-0-387-30164-8_350.
[7] Hong Cheng et al. “Discriminative Frequent Pattern Analysis for Effective Classifi- cation”. In:2007 IEEE 23rd International Conference on Data Engineering (2007), pp. 716–725.
[8] J. Dahse. “RIPS-A static source code analyser for vulnerabilities in PHP scripts”. In: 2010.
[9] Johannes Dahse. “Static detection of complex vulnerabilities in modern PHP appli- cations”. PhD thesis. Ruhr University Bochum, 2016. url:http://hss-opus.ub. ruhr-uni-bochum.de/opus4/frontdoor/index/index/docId/4791.
[10] Yong Fang et al. “TAP: A static analysis model for PHP vulnerabilities based on token and deep learning technology”. In: PLOS ONE 14 (Nov. 2019), e0225196. [11] Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren. “The Program Dependence
Graph and Its Use in Optimization”. In: ACM Trans. Program. Lang. Syst. 9.3 (1987), pp. 319–349. url: https://doi.org/10.1145/24039.24041.
[12] FreeBSD : phpMyAdmin – Multiple security vulnerabilities.https://www.tenable. com/plugins/nessus/66210. Truy cập lần cuối: Tháng 7/2021.
[13] Joern’s documentation.https://joern.readthedocs.io/en/latest/databaseOverview. html. Truy cập lần cuối: Tháng 7/2021.
[14] Nenad Jovanovic, Christopher Kruegel, and Engin Kirda. “Pixy: A Static Analysis Tool for Detecting Web Application Vulnerabilities (Short Paper)”. In:Proceedings of the 2006 IEEE Symposium on Security and Privacy. 2006, pp. 258–263. url: https://doi.org/10.1109/SP.2006.29.
[15] Jorrit Kronjee, Arjen Hommersom, and Harald Vranken. “Discovering software vul- nerabilities using data-flow analysis and machine learning”. In: Aug. 2018, pp. 1– 10.
[16] Xin Li et al. “Automated Vulnerability Detection in Source Code Using Minimum Intermediate Representation Learning”. In:Applied Sciences10 (2020).url:https: //www.mdpi.com/2076-3417/10/5/1692.
[17] ZhanJun Li and Yan Shao. “A Survey of Feature Selection for Vulnerability Pre- diction Using Feature-Based Machine Learning”. In: Proceedings of the 2019 11th International Conference on Machine Learning and Computing. 2019, pp. 36–42.
[18] Zhen Li et al. “VulDeePecker: A Deep Learning-Based System for Vulnerability Detection”. In: Jan. 2018.
[19] Michael Martin and Monica S. Lam. “Automatic Generation of XSS and SQL In- jection Attacks with Goal-Directed Model Checking”. In: Proceedings of the 17th Conference on Security Symposium. SS’08. 2008, pp. 31–43.
[20] Michael Martin and Monica S. Lam. “Automatic Generation of XSS and SQL In- jection Attacks with Goal-Directed Model Checking”. In: Proceedings of the 17th Conference on Security Symposium. 2008, pp. 31–43.
[21] Ibéria Medeiros, Nuno Neves, and Miguel Correia. “DEKANT: A Static Analysis Tool That Learns to Detect Web Application Vulnerabilities”. In:Proceedings of the 25th International Symposium on Software Testing and Analysis. New York, NY,
USA, 2016, pp. 1–11. url: https://doi.org/10.1145/2931037.2931041.
[22] Henning Perl et al. “VCCFinder: Finding Potential Vulnerabilities in Open-Source Projects to Assist Code Audits”. In: 2015, pp. 426–437. url: https://doi.org/ 10.1145/2810103.2813604.
[23] Andre Petermann et al. “Graph Mining for Complex Data Analytics”. In: Dec. 2016, pp. 1316–1319.
[24] L. K. Shar, L. C. Briand, and H. B. K. Tan. “Web Application Vulnerability Predic- tion Using Hybrid Program Analysis and Machine Learning”. In:IEEE Transactions on Dependable and Secure Computing 12.6 (2015), pp. 688–707.
[25] L. K. Shar and H. B. K. Tan. “Predicting common web application vulnerabili- ties from input validation and sanitization code patterns”. In: 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.
2012, pp. 310–313.
[26] Zhidong Shen and Si Chen. “A Survey of Automatic Software Vulnerability De- tection, Program Repair, and Defect Prediction Techniques”. In: Secur. Commun. Networks 2020 (2020), 8858010:1–8858010:16.
Chương 7
[27] Bertrand Stivalet and Elizabeth Fong. Large Scale Generation of Complex and Faulty PHP Test Cases. Apr. 2016.
[28] Pang-ning Tan, Vipin Kumar, and Jaideep Srivastava. “Selecting the Right Inter- estingness Measure for Association Patterns”. In: Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (Dec. 2002). [29] Usage statistics of PHP for websites. https : / / w3techs . com / technologies /
details/pl-php. Truy cập lần cuối: Tháng 7/2021.
[30] Mark Weiser. “Program Slicing”. In:Proceedings of the 5th International Conference on Software Engineering. 1981, pp. 439–449.
[31] Fabian Yamaguchi, Markus Lottmann, and Konrad Rieck. “Generalized Vulnerabil- ity Extrapolation using Abstract Syntax Trees”. In: Dec. 2012, pp. 359–368. [32] Fabian Yamaguchi et al. “Modeling and Discovering Vulnerabilities with Code Prop-
erty Graphs”. In: May 2014.
[33] Xifeng Yan and Jiawei Han. “gSpan: Graph-Based Substructure Pattern Mining”. In: Feb. 2002, pp. 721–724. isbn: 0-7695-1754-4.
[34] Yaqin Zhou et al. Devign: Effective Vulnerability Identification by Learning Com- prehensive Program Semantics via Graph Neural Networks. 2019.
[35] Albrecht Zimmermann and Siegfried Nijssen. “Supervised Pattern Mining and Ap- plications to Classification”. In:Frequent Pattern Mining (July 2014), pp. 425–442.