Academia.eduAcademia.edu
Kỷ yếu Hội nghị Quốc gia lần thứ X về Nghiên cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR), Đà Nẵng, ngày 17-18/08/2017 DOI: 10.15625/vap.2017.00078 NGHIÊN CỨU PHƯƠNG PHÁP HÌNH THỨC DỰA TRÊN LOGIC TRONG PHÂN TÍCH AN NINH MẠNG Nguyễn Thị Ánh Phượng, Nguyễn Trường Thắng, Trần Mạnh Đông, Bùi Thị Thư Viện Công nghệ thông tin, Viện Hàn lâm Khoa học và Công nghệ Việt Nam { ntaphuong, ntthang, dongtm, btthu }@ioit.ac.vn TÓM TẮT: Ngày nay với sự phát triển không ngừng của internet và các lĩnh vực trong công nghệ thông tin, các thiết bị phần cứng, các ứng dụng phần mềm và các dịch vụ trên internet trở nên rất phổ biến làm cho nền kinh tế của các nước trên toàn thế giới ngày càng phát triển. Tuy nhiên, cùng với sự phát triển nhanh chóng đó luôn tiềm ẩn những rủi ro, gây ra những hệ lụy tổn thất về tài chính, uy tín… cho các tổ chức hay cá nhân tham gia dịch vụ. Do đó, vấn đề đảm bảo an toàn, an ninh thông tin trong quá trình truyền tải thông tin trên môi trường mạng luôn là một vấn đề nóng trong nghiên cứu và ứng dụng thực tiễn. Đặc biệt là với một mạng doanh nghiệp, vấn đề đảm bảo an ninh, an toàn thông tin mạng ngày càng trở nên khó khăn. Hiện nay với sự lan tỏa của các lỗ hổng phần mềm, các nhà quản trị hệ thống đang phải đối mặt với rất nhiều thách thức và khó khăn trong việc đảm bảo an ninh không gian mạng. Bài báo này sẽ trình bày một cách tiếp cận của phương pháp hình thức dựa trên logic trong việc phân tích an ninh mạng nhằm phát hiện ra các lỗ hổng đang tồn tại trong hệ thống và những cuộc tấn công có thể có nhằm vào hệ thống, giúp cho các chuyên gia bảo mật và các nhà quản trị hệ thống quản lý tốt hơn cấu hình của một mạng doanh nghiệp và có thể kiểm soát được các rủi ro trong an ninh mạng. Từ khóa: Enterprise network security, logic-programming, attack graphs. I. GIỚI THIỆU Lĩnh vực đảm bảo an toàn thông tin trên môi trƣờng mạng cũng nhƣ việc tăng cƣờng khả năng phòng ngừa/khắc phục của hệ thống trƣớc các cuộc tấn công trên mạng đang thu hút sự nghiên cứu trên thế giới, ở cả giới học thuật và giới công nghiệp cũng nhƣ sự đầu tƣ của các chính phủ. Tuy nhiên, một thực tế là cách tiếp cận hiện nay của những chuyên gia quản trị mạng thƣờng phi hình thức, mang tính chất tạm thời, xử lý tình huống, chắp vá. Dựa trên các cảnh báo lỗ hổng từ nhiều nguồn nhƣ CERT, BugTraq,... họ tự đánh giá khả năng ảnh hƣởng những lỗ hổng này trong hệ thống của mình và tự xây dựng cách xử lý: vá lỗi và khởi động lại hệ thống, tái thiết lập lại cấu hình tƣờng lửa (firewall),... [1]. Cách tiếp cận này thƣờng phụ thuộc trình độ/kinh nghiệm của từng cá nhân quản trị nên tiềm ẩn nhiều rủi ro. Với sự trƣởng thành về cơ sở khoa học của các phƣơng pháp hình thức đồng thời sự phát triển vƣợt trội về tốc độ tính toán, việc ứng dụng các phƣơng pháp hình thức vào kiểm chứng sự an toàn của các giao thức truyền tin trên mạng (kể cả internet, mạng viễn thông cố định và không dây nhƣ IEEE 802.x [2]) cũng nhƣ sự suy diễn các tổn thƣơng của hệ thống do các lỗ hổng tiềm năng phát hiện đƣợc từ lỗi mã nguồn [3], [4] hoặc lỗi thiết lập cấu hình [1],... đã trở thành hƣớng nghiên cứu chủ đạo trong lĩnh vực an ninh mạng trên thế giới trong khoảng 10 năm trở lại đây. Tại Việt Nam, an toàn và an ninh thông tin cũng đang là một vấn đề nóng và ngày càng trở nên cấp thiết nhất là trong bối cảnh liên tiếp xảy ra các vụ tấn công mạng nhƣ sự kiện tin tặc tấn công cổng thông tin ngành hàng không Việt Nam (Vietnam Airlines) và hệ thống thông tin hiển thị bay tại 2 cụm cảng hàng không Nội Bài và Tân Sơn Nhất vào ngày 29/7/2016. Có thể nói cuộc tấn công website và hệ thống thông tin sân bay này đƣợc đánh giá là lớn nhất từ trƣớc đến nay vào hệ thống thông tin hàng không của Việt Nam. Việc đối phó với các lỗ hổng phần mềm trên các máy chủ mạng đặt ra một thách thức lớn cho các nhà quản trị mạng nhất là khi số lƣợng các máy chủ mạng tiếp tục phát triển cả về quy mô lẫn độ phức tạp. Do vậy việc lựa chọn các biện pháp đối phó với các lỗ hổng đó là rất quan trọng. Hiện nay đã có một số công cụ có thể tự động quét, phát hiện và báo cáo các lỗ hổng tồn tại trên các máy chủ riêng biệt nhƣ: COPS [5], Nessus [6], OVAL [7]. Tuy nhiên cần phải phân tích và đánh giá những ảnh hƣởng và sự tƣơng tác của các lỗ hổng này đến vấn đề an ninh an toàn mạng nhƣ thế nào. Do vậy việc nghiên cứu sử dụng phƣơng pháp nào cho hiệu quả và có thể áp dụng đƣợc trên thực thế là rất quan trọng. Trong đề tài này chúng tôi đề xuất lựa chọn phƣơng pháp hình thức dựa trên logic. Sử dụng Datalog, một tập hợp con các cú pháp của Prolog để tìm ra phần lớn các cuộc tấn công có thể xảy ra trong một mạng. So với các đồ thị khai thác phụ thuộc (exploit-dependency graph), Datalog là một ngôn ngữ logic khai báo hình thức, trong đó cung cấp một đặc tả kỹ thuật rõ ràng. Thời gian thực hiện của một chƣơng trình Datalog là thời gian đa thức phụ thuộc vào kích thƣớc của dữ liệu đầu vào. Các công cụ logic đã đƣợc tối ƣu hóa trong nhiều thập kỷ để xử lý các tập dữ liệu lớn một cách hiệu quả, vì vậy Datalog đặc biệt thích hợp cho việc phân tích an ninh của các mạng lớn và phức tạp. Trong phần tiếp theo sẽ trình bày một số kiến thức nền tảng về an ninh mạng và các luật suy diễn Datalog cơ bản dùng trong phân tích an ninh mạng. Phần III sẽ đi vào phân tích cơ sở dữ liệu, đặc tả hình thức của các thông tin cấu hình mạng, máy chủ, lỗ hổng,… Phần IV trình bày thuật toán sinh đồ thị tấn công. Phần V là thực nghiệm và cuối cùng phần VI là phần kết luận. Nguyễn Thị Ánh Phƣợng, Nguyễn Trƣờng Thắng, Trần Mạnh Đông, Bùi Thị Thƣ 657 II. MỘT SỐ KIẾN THỨC NỀN TẢNG A. Lỗ hổng bảo mật và vấn đề quản lý an ninh mạng Các lỗ hổng bảo mật trên một hệ thống là các điểm yếu có thể tạo ra sự ngƣng trệ của dịch vụ, thêm quyền đối với ngƣời sử dụng hoặc cho phép các truy nhập không hợp pháp vào hệ thống. Các lỗ hổng cũng có thể nằm ngay các dịch vụ cung cấp nhƣ sendmail, web, ftp,... Ngoài ra các lỗ hổng còn tồn tại ngay chính tại hệ điều hành nhƣ trong Windows NT, Windows 95, UNIX; hoặc trong các ứng dụng mà ngƣời sử dụng thƣờng xuyên sử dụng nhƣ Word processing, Các hệ databases,… Lỗi logic (Logic error): là loại lỗ hổng thƣờng sinh ra khi ngƣời lập trình thực hiện thiết kế các chƣơng trình ứng dụng. Đây là loại lỗ hổng thƣờng đƣợc mọi ngƣời quan tâm và nghĩ đến đầu tiên. Nó bao gồm các loại lỗ hổng sau: Lỗ hổng hệ điều hành: Hệ điều hành là phần mềm hệ thống đóng vai trò trung gian trong giao tiếp giữa ngƣời dùng và phần cứng máy tính cho phép ngƣời sử dụng phát triển và thực hiện các ứng dụng của họ một cách dễ dàng. Với góc độ xử lý ta có các hệ điều hành đơn nhiệm MS-DOS, hệ điều hành đa nhiệm,… Với góc độ máy tính ta có hệ điều hành Window, Linux, MacOS. Nếu một ngƣời quản trị kém có thể là nguyên nhân dẫn tới hệ điều hành bị tin tặc tấn công. Nhƣng đôi khi chính bản thân hệ điều hành cũng chứa đựng nhiều lỗ hổng, nhƣ tràn bộ đệm “buffer overflow”. Lỗ hổng trong các ứng dụng: Khác với lỗ hổng hệ điều hành, để tấn công thông qua các lỗ hổng trong các ứng dụng, ngƣời tấn công phải xác định đƣợc một cách chính xác máy tính nạn nhân đang sử dụng các chƣơng trình ứng dụng tồn tại lỗ hổng bảo mật đó. Tuy nhiên, lỗ hổng trong các ứng dụng đôi khi còn tùy thuộc vào cách thức cài đặt, cấu hình các ứng dụng đang có của ngƣời sử dụng. Các hình thức tấn công phổ biến thông qua lỗ hổng ứng dụng hiện nay là: liên kết các địa chỉ web, khai thác Cookie, làm tràn bộ nhớ đệm, lỗ hổng trong các giao thức. Lỗ hổng trong chính sách bảo mật (Policy oversight): Là loại lỗ hổng sinh ra trong quá trình thiết lập các chính sách bảo mật cho một hệ thống nhƣ là thiếu cơ chế backup dữ liệu, dự phòng các sự cố phần cứng, nâng cấp phần mềm,… Hacker có thể lợi dụng những lỗ hổng này để tạo ra chuỗi lỗ hổng mới. Trong nhiều trƣờng hợp sau khi báo cáo các lỗ hổng sẽ có các bản vá lỗi ngay sau đó, ngƣời ta thƣờng sẽ không vội vàng áp dụng ngay các bản vá lỗi này bởi việc vá lỗi vội vàng đó có thể sẽ tạo thêm nhiều lỗi mới hơn và việc áp dụng nó sẽ gây ra nhiều thiệt hại hơn. Do vậy, việc các nhà quản trị mạng vẫn tiếp tục cho chạy phần mềm lỗi đó trong một khoảng thời gian là khá phổ biến [7]. Các nhà quản trị mạng phải đảm bảo tiềm năng khai thác các lỗ hổng đó sẽ không xảy ra và nếu đã xảy ra sẽ không gây bất kỳ thiệt hại nào. Một trong các công việc hàng ngày của quản trị mạng là đọc các báo cáo lỗ hổng từ các nguồn khác nhau và hiểu đƣợc thực sự các lỗ hổng đó có ảnh hƣởng đến an ninh mạng của họ hay không. Để khám phá ra một cuộc tấn công tiềm ẩn có thể xảy ra trong một mạng, không chỉ kiểm tra các thông số cấu hình trên mỗi phần tử mạng, máy móc, tƣờng lửa, các bộ định tuyến,… mà còn phải xem xét tất cả các tƣơng tác có thể xảy ra giữa chúng. Công việc này gọi là phân tích các lỗ hổng đa máy chủ, đa trạng thái, nếu công việc này chỉ đƣợc thực hiện bởi con ngƣời thì sẽ tốn rất nhiều thời gian, công sức và rất dễ bị nhầm lẫn sai sót. Do vậy việc tự động hóa công việc này là rất quan trọng và cần thiết. Một công cụ phân tích an ninh mạng tự động sẽ rất khả thi khi mà các mối đe dọa liên tục gia tăng và thay đổi, các suy luận logic cũng cần phải đƣợc đặc tả một cách hình thức để vừa có thể thực hiện trên lý thuyết vừa có hiệu quả trên thực tế. Phần tiếp theo sẽ trình bày chi tiết hơn việc sử dụng đặc tả hình thức để mô hình hóa mạng nhằm phục vụ cho các công cụ phân tích an ninh mạng tự động nhƣ MulVAL, một công cụ phân tích an ninh mạng tự động cho một mạng doanh nghiệp sẽ đƣợc sử dụng để thực nghiệm trong chƣơng cuối của bài báo. B. Một số luật Datalog cơ bản Datalog là một tập con của Prolog [8]. Một sự khác biệt đáng kể giữa Datalog và Prolog là Datalog có ngữ nghĩa tƣờng thuật thuần túy. Thứ tự các mệnh đề trong một chƣơng trình Datalog không liên quan đến ý nghĩa logic và giá trị kết quả của nó. Trong khi đó, trong Prolog lệnh nhƣ vậy là rất quan trọng và ảnh hƣởng đến kết quả đánh giá [8]. Datalog cũng đã đƣợc sử dụng nhƣ là một ngôn ngữ bảo mật để thể hiện các chính sách kiểm soát truy cập [9, 10]. Có rất nhiều lợi ích của việc sử dụng Datalog nhƣ là một mô hình hóa hình thức của lý luận trong phân tích an ninh mạng đã thảo luận trong bài báo này. So với các đồ thị khai thác phụ thuộc (exploit-dependency graph), Datalog là một ngôn ngữ logic khai báo hình thức, trong đó cung cấp một đặc tả kỹ thuật rõ ràng. Giống nhƣ trong cách tiếp cận kiểm chứng mô hình, ngƣời ta có thể tận dụng một công cụ logic off-the-shelf để tiến hành phân tích. Nhƣng không giống nhƣ kiếm chứng mô hình, thời gian thực hiện của một chƣơng trình Datalog là đa thức theo kích thƣớc của dữ liệu đầu vào. Các công cụ logic đã đƣợc tối ƣu hóa trong nhiều thập kỷ để xử lý các tập dữ liệu lớn một cách hiệu quả, làm cho Datalog đặc biệt thích hợp cho việc phân tích an ninh của các mạng lớn và phức tạp. Một literal, p(t1, …., tk) là một vị từ, mỗi thành phần trong đó có thể là một hằng số hoặc là một biến. Trong hình thức của Prolog, một biến là một định danh bắt đầu với chữ in hoa, một hằng số sẽ bắt đầu với một chữ cái thƣờng. Đặt L0, L1, …., Ln là các literals, một mệnh đề Horn trong Datalog có dạng nhƣ sau: L0 :- L1, …., Ln 658 NGHIÊN CỨU PHƢƠNG PHÁP HÌNH THỨC DỰA TRÊN LOGIC TRONG PHÂN TÍCH AN NINH MẠNG Có nghĩa là, nếu L1, …., Ln là đúng thì L0 cũng đúng. Phía trái đƣợc gọi là phần đầu (head), bên phải biểu thức đƣợc gọi là phần thân (body). Một mệnh đề với một body trống đƣợc gọi là một fact. Một mệnh đề với một body không trống đƣợc gọi là một rule. Một số luật chỉ sự tồn tại của các lỗ hổng mạng: vulExists(Host,Program,ExploitRange,ExploitConsequence) là một vị từ có nguồn gốc xác định từ một Program trên một Host và nó có ExploitRange và ExploitConsequence riêng biệt. Đây là một vị từ có nguồn gốc. Program là đƣờng dẫn đầy đủ của file thực thi có chứa các lỗi bảo mật. ExploitRange là local hoặc remote, chỉ ra lỗi là khai thác tại địa phƣơng hoặc khai thác từ xa. Hai giá trị phổ biến cho ExploitConsequence là privilege Escalation, có nghĩa là một khai thác thành công sẽ cho phép kẻ tấn công thực thi mã tùy ý, và dos, có nghĩa là những kẻ tấn công có thể làm sụp đổ chƣơng trình (từ chối dịch vụ). vulExists(Host,ID,Program) là một vị từ nguyên thủy chỉ ra rằng đó là một lỗ hổng với định danh ID tồn tại trong Program trên Host. bugHyp(Host,Program,Range,Consequenc)là một vị từ động giới thiệu một lỗi giả định trong một Program trên Host mà có ExploitRange và ExploitConsequence. Một số luật khai thác lỗ hổng: execCode(P,H,UserPriv) là một vị từ có nguồn gốc xác định rằng P có thể thực thi mã nhị phân với đặc quyền UserPriv trên máy H. netAccess(P,Src,Dst,Protocol,Port) là một vị từ có nguồn gốc xác định rằng P có thể gửi các gói tin từ máy Src đến Port trên máy Dst thông qua Protocol. setuidProgram(H,Prog) là một vị từ nguyên thủy chỉ ra rằng Prog là một setuid1 III. PHÂN TÍCH CƠ SỞ DỮ LIỆU A. Đặc tả hình thức cấu hình máy chủ và cấu hình mạng Một công cụ phân tích an ninh mạng tự động thƣờng bao gồm một máy quét (Scanner) chạy không đồng bộ trên từng máy chủ và thích nghi với các công cụ có sẵn nhƣ OVAL hoặc Nessus và một bộ phân tích chạy trên một máy chủ khi có thông tin mới đến từ máy quét. Cấu hình máy chủ (Host configuration): Thông tin cấu hình khác nhau trên một máy chủ là rất cần thiết cho các công cụ phân tích an ninh mạng nhƣ MulVAL. Các thông tin này có thể dễ dàng nhận đƣợc bằng cách thực hiện các câu lệnh hệ điều hành hoặc xem trong các file cấu hình. Một máy quét OVAL / Nessus có thể trích xuất các thông số cấu hình trên một máy chủ. Ví dụ kết quả chuyển đổi đầu ra của máy quét dƣới dạng mệnh đề Datalog nhƣ sau: networkService(webServer,httpd,TCP,80,apache). Có nghĩa là chƣơng trình dụng giao thức chạy trên máy sử dụng nghe trên cổng và sử Cấu hình mạng (Network configuration): MulVAL mô hình hóa cấu hình mạng (router và tƣờng lửa) nhƣ là một danh sách kiểm soát truy cập máy chủ trừu tƣợng (host access-control lists - HACL). Đó là một danh sách có cấu trúc nhƣ sau: hacl(Source,Dest,Protocol,Port). Có nghĩa là một máy trong và có thể đạt đến đích thông qua một dịch vụ mạng đƣợc đặc tả bởi Thông tin này có thể đƣợc cung cấp bởi một công cụ quản lý tƣờng lửa nhƣ Smart Firewall [11]. Dƣới đây là một ví dụ HACL cho phép lƣu lƣợng TCP chảy từ cổng 80 đến webServer: hacl(internet,webServer,TCP,80). B. Đặc tả hình thức các lỗ hổng Phần lớn các lỗ hổng phần mềm liên quan tới bảo mật, do vậy các cơ quan báo cáo lỗ hổng đã cung cấp một đặc tả hình thức cho các lỗ hổng đã đƣợc phát hiện, định dạng mà máy có thể đọc đƣợc. Việc đặc tả hình thức các lỗ hổng cùng với các công cụ xử lý tự động đã giúp cho việc trao đổi báo cáo các lỗ hổng trở nên dễ dàng hơn và kịp thời đối phó với chúng. Đặc tả lỗ hổng bao gồm 2 phần: phần thứ nhất là đặc tả nhận dạng lỗ hổng (giúp nhận biết sự tồn tại 1 Trong hệ điều hành Unix, một chƣơng trình setuid sẽ có đặc quyền gốc (root) khi nó đƣợc thực hiện Nguyễn Thị Ánh Phƣợng, Nguyễn Trƣờng Thắng, Trần Mạnh Đông, Bùi Thị Thƣ 659 của lỗ hổng đó trên hệ thống) và phần thứ hai là đặc tả ngữ nghĩa (ảnh hƣởng của lỗ hổng đó trên hệ thống nhƣ thế nào). Trong 2 phần sau chúng tôi mô tả ngắn gọn về OVAL, một ngôn ngữ đặc tả hình thức cho việc ghi nhận các lỗ hổng và ICAT một cơ sở dữ liệu cung cấp các ảnh hƣởng của lỗ hổng. 1. Ngôn ngữ OVAL và máy quét OVAL là một ngôn ngữ dựa trên XML nhằm xác định kiểm tra cấu hình máy. Khi một lỗ hổng phần mềm mới đƣợc phát hiện, một định nghĩa OVAL có thể xác định làm thế nào để kiểm tra sự tồn tại của lỗ hổng đó trên máy tính. Sau đó định nghĩa OVAL đƣợc đƣa vào một máy quét OVAL tƣơng thích, máy này sẽ tiến hành kiểm tra theo quy định và báo cáo kết quả. Hiện nay định nghĩa lỗ hổng OVAL có sẵn cho Windows, Red Hat Linux và nền tảng Solaris. Máy quét OVAL-compliant có sẵn cho nền tảng Windows và Red Hat Linux. Các định nghĩa lỗ hổng OVAL đã đƣợc tạo ra từ năm 2002 và định nghĩa mới đang đƣợc đệ trình và xem xét trên một cơ sở hàng ngày. Đầu ra của một máy quét OVAL đƣợc chuyển đổi vào các mệnh đề Datalog nhƣ sau: vulExists(webServer,’CVE-2002-0392’, httpd). 2. Ảnh hƣởng của các lỗ hổng Ta có thể tìm thấy thông tin chi tiết về các lỗ hổng từ trang web của OVAL. Ví dụ OVAL mô tả lỗi OVAL296 là: Multiple unknown vulnerabilities in Linux kernel 2.4 and 2.6 allow local users to gain privileges or access kernel memory, ... Mô tả ngắn dƣới dạng không hình thức này nhấn mạnh ảnh hƣởng của các lỗ hổng nhƣ là: các lỗ hổng này có thể bị khai thác nhƣ thế nào và hậu quả nó gây ra là gì? Nếu một cơ sở dữ liệu máy có thể đọc đƣợc cung cấp thông tin về ảnh hƣởng của một lỗi nhƣ: bug 2961 is only locally exploitable, one could formally prove properties like if all local users are trusted, then the network is safe from remote attacker. Tuy nhiên OVAL không biểu diễn đƣợc thông tin về ảnh hƣởng của một lỗ hổng trong một định dạng mà máy tính có thể đọc đƣợc. Trong khi đó, cơ sở dữ liệu ICAT phân loại ảnh hƣởng của một lỗ hổng thành hai phần: phạm vi khai thác và hậu quả. Phạm vi khai thác: local, remote. Hậu quả: mất tính bảo mật (confidentiality loss), mất tính toàn vẹn (integrity loss), từ chối dịch vụ (denial of service) và leo thang đặc quyền (privilege escalation). Một khai thác (tấn công) địa phƣơng (local) yêu cầu kẻ tấn công đã có một vài truy cập địa phƣơng trên máy chủ. Một khai thác từ xa (remote) thì không yêu cầu nhƣ vậy. Hậu quả của hai cách tấn công phổ biến đó là leo thang đặc quyền và từ chối dịch vụ. Hiện tại tất cả các định nghĩa OVAL đã có mục ICAT tƣơng ứng (cả hai có thể đƣợc tham chiếu bởi CVEId). Nếu OVAL và ICAT đƣợc so khớp với nhau vào một cơ sở dữ liệu mà cung cấp đƣợc cả hai thông tin. Thông tin trong cơ sở dữ liệu ICAT đƣợc chuyển vào các mệnh đề Datalog nhƣ sau: vulProperty(’CVE-2004-00495’,localExploit,privEscalation). C. Kết hợp các thông tin cấu hình Hình 1. Cấu trúc của MulVAL Hình 1 minh họa kiến trúc của MulVAL với các nguồn dữ liệu của cơ sở dữ liệu đã phân tích. Máy quét MulVAL, chạy trên mỗi máy chủ cá nhân, cung cấp thông tin cấu hình máy. Smart Firewall [11] cung cấp cấu hình mạng về các bộ HACL. Cơ sở dữ liệu LDAP cung cấp thông tin ràng buộc chính. Các chính sách bảo mật đƣợc xác 660 NGHIÊN CỨU PHƢƠNG PHÁP HÌNH THỨC DỰA TRÊN LOGIC TRONG PHÂN TÍCH AN NINH MẠNG định bởi ngƣời quản trị hệ thống và ngƣời quản trị hệ thống cũng cần phải xác định ràng buộc dữ liệu nhƣ là một phần của chính sách bảo mật. Các nguồn dữ liệu bên trái đến từ các cơ quan báo cáo lỗ hổng (bug-reporting) của bên thứ ba. Họ cung cấp các đặc tả hình thức của các lỗi phần mềm, trong định nghĩa OVAL và từ các cơ sở dữ liệu NVD. Phần tiếp theo ta sẽ tìm hiểu làm thế nào từ các lỗ hổng đƣợc báo cáo bởi các máy quét có thể phát hiện đƣợc và sinh đồ thị tấn công có thể có trong một hệ thống mạng. IV. THUẬT TOÁN SINH ĐỒ THỊ TẤN CÔNG A. Đồ thị tấn công Đồ thị tấn công logic là một đồ thị có hƣớng và có thể đƣợc biểu diễn dƣới dạng một cây với các liên kết chéo có thể có giữa các nút. Hình 2 cho thấy biểu diễn dạng cây của đồ thị tấn công logic. Có hai loại nút trong đồ thị: nút dẫn xuất (derivation node) và nút sự kiện (fact node). Một nút dẫn xuất đƣợc biểu diễn là một hình chữ nhật và một nút sự kiện đƣợc biểu diễn bởi một vòng tròn. Ngoài ra còn có hai loại nút sự kiện: nút sự kiện nguyên thủy (biểu diễn bởi vòng tròn) và nút sự kiện dẫn xuất (biểu diễn bởi một vòng tròn với một số trong đó). Mỗi nút sự kiện trong một đồ thị logic đƣợc gán nhãn với một biểu diễn logic dƣới dạng một vị ngữ áp dụng cho đối số của nó. Nút gốc là mục tiêu của kẻ tấn công; ví dụ trong hình 2: execCode (attacker, Workstation, root), có nghĩa là "những kẻ tấn công có thể thực thi mã tùy ý như là người sử dụng root trên máy Workstation ". Mỗi nút dẫn xuất đƣợc gán nhãn với một luật tƣơng tác, các luật này đƣợc sử dụng cho bƣớc khai thác. Trong biểu diễn cây, tất cả các nút trong đƣợc bắt đầu với một nút đƣợc đánh số trong một dấu ngoặc (< >), tiếp theo là nhãn của nút. Một nút lá không có số và đƣợc đánh dấu bởi một cặp ngoặc vuông ([]). Các cạnh trong đồ thị biểu diễn mối quan hệ phụ thuộc. Một nút sự kiện phụ thuộc vào một hoặc nhiều nút dẫn xuất, mỗi trong số đó biểu diễn một ứng dụng của một luật tƣơng tác tạo ra sự kiện; Một nút dẫn xuất phụ thuộc vào một hay nhiều nút sự kiện, cùng với nhau chúng đáp ứng các điều kiện tiên quyết của luật (rule). Vì vậy, một đồ thị tấn công logic là một đồ thị có hƣớng hai phía. Các nút dẫn xuất phục vụ nhƣ là một trung gian giữa một sự kiện và "nguyên nhân" của nó, tức là cách thức “sự kiện” trở thành sự thật. Từ một sự kiện có thể có nhiều cách khác nhau để trở thành hiện thực, các nút dẫn xuất đƣợc dẫn từ một nút sự kiện tạo thành một phép tuyển (disjunction). Một nút dẫn xuất đại diện cho viêc áp dụng thành công một quy tắc tƣơng tác, tại đó tất cả các điều kiện tiên quyết của nó đƣợc thỏa mãn bởi các nút con của nó. Do đó các nút sự kiện dẫn từ một nút dẫn xuất hình thành một phép hội (conjunction). Trong ví dụ ở hình 2 nút <2> có hai nút dẫn xuất (cũng chính là nút con của nó): r2a và r2b (lƣu ý rằng biểu diễn cây sử dụng ký hiệu „||‟ để biểu thị rằng một nút sự kiện có nhiều hơn một dẫn xuất). Đó là, có hai cách để kẻ tấn công có thể sửa đổi tập tin trên fileserver. Cách thứ nhất là để có đƣợc quyền root trên máy chủ tập tin bằng cách khai thác lỗi CVE-2003-0252 trong chƣơng trình mountd và cách thứ hai là sử dụng chƣơng trình NFS Shell. Cả hai phụ thuộc vào các điều kiện mà kẻ tấn công đã đạt đƣợc một số quyền truy cập vào webserver (nút 5). Trong biểu diễn cây, có một liên kết chéo (==> <5>) trỏ đến nút 5 trong nhánh dẫn xuất thứ hai (<r2b>). Hình 2. Ví dụ đồ thị tấn công logic biểu diễn dƣới dạng cây Một đồ thị tấn công logic có thể đƣợc xem nhƣ là một đồ thị dẫn xuất cho một truy vấn Datalog thành công. Có thể có nhiều cách khác nhau để lấy đƣợc một sự kiện trong Datalog (tƣơng ứng với nhiều đƣờng để đột nhập vào một Nguyễn Thị Ánh Phƣợng, Nguyễn Trƣờng Thắng, Trần Mạnh Đông, Bùi Thị Thƣ 661 mạng), ở đây các nút dẫn xuất biểu diễn cho một bƣớc dẫn xuất có thể. Theo một cách logic, một nút dẫn xuất là một nút “and”, tại đó tất cả các nút con của nó là các đối số của một phép hội; một nút sự kiện dẫn xuất là một nút “or”, tại đó tất cả các nút con của nó biểu diễn những cách khác nhau để dẫn xuất chúng. Một nút sự kiện nguyên thủy là một nút lá trong đồ thị. Nó biểu diễn cho một phần của thông tin cấu hình. Sau đây là định nghĩa chính thức của đồ thị tấn công logic. Định nghĩa 1. (Nr, Np, Nd, E, L, G) là một đồ thị tấn công logic, trong đó Nr, Np và Nd là ba tập hợp của các nút rời nhau trong đồ thị, E ⊂ (Nr × (Np ∪ Nd)) ∪ (Nd × Nr), L là ánh xạ từ một nút tới nhãn của nó, và G ∈ Nd là mục tiêu của kẻ tấn công. Nr, Np và Nd tƣơng ứng là tập hợp nút dẫn xuất, các nút sự kiện nguyên thủy và các nút sự kiện dẫn xuất. Một sự kiện là nguyên thủy nếu nó đến từ đầu vào tới công cụ suy diễn MulVAL. Một sự kiện dẫn xuất là kết quả của việc áp dụng quy tắc tƣơng tác lặp đi lặp lại trên các sự kiện đầu vào. Các cạnh trong một đồ thị tấn công logic chỉ có thể đi từ một nút sự kiện dẫn xuất đến một nút dẫn xuất, hoặc từ một nút dẫn xuất đến một nút sự kiện. Các chức năng ghi nhãn ánh xạ một nút sự kiện tới sự kiện nó biểu diễn và một nút dẫn xuất tới các quy tắc đƣợc sử dụng cho dẫn xuất. Một cách hình thức, ngữ nghĩa của một đồ thị tấn công logic đƣợc định nghĩa nhƣ sau: Tính chất 1. Với mỗi nút dẫn xuất R, đặt P là nút cha của nút R và C là tập hợp các nút con của R. Khi đó (∧L(C)) ⇒ L(P) là một thể hiện của luật tƣơng tác L(R). Trong đó ∧ là toán tử hội. Định nghĩa 2. Truy vết mô phỏng tấn công. TraceStep : : = because (interactionRule, Fact, Conjunct) Fact : : = predicate(list of constant) Conjunct : : = [list of Fact] interactionRule là một chuỗi duy nhất liên kết với một luật tƣơng tác MulVAL. Một danh sách (list) đƣợc biểu diễn nhƣ một loạt các mục (item) cách nhau bởi dấu phẩy. Ngữ nghĩa của một bƣớc truy vết là:" Conjunct ⇒ Fact là một thể hiện của của interactionRule". Nó ghi lại lý do tại sao một mục tiêu là đúng (true) trong khi đánh giá Datalog. B. Thuật toán sinh đồ thị tấn công Đầu vào: Tập τ chứa tất cả các TraceStep, và 𝒢 là mục tiêu của kẻ tấn công Đầu ra: đồ thị tấn công logic (Nr, Np, Nd, E, L, 𝒢). 1. 2. Nr, Np, Nd, E, L ⟵ ∅ Vòng lặp với mỗi t ∈ τ { Đặt t = because(interactionRule, Fact, Conjunct) Tạo một nút dẫn xuất r Nr ⟵ Nr ∪ {r} L ⟵ L ∪ {r → interactionRule} 4. Tìm n ∈ Nd sao cho L(n) = Fact, 5. Nếu không tồn tại n { Tạo một nút fact mới n L ⟵ L ∪ {n → Fact} Nd ⟵ Nd ∪ {n} } 6. E ⟵ E ∪ {(r,n)} 7. Vòng lặp với mỗi fact f trong Conjunct { 8. Tìm nút fact c ∈ (Np, ∪ Nd) sao cho L(c) = f, 9. Nếu c không tồn tại { Tạo một nút fact mới c L ⟵ L ∪ {c → f } Nếu f là nguyên thủy { Np ⟵ Np ∪ {c}} Ngƣợc lại {Nd ⟵ Nd ∪ {c}} } 10. E ⟵ E ∪ {(r,c)} } } 3. Hình 3. Thuật toán sinh đồ thị tấn công logic Một đồ thị tấn công logic đƣợc xây dựng từ những thông tin có đƣợc ở các bƣớc truy vết. Thuật toán sinh đồ thị tấn công logic đƣợc mô tả trong Hình 3. Nói một cách đơn giản, mỗi thuật ngữ TraceStep trở thành một nút dẫn xuất 662 NGHIÊN CỨU PHƢƠNG PHÁP HÌNH THỨC DỰA TRÊN LOGIC TRONG PHÂN TÍCH AN NINH MẠNG trong đồ thị tấn công. Các trƣờng Fact trong các bƣớc truy vết trở thành các nút cha và các trƣờng Conjunct là các nút con của nó. Số lần lặp tối đa cho các vòng lặp trong tại dòng 7 giống nhƣ số lƣợng lớn nhất các điều kiện tiên đề trong số tất cả các quy tắc tƣơng tác, nó là hằng số cho một bộ quy tắc tƣơng tác cố định. Vì vậy, nếu các vòng lặp trên dòng 4 và dòng 8 là thời gian hằng số, thì các thuật toán xây dựng đồ thị cần có thời gian tuyến tính theo số lƣợng các bƣớc truy vết. C. Phân tích độ phức tạp Quá trình tính toán một đồ thị tấn công logic bao gồm hai giai đoạn. Giai đoạn đầu tiên tính mô phỏng dấu vết tấn công thông qua Datalog đánh giá trong XSB; giai đoạn thứ hai là xây dựng cấu trúc dữ liệu đồ thị tấn công bằng cách sử dụng thuật toán trong Hình 3. 1. Độ phức tạp của tính toán truy vết tấn công Mỗi thế hệ truy vết tấn công chỉ đƣa ra một hằng số thời gian cận trên cho mọi dẫn xuất Datalog thành công. Vì vậy, sự phức tạp của giai đoạn đầu tiên là giống nhƣ sự phức tạp của việc đánh giá các chƣơng trình MulVAL Datalog trong XSB. Sự phức tạp của việc đánh giá một chƣơng trình Datalog cố định đối với đầu vào kích thƣớc biến phụ thuộc vào các chi tiết cụ thể của chƣơng trình. Các tài liệu về XSB có một số thảo luận về làm thế nào để xác định sự phức tạp của việc đánh giá một chƣơng trình Datalog trong XSB [13]. Để dễ hiểu hơn, chúng ta hãy xem xét các quy tắc tƣơng tác Datalog sau trong MulVAL: netAccess(Attacker,H2,Protocol,Port):execCode(Attacker,H1,_User), hacl(H1,H2,Protocol,Port). Ý nghĩa của các quy tắc là: nếu một kẻ tấn công có thể trở thành một ngƣời dùng cục bộ trên máy H1 và mạng cho phép H1, H2 truy cập thông qua Protocol và Port , sau đó kẻ tấn công có thể truy cập H2 thông qua giao thức và cổng. Quy luật này cho thấy truy cập multi-hop trong một mạng: một kẻ tấn công có thể chiếm quyền, hoặc sử dụng một máy để làm bƣớc đệm cho việc thỏa hiệp các máy khác. Khi XSB đánh giá luật này đầu tiên nó sẽ tính toán tất cả các máy có thể có một kẻ tấn công thực thi mã tùy ý trên (các mục tiêu phụ đầu tiên) và sau đó nó sẽ tìm kiếm đầy đủ tất cả H1và H2 giữa các mạng có thể truy cập (các mục tiêu phụ thứ hai H2). Khi tất cả các bộ dữ liệu đƣợc tính toán, vị từ mục tiêu netAccess sẽ đƣợc tính bằng cách kết hợp các kết quả của hai mục tiêu phụ. Sử dụng mô hình so khớp mẫu trong XSB rất hiệu quả do việc sử dụng bảng băm và thử nghiệm. Vì vậy, chi phí thời gian bị chi phối bởi số lƣợng các bộ dữ liệu trung gian cần phải đƣợc tính toán. Việc tính toán trung gian có thể gọi quy tắc tƣơng tác khác. Trong bảng thực thi của XSB, một lời gọi sẽ tính toán tất cả các kết quả của mục tiêu đó, do đó có thể đƣợc tái sử dụng sau này. Định lý 1. Đánh giá các luật tương tác của MulVAL với bộ dữ liệu cấu hình biểu diễn N máy mất O(N 2) bước dẫn xuất. Nếu mô hình so khớp mẫu XSB là thời gian hằng số, từng bƣớc dẫn xuất cần có thời gian hằng số để kết thúc và thời gian chạy tổng thể để đánh giá MulVAL Datalog sẽ là bậc hai. Vì mỗi bƣớc truy vết đã đƣợc tạo ra bởi một bƣớc dẫn xuất trong đánh giá Datalog. Hệ quả 1. Số lượng của các term truy vết được tạo ra trong mô phỏng tấn công là O(N 2). 2. Độ phức tạp của việc xây dựng đồ thị Định lý 2. Đồ thị tấn công logic của mạng gồm N máy có kích thước lớn nhất là O(N 2). Chứng minh. Có sự tƣơng ứng một-một giữa các term TraceStep và nút dẫn xuất. Cho D là số lƣợng các bƣớc truy vết, sau đó có D nút dẫn xuất trong đồ thị. Nếu số lƣợng tối đa điều kiện tiên quyết cho một quy tắc tƣơng tác là m, số cạnh tối đa của đồ thị là mD và số lƣợng tối đa các nút sự kiện là mD + 1. Theo Hệ quả 1, chúng ta đã biết D là O (N2) và do đó là mD+1. Định lý 3. Các thuật toán xây dựng đồ thị trong Hình 3 mất độ phức tạp thời gian O(δN 2) để hoàn thành, trong đó N là số lượng host trong mạng và δ là chi phí thời gian tối đa cho việc tra cứu trong bảng tại dòng 4 và 8 của thuật toán. Chứng minh. Các vòng lặp trong thuật toán xây dựng đồ thị trong hình 3 đi qua tất cả các term TraceStep. Theo hệ quả 1, chúng ta biết có O (N2) term nhƣ vậy. Trong mỗi lần lặp, thuật toán tạo ra một nút dẫn xuất cho term TraceStep và tạo liên kết từ nút cha đến các nút con của nó. Mỗi hành động có chi phí thời gian là hằng số, ngoại trừ việc tìm kiếm trên bảng ở dòng 4 và 8. Do đó, thời gian cần thiết để xây dựng các cấu trúc dữ liệu đồ thị là bậc hai theo số các máy chủ, tạo ra một bảng tra cứu với thời gian hằng số để lƣu trữ các nút đồ thị. Để thực hiện, chỉ đơn giản là sử dụng cấu trúc dữ liệu Nguyễn Thị Ánh Phƣợng, Nguyễn Trƣờng Thắng, Trần Mạnh Đông, Bùi Thị Thƣ 663 "map" trong thƣ viện chuẩn của C++, trong đó thời gian tra cứu là log(n). Từ định lý 2, chúng ta biết rằng kích thƣớc bảng là O(N2). Vì vậy, δ = log (N2) và thời gian chạy để sinh ra đồ thị sẽ là O(N2log (N)). V. THỰC NGHIỆM Về mặt hình thức, phƣơng pháp tiếp cận dựa trên logic để sinh đồ thị tấn công cũng giống nhƣ bởi Sheyner đã sử dụng các phƣơng pháp ad-hoc để sinh đồ thị tấn công. Tuy nhiên việc sử dụng các kĩ thuật logic hợp lý sẽ ít gặp phải các lỗi hơn là so với các thuật toán tùy chỉnh thiết kế, đặc biệt là đối với các vấn đề phức tạp của phân tích an ninh. Một ngữ nghĩa logic rõ ràng cho các biểu đồ tấn công cũng làm cho việc phân tích sẽ dễ dàng hơn dựa trên các cấu trúc dữ liệu của đồ thị. Để xác định các lỗ hổng phần mềm ảnh hƣởng đến an ninh của một mạng xác định ta phải xem xét sự tƣơng tác giữa các thành phần mạng. Đối với một công cụ phân tích lỗ hổng để có đƣợc tính hữu dụng trong thực tế cần phải có hai tính năng quan trọng. Đầu tiên đó là mô hình sử dụng trong phân tích phải có khả năng tự động tích hợp các đặc tả hình thức của lỗ hổng từ bug-reporting. Thứ hai, các phân tích phải có khả năng mở rộng quy mô đến các mạng với hàng ngàn máy. MulVAL đáp ứng đƣợc cả hai điều kiện trên. Khi sử dụng công cụ Sheyner để phân tích an ninh của một mạng thực tế kết quả cho thấy rằng thời gian sinh đồ thị và kích thƣớc đồ thị là rất lớn. Ví dụ: một mạng lƣới gồm 10 máy chủ với 5 lỗ hổng trên máy chủ mất khoảng 15 phút để tạo ra đồ thị và kết quả là trong một đồ thị gồm 10 triệu cạnh. Trong đồ thị tấn công của Sheyner mỗi nút là tập hợp các biến Boolean mã hóa toàn bộ trạng thái mạng ở giai đoạn tấn công. Trong khi số lƣợng các biến là đa thức theo kích thƣớc của mạng, số lƣợng có thể có của các trạng thái là số mũ. Do vậy sử dụng MulVAL (Multihost, multistage Vulnerability Analysis), một framework cho việc mô hình hóa sự tƣơng tác của các lỗi phần mềm với hệ thống và các cấu hình mạng để phân tích ảnh hƣởng của các lỗ hổng tồn tại trong hệ thống mạng sẽ cho kết quả tốt hơn. MulVAL sử dụng ngôn ngữ mô hình hóa Datalog. Thông tin về lỗi cơ sở dữ liệu đƣợc cung cấp bởi cộng đồng bug-reporting. Thông tin cấu hình của từng máy, mạng và các thông tin liên quan khác tất cả đều đƣợc mã hóa nhƣ là một sự kiện của Datalog. Đây là một Framework đƣợc thực hiện trên nền tảng Red Hat Linux. Kết quả thử nghiệm sử dụng MulVAL để phân tích an ninh trên một mạng thực tế: Nhóm thực nghiệm phân tích an ninh trên máy chủ mạng của Viện Hàn lâm Khoa học và Công nghệ Việt Nam [16]. Các bƣớc thực hiện nhƣ sau: Bƣớc 1: Sử dụng máy quét OVAL để quét tìm lỗ hổng trong mạng và tạo file đầu vào cho MulVAL. - Thời gian quét: 13 phút - Tổng số lỗ hổng phát hiện: 20 Hình sau minh họa một số lỗ hổng phát hiện đƣợc: Hình 4. Danh sách các lỗ hổng 664 NGHIÊN CỨU PHƢƠNG PHÁP HÌNH THỨC DỰA TRÊN LOGIC TRONG PHÂN TÍCH AN NINH MẠNG File đầu ra của máy quét đƣợc xuất ra dƣới định dạng XML chứa thông tin các lỗi phát hiện đƣợc. Bƣớc 2: Tạo file đầu vào cho MulVAL Chuyển File kết quả của máy quét từ định dạng XML sang các mệnh đề Datalog: inCompetent('www.vast.ac.vn_victim'). hasAccount('www.vast.ac.vn_victim', 'www.vast.ac.vn', user). attackerLocated(internet). attackGoal(execCode('www.vast.ac.vn', _)). hacl(_,_,_,_). Bƣớc 3: Chạy thử nghiệm trên MulVAL để xem ảnh hƣởng của các lỗi quét đƣợc có tạo nên 1 cuộc tấn công không? Kết quả với các lỗi mà máy quét phát hiện ra trên hệ thống mạng chƣa đủ để tạo nên một cuộc tấn công tiềm ẩn. Do giới hạn nguồn tài nguyên để thử nghiệm thực tế với một mạng có thể bị tấn công nên nhóm đã chạy trên file ví dụ đầu vào của MulVAL. Kết quả thông báo sinh đƣợc đồ thị tấn công trong file AttackGraph.pdf (Hình 5). Hình 5. Kết quả chạy file ví dụ mẫu Hình 6 là đồ thị tấn công logic. Hình 6. Đồ thị tấn công logic Dƣới đây là biểu đồ so sánh thời gian chạy của CPU khi sinh đồ thị tấn công của hai công cụ phân tích an ninh mạng tự động là MulVAL và Sheyner. Kết quả cho thấy thời gian chạy của MulVAL nhanh hơn rất nhiều so với Sheyner. Nguyễn Thị Ánh Phƣợng, Nguyễn Trƣờng Thắng, Trần Mạnh Đông, Bùi Thị Thƣ 665 Hình 7. Biểu đồ so sánh thời gian chạy của CPU khi sinh đồ thị tấn công của hai công cụ MulVAL và Sheyner VI. KẾT LUẬN Trong bài báo này chúng tôi đã trình bày một phƣơng pháp tiếp cận hình thức dựa trên logic trong phân tích an ninh an toàn mạng. Phƣơng pháp này có khả năng ứng dụng và thực tế nhằm đảm bảo an ninh không gian mạng cho đất nƣớc ta hiện nay. Đó là việc sử dụng lập trình logic và các mệnh đề Datalog để mô hình hóa thông tin cấu hình mạng, cấu hình máy chủ và việc đặc tả thông tin lỗ hổng mạng. Tiếp đó là tìm hiểu thuật toán sinh đồ thị tấn công, chạy thực nghiệm trên một mạng thực tế để phát hiện ra các lỗ hổng mạng và sinh đồ thị tấn công có thể có. Hƣớng nghiên cứu tiếp theo là phối hợp cùng các nhà quản trị mạng trong việc nghiên cứu mô hình hóa hình thức các chính sách bảo mật, các tập luật tƣơng tác do các nhà quản trị mạng đặt ra, để bổ sung thêm vào các bộ luật suy diễn trong MulVAL nhằm giúp cho việc quản lý an ninh mạng tốt hơn, hiệu quả hơn. TÀI LIỆU THAM KHẢO [1] O. Udrea, C. Lumezanu, and J. S. Foster, “Rule-based static analysis of network protocol implementations,” in Proceedings of the 15th Conference on USENIX Security Symposium – Volume 15, ser. USENIX-SS‟06. Berkeley, CA, USA: USENIX Association, 2006. [Online]. Available: http://dl.acm.org/citation.cfm?id=1267336.1267350. [2] C. He and J. C. Mitchell, “Analysis of the 802.11i 4-way handshake,” in Proceedings of the 3rd ACM Workshop on Wireless Security, ser. WiSe ‟04. New York, NY, USA: ACM, 2004, pp. 43–50. [Online]. Available: http://doi.acm.org/10.1145/1023646.1023655. [3] N. Jovanovic, C. Kruegel, and E. Kirda, “Pixy: A static analysis tool for detecting web application vulnerabilities (short paper),” in Proceedings of the 2006 IEEE Symposium on Security and Privacy, ser. SP ‟06. Washington, DC, USA: IEEE Computer Society, 2006, pp. 258–263. [Online]. Available: http://dx.doi.org/10.1109/SP.2006.29 [4] V. B. Livshits and M. S. Lam, “Finding security vulnerabilities in java applications with static analysis,” in Proceedings of the 14th Conference on USENIX Security Symposium - Volume 14, ser. SSYM‟05. Berkeley, CA, USA: USENIX Association, 2005, pp.18-18.[Online].Available: http://dl.acm.org/citation.cfm?id=1251398.1251416. [5] D. Farmer and E. Spafford. The COPS security checker system. In Proceedings of the Summer Usenix Conference, 1990. [6] R. Deraison. Nessus Scanner. http://www .nessus.org. [7] Ou, X., Appel, A. W.: A logic-programming approach to network security analysis.Phd, Princeton University Princeton (2005). [8] W. F. Clocksin and C.S. Mellish. Programming in Prolog. Springer-Verlag New York, Inc., 1987. [9] John DeTreville. Binder, a logic-based security language. In Proceedings of the 2002 IEEE Symposium on Security and Privacy, page 105. IEEE Computer Society, 2002. [10] Ninghui Li, Benjamin N. Grosof, and Joan Feigenbaum. Delegation Logic: A logic-based approach to distributed authorization. ACM Transaction on Information and System Security (TISSEC), February 2003. [11] James Burns, Aileen Cheng, Proveen Gurung, David Martin, Jr., S. Raj Rajagopalan, Prasad Rao, and Alathurai V. Surendran. Automatic management of network security policy. In DARPA Information Survivability Conference and Exposition (DISCEX II‟01), volume 2, Anaheim, California, June 2001. [12] D. S. Warren. Programming in Tabled Prolog. Department of Computer Science SUNY @ Stony Brook, July 1999. [13] D. S. Warren. On the Complexity of Tabled Datalog Programs. Department of Computer Science, SUNY @ Stony Brook, Stony Brook, NY 11794-4400, U.S.A., July 1999. 666 NGHIÊN CỨU PHƢƠNG PHÁP HÌNH THỨC DỰA TRÊN LOGIC TRONG PHÂN TÍCH AN NINH MẠNG [14] Xinming Ou, Sudhakar Govindavajhala, and Andrew W. Appel. Mulval: A logic-based network security analyzer. In 14th USENIX Security Symposium, Baltimore, MD, USA, August 2005. [15] http://vast.ac.vn. RESEARCH FORMAL METHOD BASED ON LOGIC IN NETWORK SECURITY ANALYSIS Nguyen Thi Anh Phuong, Nguyen Truong Thang, Tran Manh Dong, Bui Thi Thu ABSTRACT: Nowadays, with the continuous development of the Internet and the fields of information technology, hardware devices, software applications and Internet services have become very popular making the economy Of countries around the world growing. However, along with the rapid development there is always potential risks, causing the financial loss, reputation... for organizations or individuals to participate in the service. Therefore, the problem of ensuring safety and security of information in the process of transmitting information in the network environment is always a hot issue in research and practical application. Especially with an enterprise network, the problem of ensuring network security and information security is becoming increasingly difficult. Now with the spread of software vulnerabilities, system administrators are facing many challenges and difficulties in securing cybersecurity. This paper will present an approach of logic-based methodology in network security analysis to identify existing vulnerabilities in the system and possible attacks on the system. It helps security professionals and system administrators better manage the configuration of an enterprise network and can control the risks of network security.