CHƯƠNG 1. TONG QUAN VE LO HONG PHAN MEM 10 19029 11.1: Phân phối lỗ hồng theo CVSS Scores Vulnerability Distribution By CVSS Scores CVSS Score Ranges No 39223 M:2 Mỗi CVE nhận được điểm Hệ thống chấm điểm lỗ hồng phổ biến (Common Vulnerability Scoring System - CVSS) từ NVD sẽ cho biết mức độ nghiêm trọng về bảo mật của nó. Xếp hang mức độ nghiêm trọng bảo mật của NVD giúp các nhà phát triển và nhóm bảo mật xác định được mức độ nghiêm trọng và phạm vi ảnh hưởng của lỗ hồng dé phân bổ nguồn lực, khắc phục hậu quả. Điểm CVSS tuân theo một công thức được tạo thành từ vài chỉ số bảo mật.
Các chỉ số liên quan đến việc xác định mức độ nghiêm trọng của một lỗ hong bao gồm hướng truy cập của nó, độ phức tạp của cuộc tấn công, tính bảo mật của dữ liệu được xử lý bởi hệ thống chứa lỗ hồng, tính toàn vẹn của hệ thống bị khai thác. Trong phiên bản 3.0 mức độ nghiêm trong của lỗ hồng được phân loại thành các cấp độ như sau: PHAM NGỌC QUAN - D17AT02 23 Đồ án tốt nghiệp Đại học CHƯƠNG 1. TONG QUAN VE LO HONG PHAN MEM - Không nghiêm trọng (0) - Thấp (0,1-3,9) - Trung bình (4,0-6,9) - Cao (7,0-8,9) - Nghiêm trọng (9,0-10,0) 1. Các giải pháp giảm thiểu lỗ héng phần mềm Việc xây dựng các mô hình là phương pháp tiếp cận đầu tiên dé đối phó với các 16 hông dựa trên sự hiêu biêt vê nó.
Trong phân này sé đưa ra hai phương giảm thiêu lô hông. Với mục đích là đánh giá các mã nguôn phân mêm trong quá trình xây dựng dé phát hiện ra bất kỳ lỗi bảo mật trong thời gian này mà không cần phải có bước kiểm tra chuyên sâu sau khi đã hoàn thiện phần mềm. Phương pháp kiểm tra phần mém Phương pháp kiểm tra phần mềm là quá trình đọc trực tiếp mã nguồn phần mềm hoặc các tài liệu liên quan dé tim ra lỗi và sửa chữa chúng trong quá trình phát triển. Khi các lỗi tìm thay sớm sẽ tiết kiệm chi phí cũng như sẽ dé dang hơn khi sửa lỗi.
Tuy nhiên, dé đạt được kết quả tốt trong quá trình kiểm tra phần mềm, một yếu tổ quan trọng là khả năng của các nhân viên kiểm soát, các loại lỗi mà họ cần kiểm tra. Thông thường, quá trình kiểm tra phần mềm là một bước bắt buộc trong quá trình phát triển phần mềm. Dưới đây là hai phương pháp kiểm tra dựa trên việc hệ thống hóa các kiến thức của các chuyên gia bảo mật nhằm tìm ra các lỗ hồng trên phần mềm. - Xây dựng cây SGIT (Security Goal Indicator Trees) Cay chi dinh muc tiéu kiém tra an ninh (Security Goal Indicator Trees — SGIT) tập trung vào các tính năng tích cực của các phần mềm mà có thể được xác định trong suốt quá trình kiểm tra.
Một SGIT là một đồ thị mà sốc là một mục tiêu an ninh và các con của nó là các chỉ số hoặc các thuộc tính để xác định được mục tiêu đó. Tuy nhiên, vì không phải tất cả các thuộc tính đều có thể mô tả tường minh nên nó có thể có một số chỉ số tiêu cực. Các chỉ số này sẽ có một giá tri logic với mục tiêu và phải được kiểm tra dé đạt được mục tiêu. SGIT được xây dựng bởi các chuyên gia về an toàn thông tin.
Ví dụ về một SGIT cho mục tiêu kiểm soát đữ liệu được mô tả trong hình 1.3, nó cho thấy các quan hệ phụ PHAM NGỌC QUAN - D17AT02 24 Đồ án tốt nghiệp Đại học CHƯƠNG 1. TONG QUAN VE LO HONG PHAN MEM thuộc, các chỉ sô tích cực và tiêu cực, ngoài ra còn có các cây SGIT khác được trỏ tới (như “An audit component exIsts”). PHAM NGỌC QUAN - D17AT02 25 Đồ án tốt nghiệp Đại học CHƯƠNG 1. TONG QUAN VE LO HONG PHAN MEM Automated Secunty Audit Analysis Hinh 1.3: Vi du Security Goal Indicator Trees - Lược đồ kiểm tra lỗ hồng VID (Vulnerability Inspection Diagram) Xây dựng lược đồ kiểm tra lỗ hồng (Vulnerability Inspection Diagram) cũng là một phương pháp kiểm tra phần mềm thủ công với mục đích là mang lại lợi ích cho các lập trình viên từ những kiến thức và kinh nghiệm của các chuyên gia bảo mật trong quá trình phát triển ứng dụng.
Vì vậy, một VID là một đồ thị định hướng cho các lập trình viên dé kiểm tra phần mềm nhằm phát hiện các lỗ hồng trên phần mềm. Thông thường, với mỗi loại lỗ hổng sẽ có một lược đồ tương ứng được xây dung. PHAM NGOC QUAN - D17AT02 26 Đồ án tốt nghiệp Đại học CHƯƠNG 1. TONG QUAN VE LO HONG PHAN MEM 1.
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) cũng rất hiệu quả trong việc phòng chống lỗ hồng. Nó là một biéu đồ bao gồm các nguyên nhân cụ thé của các hoạt động an ninh trong quá trình phát triển phần mềm. Biéu đồ trong hình 1.3 cho thay sự lựa chọn khác nhau dé giải quyết van đề “Lacking design to implementation traceability”. Lacking design to Implementation traceability Generate a code from Cross-reference index design Code comments linking Between desing and code to design objects code Hình 1.4: Ví du mô hình SAG 1.
Phát hiện lỗ hỗng phần mềm Trong phan này sẽ xem xét một số phương pháp phát hiện lỗ hồng phần mềm phô biến dùng phương pháp phân tích tĩnh và phương pháp động nhằm đưa ra dự đoán lỗ hổng phần mềm. Trong đó phương pháp phân tích tĩnh là phương pháp phát hiện lỗ hong mà không cần phải chạy mã nguồn dé thực hiện phát hiện lỗ hồng. Với phương pháp động, các mã nguồn phần mềm được chạy bên trong một môi trường được kiểm soát dé thực hiện việc phát hiện lỗ hồng hoặc thu thập các dau hiệu dé phát hiện lỗ hồng. Phương pháp dự đoán tinh 1.
Phương pháp đối chiếu mẫu Phương pháp đối chiếu mẫu là kỹ thuật phân tích tính đơn giản nhất. Một ví dụ cụ thể áp dụng phương pháp này như sau: Sử dụng công cụ Grep dé tìm tat cả các lần xuất hiện của chuỗi “strepy” trong toàn bộ mã nguồn của một phần mềm được viết bằng ngôn ngữ lập trình C. Khi đó, kết quả trả về hầu hết đều đưa ra hàm strcpy() trong thư viện của C. Việc này dẫn tới chúng thường bị lạm dụng và dễ gây ra các lỗ hồng tiềm năng.
PHAM NGỌC QUAN - D17AT02 27 Đồ án tốt nghiệp Đại học CHƯƠNG 1. TONG QUAN VE LO HONG PHAN MEM Do vậy, phương pháp này được đánh giá là thiếu tính thực tiễn. Nó có thé không phân tích được các mã nguồn đơn giản và do vậy, nó cũng không phù hợp dé phân tích, phát hiện các lỗ hồng bảo mật phức tap. Phân tích từ vựng Phương pháp phân tích từ vựng cải tiến hơn so với phương pháp đối chiếu mẫu.
Một lexer được sử dụng dé chuyén ma nguồn thành 1 bộ các thẻ (token), trong đó đã loại bỏ các khoảng trang. Các thẻ nay sẽ được đối chiếu lại một lần nữa với cơ sở dữ liệu các mẫu lỗ hồng đã biết, từ đó đưa ra kết quả chính xác hơn. Một số công cụ sử dụng phương pháp này như Flawfinder, RATS, ITS4. - Công cụ Flawfinder: Nó chứa một cơ sở dit liệu lớn các mẫu lỗ hong phan mềm.
Khi phân tích mã nguồn, nó tạo ra một danh sách các lỗ hổng bảo mật tiềm năng, trong đó phân thành các mức độ rủi ro tương ứng. Danh sách các lỗi được đưa ra cũng được sắp xếp theo mức độ rủi ro của chúng. Và những lỗi có mức độ rủi ro các nhất được đưa lên đầu tiên. Từ đó, có thé tìm ra được lỗ hồng thực sự của phần mềm.
- ITS4: Nó cũng là một công cụ phát hiện lỗ hồng phần mềm tương tự như Flawfinder, nhưng nó có khả năng phân tích được nhiều ngôn ngữ ngoài ngôn ngữ C. Một điểm khác biệt nữa là ITS4 có các xử lý đặc biệt dựa trên các luật trong bộ tập luật của nó. Ví dụ như khi xử lý đánh dau hàm strepy(), hàm này được gọi là an toàn nếu tham số thứ hai của hàm là một chuỗi tĩnh. Tuy nhiên, phương pháp này vẫn còn những nhược điểm như các lợi ích của phân tích từ vựng còn nhỏ, con số sai số được đưa ra sau khi phân tích vẫn còn rất lớn.
Phân tích dựa trên cây cú pháp trừu tượng (AST) Bước tiếp theo trong việc cải thiện tính chính xác của kỹ thuật phân tích tĩnh là phân tích các mã nguồn và xây dựng cây cú pháp trừu tượng (AST) đại diện của chương trình. Việc này thường được thực hiện từ đầu vào của các chương trình biên dịch và nó cung cấp khả năng tái sử dụng các mã nguồn. Một trong các công cụ phân tích mã nguồn tĩnh sớm nhất là công cụ kiểm tra cú phát Lint được xây dựng từ năm 1979. Công cụ này phát hiện ra các đoạn lệnh không hợp lệ, các biến không được sử dụng hay các hàm được goi với số tham số không đúng.
Các bộ biên dịch mới đã có thể thực hiện được hầu hết các hàm kiểm tra như trên nên công cụ Lint đã trở nên lỗi thời, nhưng phương PHAM NGỌC QUAN - D17AT02 28 Đồ án tốt nghiệp Đại học CHƯƠNG 1. TONG QUAN VE LO HONG PHAN MEM pháp phân tích dựa trên cây cú pháp trừu tượng van được sử dung cho các công cụ phân tích phức tạp hơn. Vấn đề phân tích cú pháp C và đặc biệt là mã nguồn C++ có thể là một nhiệm vụ hết sức phức tạp. Trong khi hầu hết các chương trình biên dịch đều tương thích với ngôn ngữ C, thì các phần mềm lại có thể dựa trên các 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 hoặc gây ra lỗi biên dịch. Cây cú pháp trừu tượng cho phép chúng ta phân tích không chỉ cú pháp mà còn là ngữ nghĩa của một chương trình. Khi sử dụng phương pháp phân tích từ vựng có thê gây nhằm lẫn giữa các biến cùng tên như là một lỗi hàm, nhưng khi dùng phân tích AST sẽ có thê phân biệt được các loại định danh khác nhau. Trên cây cú pháp trừu tượng thì biéu đồ mức độ và độ phức tạp được mở rộng, từ đó có thê đưa ra được nhiều lỗ hồng tiềm ẩn hơ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 hơn như phân tích lu6ng dữ liệu hay phân tích lưu lượng dữ liệu có thé được xây dựng bằng cách sử dụng cây cú pháp trừu tượng.