0

Nghiên cứu và phát triển công cụ sử dụng học máy tìm kiếm lỗ hổng bảo mật trong ứng dụng web

71 7 0
  • Nghiên cứu và phát triển công cụ sử dụng học máy tìm kiếm lỗ hổng bảo mật trong ứng dụng web

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Tài liệu liên quan

Thông tin tài liệu

Ngày đăng: 12/05/2022, 12:33

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH LUẬN VĂN TỐT NGHIỆP Nghiên cứu phát triển cơng cụ sử dụng học máy tìm kiếm lỗ hổng bảo mật ứng dụng web Hội đồng luận văn: Khoa học Máy tính Tập thể hướng dẫn: Thầy Nguyễn An Khương Khoa KH & KT Máy tính, ĐHBK Anh Nguyễn Văn Hịa Verichains Lab Anh Trần Ngọc Tín Verichains Lab Giảng viên phản biện: Thầy Trần Hồng Tài Khoa KH & KT Máy tính, ĐHBK Sinh viên thực hiện: Đặng Minh Ngọc 1712345 Ngày 17 tháng 10 năm 2021 TR I H C QU C GIA TP.HCM NG I H C BÁCH KHOA C NG HÒA XÃ H I CH NGH A VI T NAM c l p - T - H nh phúc NHI M V LU N ÁN T T NGHI P KHOA: KH & KT Máy tính B MƠN: KHMT Chú ý: Sinh viên ph i dán t vào trang nh t c a b n thuy t trình H VÀ TÊN: ng Minh Ng c NGÀNH: Khoa h c Máy tính MSSV: 1712345 L P: MT17KH02 u đ lu n v n: Nghiên C u Và Phát Tri n Công C S D ng H c Máy Tìm Ki m L H ng B o M t Trong ng D ng Web (Detecting Web Vulnerabilities using Machine Learning Techniques) Nhi m v (yêu c u v n i dung s li u ban đ u): - Nghiên c u, tìm hi u l i b o m t web c b n - Nghiên c u ph ng pháp bi u di n thơng tin trích xu t t mã ngu n v d ng vector đ c tr ng phù h p cho trình h c máy - Chu n hóa q trình tìm ki m l i b o m t ng d ng nh m t toán phân lo i c a h c máy - Hi n th c công c hồn ch nh có kh n ng d đốn l h ng b o m t b ng h c máy t mã ngu n c a ng d ng web Ngày giao nhi m v lu n v n: 22/02/2021 Ngày hoàn thành nhi m v : 14/06/2021 H tên gi ng viên h ng d n: Ph n h ng d n: - TS Nguy n An Kh ng G i ý h ng đ tài, h ng d n chung - KS Nguy n V n Hòa G i ý đ tài c th , phân tích l h ng b o m t mã ngu n, k thu t h c máy - KS Tr n Ng c Tín Các lo i l h ng b o m t c th c a ng d ng web N i dung yêu c u LVTN đ c thông qua B môn Ngày 03 tháng 08 n m 2021 CH NHI M B MÔN (Ký ghi rõ h tên) GI NG VIÊN H PH N DÀNH CHO KHOA, B MÔN: Ng i t (ch m s b ): n v : Ngày b o v : _ i m t ng k t: N i l u tr lu n án: NG D N CHÍNH (Ký ghi rõ h tên) TR NG I H C BÁCH KHOA KHOA KH & KT MÁY TÍNH C NG HỊA XÃ H I CH NGH A VI T NAM c l p - T - H nh phúc -Ngày tháng n m 2021 PHI U CH M B O V LVTN (Dành cho ng H tên SV: ng Minh Ng c MSSV: 1712345 (MT17KH02) ih ng d n) Ngành (chuyên ngành): KHMT tài: Nghiên c u phát tri n công c s d ng h c máy tìm ki m l h ng b o m t ng d ng web (Detecting Web Vulnerabilities using Machine Learning Techniques) H tên ng i h ng d n:  Nguy n An Kh ng, Khoa KH&KT Máy tính, HBK  Nguy n V n Hòa, Verichains Lab  Tr n Ng c Tín, Verichains Lab T ng quát v b n thuy t minh: S trang: 59 S b ng s li u: 11 S tài li u tham kh o: 35 Hi n v t (s n ph m): S ch ng: 07 S hình v : 25 Ph n m m tính tốn: T ng qt v b n v : -S b nv : B n A1: - S b n v v tay B n A2: Kh khác: S b n v máy tính: Nh ng u m c a LVTN:  LV có b c c h p lí, trình bày đ y đ , quy cách N i dung LV phân tích đ c m t s h ng ti p c n khác đ i v i l nh v c nghiên c u v phân tích phát hi n l h ng b o m t mã ngu n cho m t lo i ngơn ng c th (PHP)  tài LV có ý ngh a th c t  K t qu LV phù h p v i m c tiêu gi i h n ph m vi đ tài đ t ban đ u  Công c đ c hi n th c v i giao di n ng i dùng thân thi n, d s d ng Nh ng thi u sót c a LVTN:  B d li u đ c s d ng nghiên c u thi u s đa d ng ch a sát v i th c ti n  S l ng l h ng b o m t đ c nghiên c u h n ch , c n th nghi m v i nhi u lo i l i b o m t h n đ làm rõ tính hi u qu c a cơng c  Các mơ hình h c máy đ c s d ng ch a đ c trình bày chi ti t ngh : cb ov  M t s câu h i SV ph i tr l i tr B sung thêm đ b o v  c H i đ ng: Khơng có(SV s đ 10 ánh giá chung (b ng ch : gi i, khá, TB): Gi i Không đ cb ov  c h i tr c ti p H ) i m: 9.5/10 Ký tên (ghi rõ h tên) Nguy n An Kh ng TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KH & KT MÁY TÍNH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc -Ngày tháng 08 năm 2021 PHIẾU CHẤM BẢO VỆ LVTN (Dành cho người hướng dẫn/phản biện) Họ tên SV: Đặng Minh Ngọc MSSV: 1712345 Ngành (chuyên ngành): Khoa Học Máy Tính Đề tài: Nghiên cứu phát triển cơng cụ có sử dụng học máy để tìm kiếm, phát lỗi bảo mật ứng dụng web Họ tên người hướng dẫn/phản biện: /Trần Hồng Tài Tổng quát thuyết minh: Số trang: Số chương: Số bảng số liệu: Số hình vẽ: Số tài liệu tham khảo: Phần mềm tính tốn: Hiện vật (sản phẩm) Tổng qt vẽ: - Số vẽ: Bản A1: Bản A2: Khổ khác: - Số vẽ vẽ tay Số vẽ máy tính: Những ưu điểm LVTN: - Luận văn tìm hiểu ưu điểm, nhược điểm số hướng tiếp cận khác lĩnh vực tìm hiểu lỗ hổng mã nguồn cho loại ngơn ngữ cụ thể - Bài tốn đề xuất có ý nghĩa thực tiễn - Luận văn áp dụng mơ hình học decision tree random forest cho liệu đưa dạng đồ thị - Tạo dựng interface cho việc kiểm tra, đánh giá liệu Những thiếu sót LVTN: - Chỉ khai thác liệu public - Chưa thí nghiệm phương pháp học phổ biến khác - Cần trình bày thơng số áp dụng random forest chi tiết Đề nghị: Được bảo vệ  Bổ sung thêm để bảo vệ  Không bảo vệ  câu hỏi SV phải trả lời trước Hội đồng: - Đề xuất hướng tăng cường liệu cho tốn, tự gán nhãn có khả thi khơng? - Có tìm hiểu thêm mơ hình sử dụng data tốt học sâu khơng? 10 Đánh giá chung (bằng chữ: giỏi, khá, TB): Giỏi Điểm: 9.1/10 Ký tên (ghi rõ họ tên) Trần Hồng Tài Lời cam đoan Tôi xin cam đoan Luận văn Tốt nghiệp “Nghiên cứu phát triển công cụ sử dụng học máy tìm kiếm lỗ hổng bảo mật ứng dụng web” cơng trình nghiên cứu khoa học độc lập hướng dẫn TS Nguyễn An Khương, KS Nguyễn Văn Hòa KS Trần Ngọc Tín Các số liệu nghiên cứu khoa học kết nghiên cứu luận văn trung thực tài liệu tham khảo ghi rõ nguồn trích dẫn Nếu phát chép từ kết nghiên cứu khác sai sót số liệu nghiên cứu, tơi xin hồn tồn chịu trách nhiệm Trường Đại học Bách khoa Thành phố Hồ Chí Minh tập thể hướng dẫn khơng liên quan đến vi phạm tác quyền quyền tơi gây q trình thực luận văn KÝ TÊN: NGÀY: i Lời cảm ơn Với biết ơn sâu sắc dành cho người cho tơi lời dẫn, góp ý chân thành động viên khích lệ khơng ngừng để giúp tơi hồn thành luận văn này, tơi xin gửi gắm lời cảm ơn tới họ Đầu tiên, em xin bày tỏ lịng kính trọng biết ơn sâu sắc đến thầy Nguyễn An Khương Những đánh giá chi tiết định hướng tảng thầy đặt vô thực tế hữu ích cho em trình nghiên cứu đề tài Không dừng lại dẫn dắt, bảo kiến thức, quan tâm sát kĩ lưỡng thầy nguồn cổ vũ to lớn để em hồn thành ln văn Tiếp đến em xin chân thành cảm ơn anh Nguyễn Văn Hịa anh Trần Ngọc Tín, người ln nhiệt tình giúp đỡ truyền đạt cho em kiến thức kinh nghiệm cần thiết Em thật cảm thấy may mắn hướng dẫn những thầy, người anh tận tâm chu đáo Tiếp đến, xin gửi lời cảm ơn đến người anh công ty Verichains người bạn câu lạc An tồn thơng tin EFIENS Lời nhận xét, góp ý động viên họ góp phần khơng nhỏ giúp luận văn tơi hồn thiện nhiều Đặc biệt, xin dành biết ơn từ tận đáy lòng cho gia đình, người ln u thương đặt niềm tin tuyệt đối vào định Con khơng thể vượt qua khó khăn kiên trì đến khơng có người bên an ủi tiếp thêm nghị lực cho Quá trình học tập bốn năm Trường Đại học Bách Khoa Thành phố hồ Chí Minh đặc biệt thời gian làm luận văn mang nhiều ý nghĩa đặc biệt tơi Nhìn lại ngày tháng qua, chân thành biết ơn người thầy, người cô truyền đạt cho bao kiến thức bổ ích, người bạn ln sát cánh bên để tạo nhiều kỉ niệm vui vẻ, đáng nhớ Những tình cảm đẹp đẽ ln gắn liền với hình ảnh đại học Bách Khoa trở thành phần Xin cảm ơn Bách Khoa! Thành phố Hồ Chí Minh, tháng năm 2021 ii Tóm tắt luận văn Khi vai trị cơng nghệ thông tin truyền thông ngày gia tăng, với xuất ứng dụng web khắp nơi sống, yếu tố bảo mật trở thành vấn đề quan trọng đặt lên hàng đầu Với ứng dụng tương tác, xử lí thơng tin hàng ngàn khách hàng, tồn dù lỗ hổng tạo nên hiệu ứng dây chuyền gây thiệt hại đáng kể cá nhân, tổ chức Để giảm thiểu tối đa khả phát sinh hậu nghiêm trọng vậy, nhu cầu công cụ, kĩ thuật hỗ trợ việc kiểm tra phát lỗ hổng ngày tăng Bên cạnh đó, với đời kỹ thuật hướng liệu, ý tưởng việc tận dụng học máy phương pháp hỗ trợ phát lỗ hổng kiểm tra tính an tồn phần mềm thu hút nhiều quan tâm Trong nghiên cứu này, chúng tơi kiểm tra khả dự đốn lỗ hổng bảo mật mã nguồn cách sử dụng phối hợp kỹ thuật khai thác liệu kỹ thuật học máy Để đạt mục tiêu này, phát triển phương pháp ánh xạ thông tin mã nguồn biểu diễn dạng cấu trúc đồ thị thành đặc trưng có giá trị phân loại Sau đó, chúng tơi thực kiểm tra xem mơ hình học máy dự đốn tính an tồn hay khơng an tồn đoạn mã dựa đặc trưng hay không Để thực bước trên, sử dụng liệu công khai chứa lượng lớn file mã nguồn kèm với thông tin chi tiết gắn nhãn theo loại lỗ hổng bảo mật mà chứa iii Mục lục Giới thiệu đề tài 1.1 Đặt vấn đề 1.2 Mục tiêu phạm vi đề tài 1.2.1 Mục tiêu 1.2.2 Phạm vi đề tài 1.3 Ý nghĩa thực tiễn 1.4 Bố cục luận văn 1 3 3 Kiến thức công nghệ tảng 2.1 Code Property Graph 2.1.1 Các thành phần Code Property Graph 2.1.2 Các bước xây dựng Code Property Graph 2.2 Khai phá liệu đồ thị 2.2.1 Giới thiệu 2.2.2 Khai thác mẫu đồ thị 2.2.3 Giải thuật gSpan 2.2.4 Giải thuật MMRFS 2.3 Học máy 2.3.1 Decision Trees 2.3.2 Random Forest 2.3.3 Support Vector Machine 2.4 Lỗ hổng bảo mật ứng dụng web 2.4.1 Sự phức tạp ngôn ngữ PHP 2.4.2 Lỗ hổng kiểu Taint-style 5 10 10 11 12 14 16 16 17 18 19 20 21 23 23 23 24 25 30 30 30 Những nghiên cứu liên quan 3.1 Cơng cụ tìm kiếm lỗ hổng 3.1.1 Công cụ sử dụng kỹ thuật 3.1.2 Công cụ áp dụng kỹ thuật 3.2 Biểu diễn mã nguồn 3.3 Ứng dụng kĩ thuật hướng liệu 3.3.1 Phương pháp học sâu 3.3.2 Phương pháp học máy iv Phương pháp đề xuất 4.1 Phát biểu toán 4.2 Mô tả Tập liệu 4.2.1 SARD 4.2.2 Xử lí Tập liệu 4.3 Biểu diễn thông tin mã nguồn 4.3.1 Mức độ chi tiết phân tích mã nguồn 4.3.2 Tạo đồ thị CPG từ mã nguồn 4.4 Trích xuất đặc trưng 4.4.1 Khai thác mẫu đồ thị phổ biến 4.4.2 Khai thác tập mẫu đồ thị phổ biến 4.5 Huấn luyện mơ hình học máy 4.5.1 Mô tả toán 4.5.2 Mô tả liệu đầu vào 4.5.3 Các mơ hình dự đoán 31 31 31 31 32 32 32 33 37 37 38 39 39 39 40 Hiện thực công cụ 5.1 Các công cụ hỗ trợ 5.2 Thiết kế sở liệu 5.3 Hiện thực thành phần 5.3.1 Tạo đồ thị CPG 5.3.2 Vector hóa đồ thị 5.3.3 Xây dựng mơ hình phân loại 5.4 Thiết kế giao diện 41 42 43 44 44 44 44 45 Đánh giá 6.1 Tạo đồ thị CPG 6.2 Vector hóa đồ thị 6.3 Hiệu suất phân loại 6.3.1 Các số đánh giá 6.4 Kiểm thử giao diện hệ thống 48 48 50 50 51 53 54 54 54 54 55 56 Tổng kết 7.1 Kết đạt 7.2 Hạn chế 7.2.1 Tập liệu 7.2.2 Phương pháp thực 7.3 Phương hướng phát triển v Danh sách hình vẽ 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 Minh họa mã nguồn PHP Minh họa AST Minh họa đồ thị CFG Minh họa đồ thị PDG Minh họa đồ thị CPG Minh họa số đồ thị đẳng cấu Mẫu liệu sử dụng cho Minh họa định Minh họa Random Forest Minh họa SVM toán 3.1 3.2 3.3 3.4 3.5 Các bước q trình phân tích tĩnh1 Sơ đồ khai thác mẫu đồ thị Mã nguồn biểu diễn AST mảng Biểu diễn liệu AST Lưu liệu AST vào mảng 4.1 4.2 Minh họa đồ thị CPG tạo PHPJoern 34 Sơ đồ khai thác mẫu đồ thị 37 5.1 5.2 5.3 5.4 5.5 5.6 Sơ đồ cấu trúc công cụ Thiết kế sở liệu Giao diện bảng tùy chỉnh công cụ Giao diện hiển thị kết Giao diện hiển thị thông tin chế độ Editor Giao diện hiển thị thông tin chế độ Graph 6.1 6.2 Kích thước biểu đồ tạo so với kích thước mã nguồn 48 Thời gian tạo đồ thị CPG so với kích thước mã nguồn 49 vi khai thác mẫu 10 11 12 17 18 19 24 26 26 27 27 41 43 45 46 46 47 Chương Tương tự module Vector hóa đồ thị, module này, thực thư nghiệm nhiều lần để chọn giá trị hyperparameter phù hợp với model sử dụng Decision Tree, Random Forest SVM Các model sinh bước lưu trữ file hệ thống Như vậy, tiến hành sử dụng phân loại huấn luyện, hệ thống cần load model từ file trực tiếp thực dự đoán mà khơng cần phải chạy tồn module lại từ đầu Cả ba phân loại thực thư viện hỗ trợ scikit-learning 5.4 Thiết kế giao diện Sau hoàn tất module hoàn thành việc huấn luyện mơ hình học máy, tiến hành thực giao diện cho chức dự đốn lỗ hổng bảo mật cơng cụ Vì mục tiêu cơng cụ hỗ trợ q trình kiểm tra lỗ hổng thuận tiện xác hơn, việc sử dụng terminal làm hạn chế số ưu điểm mà phương pháp thực công cụ mang lại Giao diện gồm thành phần chính: Bảng tùy chỉnh, Vùng hiển thị kết quả, Vùng biểu diễn thơng tin Bảng tùy chỉnh (Hình 5.3) bao gồm tùy chọn loại lỗ hổng cần kiểm tra, phân loại sử dụng, chức import mã nguồn cần kiểm tra để người dùng lựa chọn Hình 5.3: Giao diện bảng tùy chỉnh để điều khiển công cụ 45 Chương Sau thực phân tích mã nguồn với tùy chọn bảng điều khiển, kết dự đoán xuất vùng hiển thị kết Hình 5.4 Hình 5.4: Giao diện hiển thị kết dự đoán lỗ hổng Vùng biểu diễn thơng tin có hai chế độ: Code Editor Graph Chế độ Code Editor (Hình 5.5) hiển thị tồn mã nguồn lên hình để thuận tiện cho người dùng thực kiểm tra, chỉnh sửa mã nguồn lưu thay đổi trực tiếp giao diện Trong đó, chế độ Graph (Hình 5.6) hiển thị giao diện để tương tác với đồ thị CPG mã nguồn Người dùng thực thu giảm / mở rộng nút để dễ dàng theo dõi sử dụng câu lệnh truy vấn cho đồ thị giao diện Hình 5.5: Giao diện hiển thị thông tin chế độ Editor 46 Chương Hình 5.6: Giao diện hiển thị thơng tin chế độ Graph 47 Đánh giá Trong chương này, thực đánh giá mức độ hoạt động hiệu phương pháp thực thành phần công cụ xây dựng 6.1 Tạo đồ thị CPG Bước tạo đồ thị CPG xử lí chủ yếu công cụ PHPJoern Trong mục này, phân tích hoạt động cơng cụ PHPJoern để đánh giá mức độ hiệu sử dụng Hình 6.1 minh họa tương quan kích thước đồ thị CPG (số lượng nút) tạo so với kích thước mã nguồn (số dịng lệnh) Hình 6.1: Kích thước biểu đồ tạo so với kích thước mã nguồn Có thể thấy số lượng nút tạo nhiều gấp hai đến ba lần số lượng dòng lệnh mã nguồn Tuy nhiên, so sánh với số lượng token cần xem xét lựa chọn biểu 48 Chương diễn mã nguồn ngôn ngữ tự nhiên, biểu diễn dạng cấu trúc tạo PHPJoern có ưu tiết kiệm tài nguyên lưu trữ tài nguyên xử lí nhiều Bên canh đó, chúng tơi cân nhắc đến thời gian thực thi bước tạo đồ thị (Hình 6.2) Với mã nguồn liệu có kích thước khoảng từ 40 đến 70 dòng lệnh, thời gian để tạo đồ thị CPG tương ứng tiêu tốn không 1.5 giây Nếu xét riêng việc sinh đồ thị cho file mã nguồn riêng lẻ thời gian thực thi không đáng kể Tuy nhiên, với số lượng lớn file mã nguồn tập liệu cần biểu diễn thành đồ thị CPG, thời gian tiêu tốn đáng kể (Bảng 5.2) Vì vậy, cơng cụ thiết kế để hạn chế việc phải lặp lại bước taọ đồ thị cho mã nguồn cách lưu trữ đồ thị tạo vào sở liệu PostgreSQL Hình 6.2: Thời gian tạo đồ thị CPG so với kích thước mã nguồn 49 Chương 6.2 Vector hóa đồ thị Bước ánh xạ đồ thị thành vector đặc trưng bao gồm việc khai thác mẫu đồ thị phổ biến lựa chọn mẫu có giá trị để làm đặc trưng Cả hai thuật toán gSpan MMRFS cần cung cấp số tham số người dùng tự định nghĩa Chúng thực đánh giá nhiều lần với giá trị tham số khác (Bảng 6.1) để lựa chọn giá trị cho kết phù hợp Bảng 6.1: Tập giá trị thử nghiệm cho tham số tùy chỉnh cho bước Vector hóa đồ thị Giải thuật gSpan với lớp liệu an tồn gSpan với lớp liệu khơng an toàn gSpan với lớp liệu khác MMRFS Tham số tùy chỉnh Tập giá trị thử nghiệm min_support {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8} max_support {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8} min_support {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8} max_support {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8} min_support {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9} max_support {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8} δ {5, 10, 15, 20, 25, 30, 35, 40, 45, 50} Kết lựa chọn giá trị tùy chỉnh phù hợp thể Bảng 6.2 Bảng 6.2: Giá trị chọn cho tham số tùy chỉnh cho bước Vector hóa đồ thị Lỗ hỗng SQLi XSS Giải thuật gSpan với lớp liệu an toàn gSpan với lớp liệu khơng an tồn gSpan với lớp liệu khác MMRFS gSpan với lớp liệu an toàn gSpan với lớp liệu khơng an tồn gSpan với lớp liệu khác MMRFS Tham số tùy chỉnh min_support = 0.6 max_support = 0.4 min_support = 0.6 max_support = 0.3 min_support = 0.8 max_support = 0.1 δ = 10 min_support = 0.6 max_support = 0.5 min_support = 0.7 max_support = 0.4 min_support = 0.8 max_support = 0.1 δ = 25 Số lượng mẫu thu 217 109 497 75 268 305 542 70 Kết việc lựa chọn đặc trưng cho thấy ưu điểm rõ rêt, số lượng mẫu cho cuối giảm khoảng 1/10 so với số lượng ban đầu khai thác 6.3 Hiệu suất phân loại Hai phân loại Decision Tree Random Forest thơng qua q trình thử nghiệm tham số để lựa chọn giá trị phù hợp cuối Các tham số tương ứng với mơ 50 Chương hình cung cấp sẵn thư viện scikit-learning thể cụ thể Bảng 6.3 Bảng 6.3: Giá trị chọn cho tham số tùy chọn mơ hình phân loại Lỗ hỗng Bộ phân loại Tham số tùy chỉnh max_depth = 30 min_samples_leaf = max_features = None n_estimators = 300 max_depth = None min_samples_split = min_samples_leaf = max_features = sqrt kernel = rbf C = 10 max_depth = None min_samples_leaf = 10 max_features = None n_estimators = 500 max_depth = None min_samples_leaf = max_features = sqrt kernel = rbf C = 100 Decision Tree SQLi Random Forest SVM Decision Tree XSS Random Forest SVM 6.3.1 Các số đánh giá Mục 4.2 đề cập tới vấn đề cân tập liệu Do đó, ta khảo sát đồng thời nhiều số để đánh giá hiệu hai phân loại sử dụng Bảng 6.4 trình bày chi tiêt kết kiểm tra số Ở hầu hết số, mơ hình Random Forest SVM đạt kết cao so với mô hình Decision Tree Điều lí giải nhờ sức mạnh thuật toán học tổng hợp từ nhiều định mơ hình Random Forest, dẫn đến khả dự đốn mơ hình xác Bản thân SVM mơ hình có đặc điểm phù hợp có khả cho kết tốt toán dạng phân loại nhị phân Một điểm cần lưu ý quan sát số ba mơ hình phân loại tốt file an toàn, không chứa lỗ hổng Tuy nhiên, file có lỗ hổng, số precision đạt mức (0.6 - 0.7) Điều có nghĩa số lượng tương đối file an toàn nằm tập hợp file phân loại có chứa lỗ hổng bảo mật Chỉ số recall tất hàng trì khoảng 0.79 - 0.87 Con số cho thấy phần lớn file phân loại theo nhãn Tuy nhiên, công cụ phân loại lỗ hổng bảo mật, người sử dụng khơng mong muốn bị bỏ sót lỗ hổng bảo mật mã nguồn Vậy nên hiệu phân loại công cụ mức tạm chấp nhận 51 Chương Bảng 6.4: Các số đánh giá độ hiệu mơ hình phân loại Bộ phân loại Lỗ hổng Decision Tree Random Forest SVM SQLi XSS SQLi XSS SQLi XSS Lớp An tồn Khơng an tồn An tồn Khơng an tồn An tồn Khơng an tồn An tồn Khơng an tồn An tồn Khơng an tồn An tồn Khơng an tồn cần cải thiện thêm 52 Precision 0.93 0.68 0.79 0.73 0.92 0.71 0.80 0.74 0.90 0.72 0.80 0.74 Recall 0.81 0.87 0.80 0.81 0.83 0.85 0.82 0.81 0.84 0.82 0.79 0.82 F1-score Accuracy 0.86 0.83 0.77 0.80 0.78 0.77 0.87 0.84 0.77 0.81 0.79 0.78 0.87 0.84 0.77 0.79 0.78 0.78 Chương 6.4 Kiểm thử giao diện hệ thống Trong phần này, chúng tơi trình bày số testcase thực kiểm thử cho chức giao diện thực Các testcase trình bày cụ thể Bảng 6.5 Bảng 6.5: Các số đánh giá độ hiệu mơ hình phân loại STT Nội dung Kết Ghi Chức dự đoán lỗ hổng Truy cập vào trang điều Giao diện hiển thị bảng điều khiển Pass khiển công cụ vùng hiển thị kết trống Chọn file mã nguồn cần Hiển thị tên file chọn ô Pass kiểm tra chứa tên file Chọn loại lỗ hổng bảo mật Tên loại lỗ hổng chọn Pass cần kiểm tra: XSS, SQLi, thay đổi từ màu trắng thành hai (Both) màu xanh Chọn phân loại để dự Tên loại phân loại Pass đoán: Decision Tree, Ran- chọn thay đổi từ màu trắng dom Forest, SVM thành màu xanh Nhấn nút Scan để gửi yêu Hệ thống kiểm tra thực dự Pass cầu kiểm tra tới hệ thống đoán tồn lỗ hổng file mã nguồn tải lên với lựa chọn người dùng thiết lập Kết trả hiển thị hình Chức hiển thị thông tin mã nguồn Chọn chế độ hiển thị Ed- Nội dung mã nguồn kiểm tra Pass itor hiển thị hình giao diện Chọn chế độ hiển thị Đồ thị CPG mã nguồn Pass hiển thị với khả thu giảm, mở CPG rộng nút liên kết Chức tạo báo cáo Nhấn nút Generate Report File báo cáo tạo tự động Pass để tạo báo cáo kết tải máy kiểm tra mã nguồn 53 Tổng kết Chương trình bày kết đạt từ trình làm luận văn Đồng thời phân tích hạn chế cịn tồn hướng mở rộng phát triển cho nghiên cứu lĩnh vực tương lai 7.1 Kết đạt Qua trình thực đề tài “Xây dựng công cụ sử dụng học máy tìm kiếm lỗ hổng bảo mật ứng dụng web”, kiểm chứng khả áp dụng kỹ thuật học máy khai phá liệu để phát mã nguồn dễ bị công ngơn ngữ lập trình động, cụ thể PHP Kết luận văn cơng cụ nhận diện lỗ hổng bảo mật mã nguồn PHP cách sử dụng phân loại học máy đặc trưng trích xuất thơng qua khai thác mẫu đồ thị Từ khẳng định tiềm hướng nghiên cứu áp dụng học máy vào quy trình kiểm tra mã nguồn Bên cạnh đó, chúng tơi cịn đề xuất phương pháp để ánh xạ thông tin từ biểu diễn dạng cấu trúc mã nguồn đồ thị CPG thành đặc trưng có giá trị phân loại cao cho q trình xây dựng mơ hình học máy Điều cung cấp thêm hướng giải khác cho vấn đề vector hóa mã nguồn xây dựng cơng cụ kiểm tra kết hợp với kỹ thuật định hướng liệu 7.2 7.2.1 Hạn chế Tập liệu Đối với đề tài này, tập liệu có ảnh hưởng to lớn đến hai giai đoạn q trình nhận diện lỗ hổng, bao gồm bước khai thác mẫu đặc trưng xây dựng mơ hình phân loại Mục 4.2 luận văn trình bày thơng tin tập liệu SARD sử dụng Tuy cung cấp số lượng lớn file phân loại rõ ràng có thơng tin chi tiết kèm theo lỗ hổng, tập liệu nhiều khuyết điểm khiến khiến khơng tương thích hồn tồn với mục đích sử dụng luận văn Thứ nhất, mã nguồn có chứa lỗ hổng tập liệu tạo cơng cụ nhóm tác giả nghiên cứu [27] thực Điều đồng nghĩa với việc mã 54 Chương nguồn không thực phản ánh tồn lỗ hổng bảo mật chương trình thực tế Mỗi mẫu liệu gói gọn file nên khơng bao qt đa dạng phức tạp ứng dụng web thực Thứ hai, tập liệu phân thành tập theo loại lỗ hổng bảo mật bao quát Thực tế, loại lỗ hổng bảo mật phân tích thành nhiều loại chi tiết hơn, ví dụ lỗ hổng SQLi chia thành loại In-band SQLi (Classic), Inferential SQLi (Blind) Out-of-band SQLi Nếu phân loại liệu thành lớp cụ thể cho công cụ học đặc trưng để dự đốn, tính ứng dụng hiệu cải thiện đáng kể, chí cho phép cơng cụ gợi ý xác vị trí lỗ hổng mã nguồn Đối với vấn đề tập liệu, nhiều tác giả [34, 18] lựa chọn xây dựng liệu riêng cho nghiên cứu Cơng việc đòi hỏi thu thập mã nguồn từ ứng dụng thực tế, thực rà soát lỗ hổng gán nhãn cho mã nguồn cách thủ công Tuy nhiên, phạm vi lực thời gian đề tài, thực theo phương pháp 7.2.2 Phương pháp thực Phương pháp tiếp cận thực sử dụng luận văn tồn số hạn chế, đặt toán mở rộng cho việc cải thiện tương lai Thứ nhất, thiết kế cơng cụ xác định để đốn lỗ hổng bảo mật với điều kiện mã nguồn chương trình cần xem xét có sẵn Việc phát lỗ hổng ứng dụng web mà mã nguồn tốn riêng khác có độ phức tạp cao Thứ hai, cơng cụ sử dụng PHPJoern cho bước tạo đồ thị CPG nên thân công cụ mặc định hoạt động với mã nguồn PHP Tuy nhiên, điều chỉnh module tạo đồ thị CPG để hoạt động với nhiều ngôn ngữ khác cách thay công cụ PHPJoern công cụ Joern thực số thay đổi cần thiết để tương thích với công cụ Thứ ba, công cụ có khả dự đốn file mã nguồn có hay khơng có tồn lỗ hổng bảo mật Việc dự đốn xác định vị trí lỗ hổng mã nguồn địi hỏi phân tích đồ thị dựa mức độ chi tiết (granularity) phù hợp mức file Thứ tư, thực tế tập liệu chúng tơi có nhiều mã nguồn gần giống nhau, có khả chứa mẫu trùng lặp Do đặc trưng phục vụ cho trình học máy khai thác trực tiếp từ tập liệu, khả đặc trưng bị “thiên vị” (bias) trùng lặp mẫu liệu lớn Thứ năm, khả dự đoán lỗ hổng cơng cụ cịn giới hạn tập liệu sử dụng bao gồm hai loại lỗ hổng bảo mật SQLi XSS 55 Chương 7.3 Phương hướng phát triển Để cơng cụ hoàn thiện khắc phục hạn chế nêu trên, đề xuất số hướng phát triển thực sau • Xét vấn đề với thiếu hụt liệu cần thiết, nhận thấy liệu thu thập từ kho lưu trữ mã nguồn mở nguồn liệu có tiềm khai thác lớn Việc xác định tồn lỗ hổng bảo mật xác định nhờ kiểm tra lịch sử commit chương trình đối chiếu với danh sách CVE Tuy vậy, cịn trở ngại lớn u cầu nhân lực thời gian để thực rà soát gán nhãn mã nguồn Vấn đề xem xét gom cụm mã nguồn có đặc điểm giống thành lớp để thực gán nhãn tự động • Xét tính ứng dụng cơng cụ, có hai khía cạnh cần phát triển thêm: số lượng lỗ hổng bảo mật nhận diện khả 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 cần giải cung cấp liệu với đa dạng loại lỗ hỗng, nghĩa ta phải giải tốn tập liệu nêu trước Đối với khả xác định vị trí lỗ hổng, cho mức độ chi tiết để xem xét mã nguồn cấp chương trình, cấp file, cấp hàm, cấp câu lệnh, chưa thực phù hợp Nghiên cứu mở rộng đề xuất phương pháp chia mã nguồn thành đơn vị khác, phù hợp cho trình xem xét định vị lỗ hổng bảo mật • Một hướng phát triển mở rộng tích hợp thêm cho cơng cụ khả tự động sửa lỗi sau xác định lỗ hổng Ý tưởng xuất phát từ việc quan sát nhóm liệu “an tồn” cho loại lỗ hổng bảo mật thường bao gồm đoạn mã chứa chức có lỗ hổng bảo mật có can thiệp hàm sàn lọc liệu dịng liệu có thay đổi luồng thực thi so với đoạn mã nguy hiểm để tạo nên tính an tồn Tóm lại, đề tài chúng tơi hồn thành với việc thực thành công 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 đề tài không dừng lại mà mở nhiều phương hướng phát triển mới, có tiềm đưa cơng cụ chúng tơi nói riêng nghiên cứu liên quan nói chung hồn thiện hơn, đến gần với mục tiêu tự động hóa q trình kiểm tra lỗ hổng bảo mật hỗ trợ cách linh hoạt hiêu cho người sử dụng 56 Tài liệu tham khảo [1] Hisham Alasmary et al “Analyzing and Detecting Emerging Internet of Things Malware: 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 Vulnerabilities” 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 Vulnerabilities” 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 Privacy (sp 2008) 2008, pp 387–401 [5] Z Bilgin et al “Vulnerability Prediction From Source Code Using Machine Learning” In: IEEE Access (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 Classification” 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 applications” 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 57 Chương [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 vulnerabilities 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 Sciences 10 (2020) url: https: //www.mdpi.com/2076-3417/10/5/1692 [17] ZhanJun Li and Yan Shao “A Survey of Feature Selection for Vulnerability Prediction 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 Injection 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 Injection 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 Prediction 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 vulnerabilities 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 Detection, Program Repair, and Defect Prediction Techniques” In: Secur Commun Networks 2020 (2020), 8858010:1–8858010:16 58 Chương [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 Interestingness 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 Vulnerability Extrapolation using Abstract Syntax Trees” In: Dec 2012, pp 359–368 [32] Fabian Yamaguchi et al “Modeling and Discovering Vulnerabilities with Code Property 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 Comprehensive Program Semantics via Graph Neural Networks 2019 [35] Albrecht Zimmermann and Siegfried Nijssen “Supervised Pattern Mining and Applications to Classification” In: Frequent Pattern Mining (July 2014), pp 425–442 59 ... đoan Tôi xin cam đoan Luận văn Tốt nghiệp ? ?Nghiên cứu phát triển công cụ sử dụng học máy tìm kiếm lỗ hổng bảo mật ứng dụng web? ?? cơng trình nghiên cứu khoa học độc lập hướng dẫn TS Nguyễn An Khương,... MSSV: 1712345 Ngành (chuyên ngành): Khoa Học Máy Tính Đề tài: Nghiên cứu phát triển cơng cụ có sử dụng học máy để tìm kiếm, phát lỗi bảo mật ứng dụng web Họ tên người hướng dẫn/phản biện: /Trần... chuyên gia bảo mật từ bên tham gia, tìm kiếm thơng báo lỗ hổng bảo mật ứng dụng • Sử dụng dịch vụ firewall doanh nghiệp chuyên bảo mật, ứng dụng web thơng thường đặt bảo vệ lớp proxy gọi Web Application
- Xem thêm -

Xem thêm: Nghiên cứu và phát triển công cụ sử dụng học máy tìm kiếm lỗ hổng bảo mật trong ứng dụng web ,

Từ khóa liên quan