Dự đoán lỗ hổng phần mềm dựa trên kỹ thuật khai phá dữ liệu

27 26 0
Dự đoán lỗ hổng phần mềm dựa trên kỹ thuật khai phá dữ liệu

Đang tải... (xem toàn văn)

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

Thông tin tài liệu

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - Vũ Thị Vân DỰ ĐOÁN LỖ HỔNG PHẦN MỀM DỰA TRÊN KỸ THUẬT KHAI PHÁ DỮ LIỆU Chuyên ngành: Hệ thống thông tin Mã số: 60.48.01.04 LUẬN VĂN THẠC SĨ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS.TS BÙI THU LÂM HÀ NỘI - 2014 MỞ ĐẦU Xây dựng dự án phần mềm thành công mối quan tâm hàng đầu tổ chức, doanh nghiệp Trong đó, việc đảm bảo chất lượng phần mềm ưu tiên cao tồn q trình phát triển vận hành phần mềm Hiện nay, phần mềm máy tính có nhiều lỗ hổng, dễ dàng cho công cố ý, tin tặc lại có vơ số phương cách khai thác lỗi Xu hướng thực làm nhiều người lo ngại khơng người lạc quan vào khả chuyên gia an ninh việc phát thông báo lỗ hổng nhờ vào kỹ thuật Khi lỗ hổng phát hiện, phần mềm tự động tương ứng phân tích thơng báo cơng khai sửa chữa xong Điều giúp nhà quản lý hệ thống máy tính dễ dàng nhận thấy tính dễ tổn thương hệ thống an toàn họ Tuy nhiên, người quản lý không cài đặt bổ sung phần mềm sửa chữa trước tin tặc biết cách khai thác, chúng bị sử dụng để nắm quyền kiểm sốt máy tính phát tán virus Chính vậy, ngày phần mềm dự đốn lỗ hổng phần mềm phát triển mạnh mẽ, với nhiều phương pháp khác Có hai phương pháp để phát lỗi lỗ hổng phần mềm: - Phương pháp phân tích tĩnh: phương pháp phân tích trực tiếp mã nguồn dịch ngược mã nguồn mà không cần phải thực thi ứng dụng Đối tượng phương pháp đánh giá trực tiếp lấy thông tin đặc biệt từ mã nguồn phân tích tìm lỗ hổng mà kẻ cơng lợi dụng để thâm nhập vào hệ thống - Phương pháp phân tích động: phương pháp tự động phát lỗ hổng qua việc phân tích thực thi đoạn mã chương trình thực phân tích cách xử lý hay câu trả lời hệ thống đưa nhận định Trong hai phương pháp trên, phương pháp phân tích tĩnh phương pháp mang lại hiệu cao trình phát lỗ hổng phần mềm Do vậy, để tìm hiểu thêm vấn đề này, học viên chọn đề tài: “Dự đoán lỗ hổng phần mềm dự kỹ thuật khai phá liệu” Kết cấu luận văn gồm chương chính: Chương 1: Tổng quan dự đoán lỗ hổng phần mềm, chương giới thiệu khái niệm chung lỗ hổng, lỗ hổng phần mềm, cách thức phân loại lỗ hổng phần mềm phương pháp dự đoán lỗ hổng phần mềm phổ biến Chương 2: Sử dụng kỹ thuật khai phá liệu dự đoán lỗ hổng phần mềm, chương giới thiệu chung kỹ thuật khai phá liệu phương pháp áp dụng kỹ thuật khai phá liệu để dự đoán lỗ hổng phần mềm Chương 3: Thử nghiệm đánh giá kết quả, chương đưa mô hình cài đặt thực nghiệm cho ứng dụng dự đốn lỗ hổng phần mềm Hệ thống lấy liệu từ tập hợp tập tin mã nguồn mã nguồn mẫu Xây dựng mơ hình dự đốn lỗ hổng phần mềm kỹ thuật khai phá liệu để đưa trích chọn đặc trưng, trình bày chi tiết kỹ thuật áp dụng để tạo mơ hình dự đốn lỗ hổng phần mềm, đưa kết dự đốn để áp dụng cho hệ thống phần mềm MỤC LỤC Danh mục từ viết tắt STT Từ viết tắt AST Danh mục bảng Danh mục hình Nghĩa tiếng Việt Cây cú pháp trừu tượng Tiếng Anh Abstract syntax tree Chương – TỔNG QUAN VỀ DỰ ĐỐN LỖ HỔNG PHẦN MỀM Chương trình bày tổng quan dự đoán lỗ hổng phần mềm phương pháp nhằm ngăn ngừa, dự đoán lỗ hổng phần mềm Luận văn giới thiệu khái niệm liên quan tới lỗ hổng nói chung, lỗ hổng phần mềm nói riêng Luận văn trình bày cách khái quát phương pháp ngăn ngừa, dự đoán lỗ hổng tập trung làm rõ phương pháp dự đốn lỗ hổng dùng cách phân tích tĩnh mã nguồn phần mềm Đó phương pháp sử dụng q trình dự đốn lỗ hổng phần mềm luận văn 1.1 Khái niệm lỗ hổng phần mềm 1.1.1 Lỗ hổng Trong vấn đề bảo mật máy tính, lỗ hổng (hay điểm yếu) điểm cho phép kẻ cơng lợi dụng nhằm làm giảm an tồn thông tin hệ thống Một lỗ hổng xác định ba yếu tố chính: Một điểm nhạy cảm hệ thống hay lỗi, lỗ hổng mà kẻ công thường hay truy cập tới ba khả khai thác hệ thống kẻ công Để khai thác lỗ hổng, kẻ công phải có cơng cụ kỹ thuật để kết nối tới điểm yếu hệ thống Một nguy bảo mật coi lỗ hổng Hiện nay, giới có nhiều khái niệm lỗ hổng khác tổ chức, cơng ty đưa ra, kể đến số khái niệm sau:  ISO 27005 định nghĩa lỗ hổng như: Một điểm yếu tài sản nhóm tài sản bị khai thác nhiều mối đe dọa thứ có giá trị cho tổ chức, cho hoạt động sản xuất kinh doanh tổ chức, bao gồm nguồn thông tin hỗ trợ cho tổ chức  Theo IETF RFC 2828, lỗ hổng là: Một lỗ hổng (hay điểm yếu) thiết kế, phát triển, quản lý hệ thống mà khai thác nhằm vi phạm sách bảo bật hệ thống  Ủy ban hệ thống an ninh quốc gia Mỹ xác định khái niệm lỗ hổng là: Lỗ hổng hệ thống nội bộ, thủ tục an ninh, kiểm sốt nội q trình thực khai thác từ bên ngồi  Nhiều ấn phẩm NIST (National Institute of Standards and Technology – Viện tiêu chuẩn công nghệ) xác định lỗ hổng là: Một lỗ hổng (hay điểm yếu) thủ tục an ninh hệ thống, thiết kế, phát triển kiểm sốt nội vấn đề thực (vơ tình hay cố ý gây ra) tạo kết vi phạm sách an ninh, bảo mật hệ thống  ENISA định nghĩa lỗ hổng là: Sự tồn điểm yếu thiết kế lỗi dẫn tới kiện bất ngờ không mong muốn ảnh hưởng đến an tồn hệ thống máy tính, mạng, ứng dụng giao thức liên quan  ISACA định nghĩa lỗ hổng hệ thống quản lý rủi ro là: Là điểm yếu thiết kế, phát triển, vận hành điều hành nội Như vậy, đưa khái niệm lỗ hổng hệ thống phần mềm sau: “Các lỗ hổng hệ thống điểm yếu tạo ngưng trệ dịch vụ, thêm quyền người sử dụng cho phép truy nhập khơng hợp pháp vào hệ thống.”Các lỗ hổng nằm dịch vụ cung cấp sendmail, web, ftp Ngồi lỗ hổng cịn tồn tại hệ điều hành Windows NT, Windows 95, UNIX; ứng dụng mà người sử dụng thương xuyên sử dụng Word processing, Các hệ databases 1.1.2 Phân loại lỗ hổng Lỗ hổng phân loại dựa theo lớp mà liên quan đến 1.1.2.1 Lỗ hổng phần cứng Trong lỗ hổng phần cứng bao gồm: - Độ nhạy với độ ẩm Độ nhạy với bụi Độ nhạy với bẩn Độ nhạy với thiết bị lưu trữ không bảo vệ 1.1.2.2 Lỗ hổng phần mềm Lỗ hổng phần mềm bao gồm: - Lỗ hổng phát sinh chưa kiểm thử đầy đủ Lỗ hổng phát sinh thiếu việc kiểm tra lỗi xuất trước 1.1.2.3 Lỗ hổng mạng Lỗ hổng mạng bao gồm: - Lỗ hổng kênh truyền không bảo vệ Lỗ hổng kiến trúc mạng không an toàn 1.1.2.4 Lỗ hổng người Lỗ hổng người bao gồm: - Lỗ hổng trình tuyển dụng thiếu chặt chẽ, chất lượng thấp Lỗ hổng trình đào tạo, nâng cao nhận thức mức trung bình 1.1.2.5 Lỗ hổng site Lỗ hổng site bao gồm: - Lỗ hổng site nhiều chủ đề Lỗ hổng khả mã nguồn không đáng tin cậy 1.1.2.6 Lỗ hổng tổ chức Lỗ hổng tổ chức bao gồm: - Lỗ hổng thiếu kiểm tra thường xuyên Lỗ hổng thiếu kế hoạch liên tục Lỗ hổng thiếu bảo mật 1.1.3 Nguyên nhân gây lỗ hổng Các nguyên nhân gây lỗ hổng bao gồm: - Sự phức tạp: hệ thống lớn, phức tạp làm tăng khả - xuất lỗ hổng điểm truy cập ý muốn Sự quen thuộc: Thói quen sử dụng chung, code biết, phần mềm, hệ điều hành phần cứng làm tăng khả cho kẻ công việc tìm kiếm hiểu biết cơng cụ - để khai thác lỗi Sự kết nối: Quá nhiều kết nối vật lý, nhiều quyền, cổng, giao thức dịch vụ thời gian dẫn đến việc tăng khả truy - cập đến lổ hổng Lỗi hệ thống quản lý mật khẩu: Máy tính người dung sử dung mật đơn giản (weak passwods) bị khám phá bị cơng mạnh mẽ (thơng qua chương trình phân tích tốt hệ - thống tốt) Lỗi thiết kế tảng hệ điều hành: Thiết kế hệ điều hành thực sách tối ưu cục dành cho việc quản lý người dung/ - chương trình cụ thể Duyệt web: vài trang web chưa nhứng phần mềm độc hại (harmful Spyware) cài đặt tự động lên hệ thống máy - tính q trình truy cập Sai sót phần mềm: người lập trình khơng quan tâm đến chỗ sai sót bị khác thác chương trình Chương trình chứa sai sót cho phép kẻ công lạm dụng để khai - thác chương trình Khơng kiểm tra đầu vào: chương trình giả định rang tất - nhập liệu đầu vào người dùng an tồn Khơng rút kinh nghiệm từ lỗi gặp phải trước đó: chẳng hạn lỗi phát giao thức IPv4 tìm thấy giao thức xây dụng IPv6 1.1.4 Khái niệm lỗ hổng phần mềm Từ quan điểm lỗ hổng, cách thức phân loại lỗ hổng trên, đưa khái niệm lỗ hổng phần mềm sau: “Lỗ hổng phần mềm đơn giản điểm yếu hệ thống cho phép kẻ công tận dụng để phát huy lợi thế.” Trong ngữ cảnh bảo mật phần mềm: lỗ hổng lỗi đặc trưng bị bỏ quên phần phần mềm cho phép 10 kẻ công gậy hại cho hệ thống thay đổi thông tin nhạy cảm, làm gián đoạn phá hủy hệ thống, chiếm quyền kiểm soát hệ thống máy tính chương trình Hình 1.1 Vai trò lỗ hổng bảo mật phần mềm 1.2 Các loại lỗ hổng phần mềm Trong phần này, học viên đưa cách phân loại lỗ hổng phần mềm theo hai tiêu chí: - Phân loại theo sai sót phần mềm Phân loại theo trình phát triển phần mềm 1.2.1 Phân loại theo sai sót phần mềm Các loại sai sót phổ biến phần mềm dẫn tới việc xuất lỗ hổng phần mềm bao gồm: 1.2.1.1 Vi phạm an toàn nhớ (memory safety) An toàn nhớ vấn đề đáng lo ngại trình phát triển phần mềm nhằm mục đích tránh lỗi phần mềm gây lỗ hổng bảo mật với RAM gây tràn đệm treo trỏ 13 1.2.2 Phân loại theo trình phát triển phần mềm 1.2.2.1 Lỗi thiết kế Lỗ hổng thiết kế vấn đề phát sinh từ sai lầm thiết kế giám sát bước thiết kế phần mềm Với lỗ hổng thiết kế, phần mềm khơng an tồn khơng xác với phần mềm nên thiết kế để làm Nó thiết kế đơn giản gây lỗi lớn Những sai sót thường xảy giả định mơi trường hệ thống khơng với mà hệ thống thực tương tác Lỗi thiết kế gọi lỗ hổng có mức độ cao, lỗ hổng kiến trúc, hạn chế, vấn đề với chương trình phần mềm 1.2.2.2 Lỗi thực Khi nói lỗ hổng bước thực xây dựng chương trình mã nguồn chương trình đóng vai trị quan trọng nhất, nguyên nhân gây lỗ hổng phần mềm lớn Đúng tên gọi nó, lỗ hổng phần mềm thuộc loại thường phát sinh q trình thực xây dựng phần mềm, đơi phát sinh giai đoạn tích hợp kiểm thử phần mềm Những lỗ hổng gây sai lệch việc thiết kế thực xây dựng phần mềm Đánh giá chung lỗ hổng bước thường lỗ hổng mức độ thấp lỗi kỹ thuật 1.2.2.3 Lỗi sử dụng Lỗ hổng vận hành, sử dụng hệ thống vấn đề an ninh phát sinh trình vận hành, sử dụng phần tồn hệ thống phần mềm mơi trường cụ thể Cách thức phân biệt loại lỗ hổng đánh giá lỗ hổng khơng có mã nguồn phần mềm xác đánh giá cách phần mềm tương tác với môi trường Nó bao gồm vấn đề với việc cấu hình phần mềm mơi trường vấn đề liên quan tới tác động tự động thủ công xung quanh phần mềm Lỗ hổng bao gồm số phương thức công vào người dùng hệ thống 14 1.3 Ngăn ngừa lỗ hổng phần mềm Việc xây dựng mơ hình phương pháp tiếp cận để đối phó với lỗ hổng dựa hiểu biết Trong phần này, luận văn đưa hai phương pháp phòng chống lỗ hổng Với mục đích đánh giá mã nguồn phần mềm trình xây dựng để phát lỗi bảo mật thời gian mà không cần phải có bước kiểm tra chuyên sâu sau hoàn thiện phần mềm 1.3.1 Phương pháp kiểm tra phần mềm Phương pháp kiểm tra phần mềm trình đọc trực tiếp mã nguồn phần mềm tài liệu liên quan để tìm lỗi sửa chữa chúng trình phát triển Khi lỗi tìm thấy sớm tiết kiệm chi phí dễ dàng sửa lỗi Tuy nhiên, để đạt kết tốt trình kiểm tra phần mềm, yếu tố quan trọng khả nhân viên kiểm soát, loại lỗi mà họ cần kiểm tra Thơng thường, q trình kiểm tra phần mềm bước bắt buộc trình phát triển phần mềm Dưới đây, luận văn giới thiệu hai phương pháp kiểm tra dựa việc hệ thống hóa kiến thức chuyên gia bảo mật nhằm tìm lỗ hổng phần mềm  Xây dựng SGIT (Security Goal Indicator Trees) Cây định mục tiêu kiểm tra an ninh (Security Goal Indicator Trees – SGIT) tập trung vào tính tích cực phần mềm mà xác định suốt trình kiểm tra Một SGIT đồ thị mà gốc mục tiêu an ninh số thuộc tính để xác định mục tiêu Tuy nhiên, khơng phải tất thuộc tính mơ tả tường minh nên có số số tiêu cực Các số có giá trị logic với mục tiêu phải kiểm tra để đạt mục tiêu SGIT xây dựng chuyên gia an tồn thơng tin Ví dụ SGIT cho mục tiêu kiểm sốt liệu mơ tả hình 1.2, cho thấy 15 quan hệ phụ thuộc, số tích cực tiêu cực, ngồi cịn có SGIT khác trỏ tới (như “An audit component exists”) Hình 1.2 Ví dụ Security Goal Indicator Trees  Lược đồ kiểm tra lỗ hổng (Vulnerability Inspection Diagram) Xây dựng lược đồ kiểm tra lỗ hổng (Vulnerability Inspection Diagram VID) phương pháp kiểm tra phần mềm thủ cơng với mục đích mang lại lợi ích cho lập trình viên từ kiến thức kinh nghiệm chuyên gia bảo mật trình phát triển ứng dụng Vì vậy, VID đồ thị định hướng cho lập trình viên để kiểm tra phần mềm nhằm phát lỗ hổng phần mềm Thông thường, với loại lỗ hổng có lược đồ tương ứng xây dựng 16 1.3.2 Phương pháp xây dựng mơ hình SAG (Security Activity Graph) Mơ hình hoạt động an ninh (Security Activity Graphs – SAGs) hiệu việc phòng chống lỗ hổng Nó biểu đồ bao gồm nguyên nhân cụ thể hoạt động an ninh trình phát triển phần mềm Biểu đồ hình 1.3 cho thấy lựa chọn khác để giải vấn đề “Lacking design to implementation traceability” Hình 1.3 Ví dụ mơ hình SAG 1.4 Dự đốn lỗ hổng phần mềm Trong phần này, luận văn xem xét số phương pháp dự đoán lỗ hổng phần mềm phổ biến dùng phương pháp phân tích tĩnh phương pháp động nhằm đưa dự đoán lỗ hổng phần mềm Trong phương pháp phân tích tĩnh phương pháp dự đốn lỗ hổng mà khơng cần phải chạy mã nguồn để thực phát lỗ hổng Với phương pháp động, mã nguồn phần mềm chạy bên mơi trường kiểm sốt để thực việc phát lỗ hổng thu thập dấu hiệu để phát lỗ hổng 1.4.1 Phương pháp dự đoán tĩnh 1.4.1.1 Phương pháp đối chiếu mẫu Phương pháp đối chiếu mẫu kỹ thuật phân tích tính đơn giản Một ví dụ cụ thể áp dụng phương pháp sau: Sử dụng cộng cụ Grep để tìm tất lần xuất chuỗi “strcpy” toàn mã nguồn phần mềm viết ngơn ngữ lập trình C 17 Khi đó, kết trả hầu hết đưa hàm strcpy() thư viện C Việc dẫn tới chúng thường bị lạm dụng dễ gây lỗ hổng tiềm Do vậy, phương pháp đánh giá thiếu tính thực tiễn Nó khơng phân tích mã nguồn đơn giản vậy, khơng phù hợp để phân tích, phát lỗ hổng bảo mật phức tạp 1.4.1.2 Phân tích từ vựng Phương pháp phân tích từ vựng cải tiến so với phương pháp đối chiếu mẫu Một lexer sử dụng để chuyển mã nguồn thành thẻ (token), loại bỏ khoảng trắng Các thẻ đối chiếu lại lần với sở liệu mẫu lỗ hổng biết, từ đưa kết xác Một số cơng cụ sử dụng phương pháp Flawfinder, RATS, ITS4 - Công cụ Flawfinder: Nó chứa sở liệu lớn mẫu lỗ hổng phần mềm Khi phân tích mã nguồn, tạo danh sách lỗ hổng bảo mật tiềm năng, phân thành mức độ rủi ro tương ứng Danh sách lỗi đưa xếp theo mức độ rủi ro chúng Và lỗi có mức độ rủi ro đưa lên - Từ đó, tìm lỗ hổng thực phần mềm ITS4: Nó cơng cụ phát lỗ hổng phần mềm tương tự Flawfinder, có khả phân tích nhiều ngơn ngữ ngồi ngơn ngữ C Một điểm khác biệt ITS4 có xử lý đặc biệt dựa luật tập luật Ví dụ xử lý đánh dấu hàm strcpy(), hàm gọi an toàn tham số thứ hai hàm chuỗi tĩnh Tuy nhiên, phương pháp cịn nhược điểm lợi ích phân tích từ vựng cịn nhỏ, số sai số đưa sau phân tích cịn lớn 18 1.4.1.3 Phân tích dựa cú pháp trừu tượng (AST) Bước việc cải thiện tính xác kỹ thuật phân tích tĩnh phân tích mã nguồn xây dựng cú pháp trừu tượng (AST) đại diện chương trình Việc thường thực từ đầu vào chương trình biên dịch cung cấp khả tái sử dụng mã nguồn Một cơng cụ phân tích mã nguồn tĩnh sớm công cụ kiểm tra cú phát Lint xây dựng từ năm 1979 Công cụ phát đoạn lệnh không hợp lệ, biến không sử dụng hay hàm gọi với số tham số khơng Các biên dịch thực hầu hết hàm kiểm tra nên công cụ Lint trở nên lỗi thời, phương pháp phân tích dựa cú pháp trừu tượng sử dụng cho công cụ phân tích phức tạp Vấn đề phân tích cú pháp C đặc biệt mã nguồn C++ nhiệm vụ phức tạp Trong hầu hết chương trình biên dịch tương thích với ngơn ngữ C, phần mềm lại dựa ngơn ngữ khơng chuẩn khác Do vây, dẫn tới việc phải mở rộng biên dịch gây lỗi biên dịch Một ví dụ cụ thể sau: TODO… Cây cú pháp trừu trượng cho phép phân tích khơng cú pháp mà cịn ngữ nghĩa chương trình Khi sử dụng phương pháp phân tích từ vựng gây nhầm lẫn biến tên lỗi hàm, dùng phân tích AST phân biệt loại định danh khác Trên cú pháp trừu tượng biểu đồ mức độ độ phức tạp mở rộng, từ đưa nhiều lỗ hổng tiềm ẩn so với phương pháp phân tích từ vựng Các phương pháp phân tích trừu tượng phân tích luồng liệu hay phân tích lưu lượng liệu xây dựng cách sử dụng cú pháp trừu tượng 19 1.4.1.4 Phương pháp vịng loại Một số cơng cụ phát lỗ hổng tiên tiến xây dựng sở phương pháp vòng loại phát triển Jeffrey Foster Ơng mơ tả điều kiện bắt buộc phải có ngơn ngữ lập trình C, C++, Java hay ML Hầu hết ngơn ngữ có số lượng giới hạn vòng loại (là số từ khóa) Do vậy, Foster đề xuất hệ thống vòng loại dùng chung giải mã nguồn từ phát lỗ hổng mã nguồn vịng loại Hầu hết cơng cụ sử dụng phương pháp xây dựng sở cơng cụ phân tích mã nguồn C Một ví dụ cơng cụ phát lỗi định dạng chuỗi Shankar phát triển Công cụ sử dụng vòng loại để đánh dấu chuỗi khơng đáng tin cậy chương trình Nếu biến bị đánh dấu chuỗi không tin cậy sử dụng chương trình cơng cụ trả lỗi định dạng chuỗi Nhiều người cho cơng cụ có hiệu cao giảm tỉ lệ mã nguồn bị lỗi Phương pháp có lợi với cơng cụ đơn giản cần u cầu vài thích cho vòng loại thêm vào áp dụng phương pháp suy luận có hiệu cho chương trình lớn Tuy nhiên phương pháp có nhược điểm áp dụng cho số lỗ hổng bảo mật biểu diễn dạng mâu thuẫn 1.4.1.5 Phân tích luồng liệu Các loại lỗ hổng phần mềm đa dạng khơng đơn giản lỗi định dạng chuỗi Các lỗi liên quan với việc tràn đệm, tràn số nguyên, mục mảng vấn đề trỏ đòi hỏi kỹ thuật phân tích phức tạp phương pháp đối chiếu mẫu, hay phương pháp phân tích từ vựng Những lỗ hổng phát sinh biến chương trình bị ngồi phạm vi an tồn định Ví dụ, hàm strcpy() lỗ hổng kịch thước chuỗi vượt kích thước nhớ đệm đích Với lỗi 20 việc phát lỗi chương trình khó Phương pháp phân tích luồng liệu kỹ thuật sử dụng phương pháp biên dịch truyền thống để giải vấn đề này, sử dụng phương pháp để phát lỗ hổng hệ thống Phương pháp phân tích luồng liệu chương trình với ngơn ngữ C bất khả thi khơng tính tới giải pháp để xử lý vấn đề sai số lỗi phát Điều khiến cho công cụ phân tích mã nguồn tĩnh phải có hai lựa chọn: sử dụng luồng phân tích liệu an tồn cung cấp kết xác số trường hợp, số trường hợp đưa kết xấp xỉ chấp nhận kết khơng hồn tồn xác có sai số Nói chung, với sai số nhỏ chấp nhận việc phân tích mã nguồn khơng bị hạn chế quan trọng hơn, phương pháp thứ hai thường lựa chọn nhiều 1.4.1.6 Phân tích hỏng hóc Khái niệm hỏng hóc dung để liệu đến từ nguồn thong tin không đáng tin cậy, hay gọi “vết nhơ” gửi tình trạng tới tất nơi sử dụng liệu Mỗi sách bảo mật cụ thể quy định việc cho phép hay hạn chế liệu khơng an tồn Việc cố gắng sử dụng liệu bị hỏng dấu hiệu lỗ hổng phần mềm Ví dụ bật kỹ thuật chế độ taint cung cấp ngôn ngữ lập trình Perl Khi chạy chế độ này, phiên dịch viên đánh dấu tất liệu đọc từ tập tin, mạng, tham số lệnh, biến môi trường từ nguồn không tin cậy khác Các ngôn ngữ cung cấp sở để loại bỏ (hoặc “rửa”) liệu khơng tin cậy sau lập trình viên xác minh an tồn Các liệu bị hỏng khơng sử dụng chức làm biến đổi tập tin, thư mục thực chương trình bên ngồi Nếu quy tắc bị vi phạm, thông dịch viên hủy bỏ việc thực chương trình 21 1.4.1.7 Phương pháp phân tích văn Cách thức tiếp cận phương pháp coi file mã nguồn file văn Mỗi file văn chuyển đổi thành vectơ tính năng, từ file văn coi tính Trước chuyển đổi thành vectơ tính mã nguồn phần mềm thực bước tiền xử lý: Lọc tất ghi từ hệ thống mã nguồn; lọc tất chuỗi giá trị số Sau trình tiền xử lý, cần tạo vectơ đặc trưng đại diện cho tập hợp từ văn mã nguồn Để phân tách vectơ đặc trưng sử dụng ký tự trắng, dấu chấm câu “ , ; ) ( g f] [“ toán tử số học logic “+ - / * ^ j jj & && !” Từ vectơ đặc trưng có tính giá trị Ví dụ với file mã nguồn sau file HelloWord.java: Hình 1.4 Mã nguồn mẫu file "HelloWord.java" Với việc lọc từ file “HelloWord.java”, đưa vectơ đặc trưng sau: class:1, HelloWorldApp:1, public:1, static:1, void:1, main:1, String:1, args:1, System:1, out:1, println:1 Lúc từ theo sau số Đến giai đoạn học, vecto đặc trưng file văn gán nhãn (ví dụ: lỗ hổng bình thường) Dựa khái niệm học máy (SVM) xây dựng mơ hình dự báo lỗ hổng từ tập hợp vecto đặc trưng 22 1.4.2 Phương pháp dự đoán động 1.4.2.1 Kỹ thuật Tiêm lỗi (Fault injection) Đây kỹ thuật để dự đoan lỗ hổng cách kiểm tra hành vi hệ thống dựa số kiến thức hệ thống để tạo lỗi xảy Khi này, lỗi đưa vào hệ thống để kiểm tra, đồng thời quan sát nhằm đánh giá khả chịu lỗi hệ thống Mỗi lần thử thất bại lỗ hổng tiềm hệ thống đưa 1.4.2.2 Kỹ thuật Fuzzing Ý tưởng kỹ thuật cung cấp liệu ngẫu nhiên để làm đầu vào cho ứng dụng nhằm xác định xử lý ứng dụng cho xác hay khơng Thử nghiệm đơn giản kỹ thuật tiêm lỗi liệu kiểm tra đưa vào đơn giản ln biết kiểm tra hệ thống 1.4.2.3 Kỹ thuật Dynamic Taint Kỹ thuật tương tự kỹ thuật phân tích hỏng hóc phương pháp dự đoán tĩnh, trường hợp này, liệu bị lỗi theo dõi trình sử dụng hệ thống để xác định khả lỗi Nó cho phép phát vấn đề liệu đầu vào mà làm phát sinh lỗ hổng 1.4.2.4 Kỹ thuật Sanitization 1.5 Phần mềm quét lỗ hổng 1.5.1 Giới thiệu chung Phần mềm quét lỗ hổng ứng dụng phần mềm dung để đánh giá lỗ hổng bảo mật mạng máy tính hệ thống máy chủ đưa tập kết quét Tuy nhiên, nhà quản lý kẻ cơng sử dụng công cụ để sửa chữa khai thác hệ thống, quản trị viên cần tiến hành quét sửa chữa vấn đề trước kẻ cơng qt tương tự khai thác lỗ hổng tìm thấy 23 1.5.2 Phần mềm quét lỗ hổng Một phần mềm quét lỗ hổng đánh giá loại lỗ hổng hệ thống thông tin bao gồm máy tính, hệ thống mạng, hệ điều hành ứng dụng phần mềm khác Các lỗ hổng xuất phát từ nhà cung cấp, từ hoạt động quản trị hệ thống hay hoạt động sử dụng hàng ngày nói chung: - Nguồn gốc từ nhà cung cấp: bao gồm lỗi phần mềm, vá lỗi hệ điều hành thiếu, dịch vụ có lỗi, cấu hình mặc định - khơng an toàn, lỗ hổng từ ứng dụng web Nguồn gốc từ hệ quản trị: bao gồm truy cập khơng xác thay đổi cấu hình hệ thống trái phép, thiếu sách bảo vệ mật - khẩu… Nguồn gốc từ người sử dụng: chia trái phép thư mục, không chạy phần mềm quét virus, hành vi có hại khác 1.5.3 Các nhược điểm Những nhược điểm phần mềm quét lỗ hổng là: - Chỉ tức thời: phần mềm quét lỗ hổng đánh giá thời điểm điều khoản máy tính tình trạng an ninh mạng Do đó, nhu cầu quét phải tiến hành thường xuyên xuất lỗi hổng thay đổi cấu hình hệ thống làm phát - sinh lỗ hổng bảo mật Sự cần thiết phải có tham gia người: Các phần mềm quét lỗ hổng cài đặt dựa cấu hình có sẵn người thiết lập Nó khơng thể tự động xác định kết xác hay khơng xác Việc tham gia người cần thiết - việc phân tích liệu sau quét Những vấn đề khác: Mỗi phần mềm quét lỗ hổng thường thiết kế để phát loại lỗ hổng biết đến Nó khơng thể phát mối đe dọa bảo mật khác tác động vật lý, môi trường 24 1.5.4 Kiến trúc chung Mơ hình chung phần mềm quét lỗ hổng thường có bốn thành phần (module) sau: Scan Engine, Scan Database, Report Module User Interface Hình 1.5 Kiến trúc chung phần mềm quét lỗ hổng Scan Engine: Thực kiểm tra dựa cài đăt có sẵn, xác định thơng tin hệ thống lỗ hổng Nó quét nhiều máy chủ thời điểm so sánh kết với lỗ hổng biết đến Scan Database: Lưu trữ liệu lỗ hổng, kết quét, liệu khác sử dụng máy quét Số lượng cấu hình có sẵn, tần số cập nhật khác tùy nhà cung cấp tương ứng Mỗi cấu hình chứa thử nghiệm, mơ tả lỗ hổng chí hướng dẫn sửa chữa lỗ hổng Một phần mềm với tính tự động cập cấu hình cho phép tải thiết lập sở liệu Report Module: Cung cấp mức độ khác kết quét, báo cáo chi tiết kỹ thuật, hay đề xuất biện pháp sửa đổi cho người quản trị hệ thống Các đồ thị cấp cao hay báo cáo xu hướng cho người điều hành phạm vi phần 25 User Interface: cho phép người quản trị vận hành hệ thống quét lỗ hổng Nó giao diện đồ họa (GUI) đơn giản giao diện dòng lệnh 1.5.5 Các loại phần mềm quét lỗ hổng Phần mềm quét lỗ hổng dựa hai loại: phần mềm dựa mạng chạy qua mạng; phần mềm dựa máy chủ chạy máy chủ mục tiêu riêng Phần mềm dựa mạng: Loại phần mềm thường cài đặt máy tính quét số máy chủ khác mạng Nó giúp phát lỗ hổng nghiêm trọng tường lửa, máy chủ web bị lỗi, rủi ro liên quan tới việc cung cấp phần mềm rủi ro liên quan đến quản trị mạng hệ thống Phần mềm dựa máy chủ: Loại phần mềm cài đặt máy chủ để quét có quyền truy cập liệu mức thấp dịch vụ máy chủ cấu hình hệ điều hành máy chủ Các phần mềm thực kiểm tra nâng cao phần mềm dựa mạng khơng có quyền truy cập trực tiếp hệ thống phần mềm dựa máy chủ 1.6 Kết luận chương Tải FULL (53 trang): https://bit.ly/3zlzl6J Dự phòng: fb.com/TaiHo123doc.net Chương trình bày sở lý thuyết lỗ hổng nói chung lỗ hổng phần mềm nói riêng Mục 1.4 giới thiệu hai phương pháp dự đoán lỗ hổng phần mềm phổ biến phương pháp dự đoán tĩnh phương pháp dự đoán động Trong phương pháp dự đốn tĩnh áp dụng rộng rãi, đặc biệt với phần mềm phức tạp Trong phương pháp dự đoán tĩnh, phương pháp phân tích văn phương pháp Đây phương pháp luận văn sử dụng để dự đoán lỗ hổng phần mềm 26 Chương – SỬ DỤNG KỸ THUẬT KHAI PHÁ DỮ LIỆU TRONG DỰ ĐOÁN LỖ HỔNG PHẦN MỀM Chương trình bày kỹ thuật khai phá liệu, mơ hình khai phá liệu phổ biến Trong đó, luận văn làm rõ kỹ thuật khai phá liệu sử dụng mạng nơron, kỹ thuật áp dụng tốn dự đoán lỗ hổng phần mềm Phần sau chương trình bày phương pháp dự đốn lỗ hổng phần mềm kỹ thuật khai phá liệu có sử dụng mạng nơron 2.1 Khái niệm khai phá liệu mơ hình khai phá liệu 2.1.1 Khái niệm Khai phá liệu (datamining) định nghĩa trình chắt lọc hay khai phá tri thức từ lượng lớn liệu Một ví dụ hay sử dụng là việc khai thác vàng từ đá cát, datamining ví cơng việc "Đãi cát tìm vàng" tập hợp lớn liệu cho trước Thuật ngữ datamining để việc tìm kiếm tập hợp nhỏ có giá trị từ số lượng lớn liệu thơ Có nhiều thuật ngữ dùng có nghĩa tương tự với từ datamining Knowledge Mining (khai phá tri thức), knowledge extraction (chắt lọc tri thức), data/patern analysis (phân tích liệu/mẫu), data archaeoloogy (khảo cổ liệu), datadredging (nạo vét liệu), Khai phá liệu việc trích rút mẫu tri thức quan trọng từ lượng liệu lớn (quan trọng = không tầm thường, ẩn, chưa biết đến, hữu ích) Tải FULL (53 trang): https://bit.ly/3zlzl6J Dự phòng: fb.com/TaiHo123doc.net Định nghĩa: Khai phá liệu tập hợp kỹ thuật sử dụng để tự động khai thác tìm mối quan hệ lẫn liệu tập hợp liệu khổng lồ phức tạp, đồng thời tìm mẫu tiềm ẩn tập liệu 27 Khai phá liệu bước bảy bước trình KDD (Knowleadge Discovery in Database) KDD xem trình khác theo thứ tự sau: Làm liệu (data cleaning & preprocessing): Loại bỏ nhiễu liệu khơng cần thiết Tích hợp liệu: (data integration): trình hợp liệu thành kho liệu (data warehouses & data marts) sau làm tiền xử lý (data cleaning & preprocessing) Trích chọn liệu (data selection): trích chọn liệu từ kho liệu sau chuyển đổi dạng thích hợp cho q trình khai thác tri thức Quá trình bao gồm việc xử lý với liệu nhiễu (noisy data), liệu không đầy đủ (incomplete data) Chuyển đổi liệu: Các liệu chuyển đổi sang dạng phù hợp cho trình xử lý Khai phá liệu (data mining): Là bước quan trọng nhất, sử dụng phương pháp thơng minh để chắt lọc mẫu liệu Ước lượng mẫu (knowledge evaluation): Quá trình đánh giá kết tìm thơng qua độ đo Biểu diễn tri thức (knowledge presentation): Quá trình sử dụng kỹ thuật để biểu diễn thể trực quan cho người dùng 3833842 ... phương pháp dự đoán lỗ hổng phần mềm phổ biến Chương 2: Sử dụng kỹ thuật khai phá liệu dự đoán lỗ hổng phần mềm, chương giới thiệu chung kỹ thuật khai phá liệu phương pháp áp dụng kỹ thuật khai phá. .. văn sử dụng để dự đoán lỗ hổng phần mềm 26 Chương – SỬ DỤNG KỸ THUẬT KHAI PHÁ DỮ LIỆU TRONG DỰ ĐOÁN LỖ HỔNG PHẦN MỀM Chương trình bày kỹ thuật khai phá liệu, mơ hình khai phá liệu phổ biến Trong... văn làm rõ kỹ thuật khai phá liệu sử dụng mạng nơron, kỹ thuật áp dụng tốn dự đốn lỗ hổng phần mềm Phần sau chương trình bày phương pháp dự đoán lỗ hổng phần mềm kỹ thuật khai phá liệu có sử

Ngày đăng: 09/09/2021, 11:01

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

  • MỤC LỤC

  • Danh mục từ viết tắt

  • Danh mục các bảng

  • Danh mục các hình

    • 1.1 Khái niệm lỗ hổng phần mềm

      • 1.1.1 Lỗ hổng

      • 1.1.2 Phân loại lỗ hổng

        • 1.1.2.1 Lỗ hổng phần cứng

        • 1.1.2.2 Lỗ hổng phần mềm

        • 1.1.2.3 Lỗ hổng mạng

        • 1.1.2.4 Lỗ hổng về con người

        • 1.1.2.5 Lỗ hổng về site

        • 1.1.2.6 Lỗ hổng về tổ chức

        • 1.1.3 Nguyên nhân gây ra lỗ hổng

        • 1.1.4 Khái niệm lỗ hổng phần mềm

        • 1.2 Các loại lỗ hổng phần mềm

          • 1.2.1 Phân loại theo các sai sót của phần mềm

            • 1.2.1.1 Vi phạm an toàn bộ nhớ (memory safety)

            • 1.2.1.2 Lỗi xác thực đầu vào (input validation)

            • 1.2.1.3 Điều kiện thực hiện (race condition)

            • 1.2.1.4 Lỗi phân quyền lẫn lộn (Privilege confusion)

            • 1.2.1.5 Lỗi chiếm quyền thực thi (Privilege escalation)

            • 1.2.1.6 Các lỗi trong giao diện người dùng (user interface failures)

            • 1.2.2 Phân loại theo quá trình phát triển phần mềm

              • 1.2.2.1 Lỗi thiết kế

Tài liệu cùng người dùng

Tài liệu liên quan