Luận văn: Kỹ thuật kiểm thử an ninh bảo mật bằng Fuzzing phân tán - Lê Đức Anh

Luận văn phân tích kỹ thuật kiểm thử an ninh bảo mật bằng Fuzzing phân tán, một phương pháp hiệu quả giúp tự động phát hiện lỗ hổng phần mềm.

Trường đại học

Đại học Bách Khoa Hà Nội

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2013

75
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Khái Niệm Cơ Bản Về Fuzzing Phân Tán

Fuzzing phân tán là một kỹ thuật kiểm thử bảo mật hiệu quả nhằm phát hiện các lỗ hỗng trong phần mềm thông qua việc phân phối tác vụ kiểm thử trên nhiều máy tính. Phương pháp này kết hợp các dữ liệu đầu vào ngẫu nhiên hoặc được xây dựng một cách có mục đích để tìm kiếm những điểm yếu trong ứng dụng. Fuzzing truyền thống thực hiện trên một máy duy nhất, tuy nhiên với fuzzing phân tán, việc kiểm thử được thực hiện song song trên nhiều agent (máy tính khách), giúp tăng tốc độ phát hiện lỗi đáng kể. Kỹ thuật này đặc biệt hữu ích cho các ứng dụng phức tạp như trình duyệt web, hệ điều hành và các phần mềm quan trọng khác. Trong bối cảnh an ninh ứng dụng hiện nay, fuzzing phân tán đã trở thành một công cụ không thể thiếu trong quy trình assurance chất lượng phần mềm.

1.1. Định Nghĩa Và Nguyên Lý Hoạt Động

Fuzzing là quá trình tạo dữ liệu đầu vào bất thường hoặc không mong đợi để kiểm tra phản ứng của chương trình. Phương pháp này dựa trên nguyên tắc "fuzz testing" - gửi những dữ liệu biến dạo, không hợp lệ hoặc ngẫu nhiên đến ứng dụng mục tiêu. Khi fuzzing phân tán, các máy tính khác nhau sẽ sinh ra và gửi các payload đầu vào đồng thời, tăng cơ hội phát hiện lỗ hỗng trong thời gian ngắn hơn.

1.2. Tầm Quan Trọng Trong Bảo Mật Hiện Đại

Theo thống kê, hàng triệu máy tính bị nhiễm malware do các lỗ hỗng bảo mật không được phát hiện kịp thời. Fuzzing phân tán giúp các nhà phát triển xác định và vá lỗi sớm hơn, giảm thiểu rủi ro bảo mật. Đây là giải pháp đảm bảo chất lượng phần mềm hiệu quả, đặc biệt quan trọng cho các ứng dụng có tính bảo mật cao.

II. Kiến Trúc Và Thành Phần Hệ Thống Fuzzing Phân Tán

Một hệ thống fuzzing phân tán điển hình bao gồm ba thành phần chính: máy chủ điều phối (coordinator), các agent phân tán (distributed agents), và hệ thống lưu trữ kết quả. Máy chủ điều phối chịu trách nhiệm quản lý quy trình kiểm thử, phân phối các tác vụ fuzzing cho các agent, và tập hợp kết quả từ các máy khách. Các agent là những máy tính độc lập chạy các trường hợp kiểm thử được giao cho chúng. Mỗi agent sinh ra dữ liệu fuzzing dựa trên văn phạm zBNF hoặc các quy tắc định trước, sau đó theo dõi ứng dụng mục tiêu để phát hiện crash hoặc lỗi bất thường. Fuzzing phân tán cho phép kiểm thử song song, tối ưu hóa tài nguyên máy tính và giảm thời gian phát hiện lỗi từ hàng ngày xuống còn hàng giờ.

2.1. Vai Trò Của Máy Chủ Điều Phối

Máy chủ điều phối trong hệ thống fuzzing phân tán đóng vai trò quản lý tập trung. Nó chịu trách nhiệm khởi tạo quy trình kiểm thử, phân chia tác vụ, thu thập dữ liệu từ các agent, và phân tích hiệu suất. Máy chủ cũng quản lý các tham số fuzzing, điều chỉnh chiến lược kiểm thử dựa trên kết quả thực tế.

2.2. Chức Năng Của Các Agent Phân Tán

Các agent là những client độc lập thực hiện công việc kiểm thử nặng. Mỗi agent nhận tác vụ từ máy chủ, tạo dữ liệu đầu vào fuzzing, chạy ứng dụng mục tiêu với những dữ liệu này, theo dõi lỗi, và báo cáo kết quả. Với nhiều agent chạy đồng thời, fuzzing phân tán tăng khả năng phát hiện lỗi hỗng một cách hiệu quả.

III. Phương Pháp Sinh Dữ Liệu Fuzzing Hiệu Quả

Sinh dữ liệu fuzzing hiệu quả là chìa khóa để fuzzing phân tán thành công. Có hai phương pháp chính: fuzzing ngẫu nhiên (random fuzzing) và fuzzing dựa trên văn phạm (grammar-based fuzzing). Fuzzing ngẫu nhiên tạo dữ liệu hoàn toàn ngẫu nhiên, đơn giản nhưng ít có khả năng đi sâu vào các đường chạy phức tạp. Fuzzing dựa trên văn phạm sử dụng quy tắc zBNF (Backus-Naur Form) để sinh dữ liệu tuân theo định dạng nhất định, tăng khả năng kích hoạt lỗi. Ví dụ, khi fuzzing trình duyệt web, dữ liệu HTML/DOM được sinh theo văn phạm HTML chuẩn nhưng có những sửa đổi nhỏ gây lỗi. Cách tiếp cận này giúp fuzzing phân tán phát hiện được nhiều loại lỗi hơn, từ lỗi tràn bộ đệm đến lỗi xử lý bộ nhớ.

3.1. Fuzzing Ngẫu Nhiên Và Ưu Điểm

Fuzzing ngẫu nhiên tạo dữ liệu hoàn toàn bất ngờ mà không theo quy tắc nào. Phương pháp này đơn giản, dễ triển khai và có thể phát hiện các lỗi không mong đợi. Tuy nhiên, hiệu suất thấp vì hầu hết dữ liệu tạo ra bị từ chối bởi trình phân tích cơ bản của ứng dụng.

3.2. Fuzzing Dựa Trên Văn Phạm zBNF

Văn phạm zBNF định nghĩa quy tắc cú pháp cho dữ liệu hợp lệ. Fuzzer sinh dữ liệu theo văn phạm này nhưng có những biến dạo nhỏ. Điều này cho phép dữ liệu vượt qua kiểm tra cơ bản và kích hoạt lỗi sâu hơn. Fuzzing phân tán với zBNF tăng hiệu suất phát hiện lỗi đáng kể so với fuzzing ngẫu nhiên.

IV. Ứng Dụng Thực Tiễn Và Kết Quả Kiểm Thử

Fuzzing phân tán đã được áp dụng thành công trong kiểm thử các ứng dụng quan trọng, đặc biệt là trình duyệt web như Chrome, Firefox, và Edge. Các nhà nghiên cứu và công ty bảo mật sử dụng kỹ thuật này để phát hiện hàng trăm lỗi hỗng mỗi năm trước khi chúng bị lợi dụng. Kết quả kiểm thử cho thấy fuzzing phân tán có thể phát hiện lỗi nhanh gấp 10-20 lần so với fuzzing cục bộ. Các lỗi phát hiện được bao gồm lỗi tràn bộ đệm (buffer overflow), lỗi tràn số nguyên (integer overflow), và các lỗi định dạng chuỗi (format string). Với mô hình này, thời gian từ khi phát hiện lỗi đến khi được vá cũng rút ngắn đáng kể, cải thiện vị trí bảo mật tổng thể của ứng dụng.

4.1. Trường Hợp Thành Công Với Trình Duyệt

Các nhà phát triển trình duyệt đã sử dụng fuzzing phân tán để phát hiện hàng ngàn lỗi bảo mật. Bằng cách triển khai hệ thống fuzzing trên hàng trăm máy tính, họ có thể kiểm thử các tình huống phức tạp mà fuzzing cục bộ không thể phát hiện. Các lỗi liên quan xử lý bộ nhớ, đặc biệt nguy hiểm, được phát hiện sớm hơn nhờ fuzzing phân tán.

4.2. Đánh Giá Hiệu Suất Và Khuyến Nghị

Thí nghiệm cho thấy hiệu suất fuzzing phân tán tăng tuyến tính theo số lượng agent tham gia, từ 1 đến 32 máy. Mỗi máy agent bổ sung tăng tốc độ phát hiện lỗi khoảng 90-95%. Khuyến nghị là triển khai hệ thống với ít nhất 8-16 agent để đạt hiệu suất tối ưu và phát hiện lỗi trong thời gian hợp lý.

28/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG I: CƠ S6 LY THUYET CHUNG 14 1. Tổng quan vẻ lỗ hỗng phần mềm 15 111. Lỗ hỗng trànbộ đệm 18 112. Lỗ hông trànsô nguyên 19 113.

L6 hong format string 20 1. Kiểm thử bảo mật 22 1. Kếtchương 25 CHƯƠNG II: CƠ SỞ CỦA KỸ THUẬT FUZZING 26 2. Lịch sử của Fuzzing 28 23.

Mô hinh zing cô điển 29 2.4, Phân loại phương pháp Fuzzing 31 2.5, Phan loai Fuzzer 33 3. FuzZer cục bộ (Loeal ñtzZer) 33 2. Fuzzer tir xa (Remote fizzer) 34 2. Fuzzer trong bé nihé (In-memory fuzzer) 35 2.

Cae bude etia Fuzzing 37 2. Hanché cia Fuzzing 38 2. Cac van dé trong fuzzing 39 2. Sinh đữ liệu 39 Học viên thee hién: Lé Dire Anh Lép LIBMTTT Khéa hoc 2011B 3 B._ Hướng phát triển của đề tài 98 THAM KHẢO 99 Học viên thee hién: Lé Dire Anh Lép LIBMTTT Khéa hoc 2011B 5 B._ Hướng phát triển của đề tài 98 THAM KHẢO 99 Học viên thee hién: Lé Dire Anh Lép LIBMTTT Khéa hoc 2011B 5 Hình 42:Mô hình Fuzzing phân tán hay Rươing GNBEEEsseagsussassasraseagsssaazsaadfỗ Hình 43 Mã các Exception và ý nghĩa.

sờ Hình 44 Biên dịch đữ liệu zBNE. Hình 45: Dũ liệu mẫu được sinh ra từ đặc tá zBNE, Hình 46: Trang Web hiển thị quá trình Fuzzing. Hình 47: Qua trinh fixzzing6 phia agent Hình 48 Hiển thị cac 16i da fuzz duge trong Crash Bench Hình 49: Van pham ding zBNF cho fuzz cac tag. Hình 50: Cac trinh duyét va 16i duoc Iya chon dé fuzz.

Hình ŠI Cay DOM Hình 52: 'Văn phạm cho thí nghiệm đo hiệu suấi Hình 53: ö liệu thu được từ thí nghiệm đo hiệu suất, Hình 54: Sự biến đổi hiệu suất theo sô máy tham gia. Học viên thực hiện: Lê Đức -inh Lớp ITIBMTTT Khóa học 2011B 7 2. Phân tích khả năng khai thác của lỗi 4I 2. Tăng hiệu suât với ñtzzing phân tán 42 29.

Kếtchương 43 CHƯƠNG III: XÂY DỰNG HỆ THÔNG FUZZING TRÌNH DUYỆT 44 3. Trinh duyệt hoạt động như thế nào? 46 3. Các thành phần của trình duyệt 48 3. Trình duyệt: Đích ngắm sô một của tôi phạm mạng, 50 3.

Bai toan Fuzzing trinh duyét 52 3. Mô hình Fuzzing có thể đơn giản hơn, mang tỉnh phân tán sẵn. Xuất hiện các lỗi liên quan tới xử lý bộ nhớ nguy hiểm khác 55 3. Dữ liệu Fuzzing khả đa dang 57 3.

Ý tưởng cải tiền cơ chế sinh dữ liệu Fuzzing 60 3. Để xuất phương pháp xây dựng hệ thông Fuzzing trình đuyệt 61 3. Thiết kể ngônngữ mô tả dữ liệu Rtzzing 61 3. Thiết kế chức năng hệ thong T5 3.

Thiết kể kiến trúc hệ thông T6 3. Một số hình ảnh về hệ thông 85 3. Kết chương 87 CHUONG IV: THU NGHIEM VA DANH GIA 88 4. Các tiêu chí đánh giá 89 42.

Tính sử dụng 89 4. Khả năng phát hiện lỗ hông 9 4. Với các lỗ hỗng đã biết 91 4. Với các lỗ hồng chưa biết 93 4⁄4.

Phương pháp tiền hành 94 4. Đánhgiá 96 KẾT LUẬN 97 A. _ Kết luận 97 Học viên thực hiện: Lê Đức -Anh Lớp 1IBMTTT Khóa học 2011B 4 MO DAU A. Tình hình an ninh ứng dụng hiện nay B.

Giải pháp đảm bảo chất lượng phần mềm C. Nhiệm vụ của đề tải Học viên thực hiện: Lê Đức -inh Lớp ITIBMTTT Khóa học 2011B MO DAU A. Tình hình an ninh ứng dụng hiện nay B. Giải pháp đảm bảo chất lượng phần mềm C.

Nhiệm vụ của đề tải Học viên thực hiện: Lê Đức -inh Lớp ITIBMTTT Khóa học 2011B thang 4/2010 vita roi, Microsoft tung ra 10 ban cap nhật an minh, quả nửa trong số đỏ là các lỗi cực kỉ nguy hiểm Trước đó trong năm 2009, hảng triệu máy tính chạy hệ điểu hành Windows XP trên toàn thể giới bị nhiễm sâu conficker. Lỗ hồng bảo mật bị khai thác ở đây phát sinh từ trong Windows RPC va Microsoft bit lai bing ban va khan cap mang ma s6 MS08-67 Sâu Conficker rất phức tap, nguy hiểm vả đủ khả năng tao mang may tinh ma đề tân công hạ gục bắt kỳ hệ thống máy tính nào chưa được vá lỗ hỏng. Theo thông kê của trung tâm an ninh mạng Đkis, đã có rất nhiều biển thể của Conficker xuất hiện. Quốc là nước có số lượng máy tính bị nhiềm nhiều nhất.

mvc nanan HONEA {RRERUBUCOF KOREA mvewnitue amino ". #hdLayjAwy 5409I80xAU sans *UNC0S[ATSU5 Hình 1: Thống kê sâu Conficker (Nguén: Bkis) Trong năm 2010, cả thế giới xôn xao vẻ sâu Stuxnet, vũ khí mạng đầu tiên được biết đến. Stuxnet đã được xem là một trong những virus máy tính tỉnh vi nhất từng được tạo ra, đã lây nhiễm vào hàng trăm ngản hệ thông máy tỉnh nhờ khai thác 20 lỗ hồng xếp loai “zero-day”, von có mặt trong mọi phiền bản hệ điều hành Windows khi đó. Học viên thực hiện: Lê Đức -inh Lớp ITIBMTTT Khóa học 2011B 10 thang 4/2010 vita roi, Microsoft tung ra 10 ban cap nhật an minh, quả nửa trong số đỏ là các lỗi cực kỉ nguy hiểm Trước đó trong năm 2009, hảng triệu máy tính chạy hệ điểu hành Windows XP trên toàn thể giới bị nhiễm sâu conficker.

Lỗ hồng bảo mật bị khai thác ở đây phát sinh từ trong Windows RPC va Microsoft bit lai bing ban va khan cap mang ma s6 MS08-67 Sâu Conficker rất phức tap, nguy hiểm vả đủ khả năng tao mang may tinh ma đề tân công hạ gục bắt kỳ hệ thống máy tính nào chưa được vá lỗ hỏng. Theo thông kê của trung tâm an ninh mạng Đkis, đã có rất nhiều biển thể của Conficker xuất hiện. Quốc là nước có số lượng máy tính bị nhiềm nhiều nhất. mvc nanan HONEA {RRERUBUCOF KOREA mvewnitue amino ".

#hdLayjAwy 5409I80xAU sans *UNC0S[ATSU5 Hình 1: Thống kê sâu Conficker (Nguén: Bkis) Trong năm 2010, cả thế giới xôn xao vẻ sâu Stuxnet, vũ khí mạng đầu tiên được biết đến. Stuxnet đã được xem là một trong những virus máy tính tỉnh vi nhất từng được tạo ra, đã lây nhiễm vào hàng trăm ngản hệ thông máy tỉnh nhờ khai thác 20 lỗ hồng xếp loai “zero-day”, von có mặt trong mọi phiền bản hệ điều hành Windows khi đó. Học viên thực hiện: Lê Đức -inh Lớp ITIBMTTT Khóa học 2011B 10 DANH MỤC CÁC HÌNH VẼ Hình l: Thông kê sâu Confieker (Nguồn: Bkis). Hình2: Thông kê về vùng ảnh hưởng của Sttnet (Nguon: Threatpost.com) Hình 3: Thông kê về sô lỗ hồng trong 25 năm (nguồn: SoureeFire).

" Hình 4: Thông kê về phần mềm có nhiều lỗ hỏng nguy hiểm ong 25 năm (nguồn: SourceFire). — LO, Hình 5: Thông kê về loại của lỗ hỏng nguy hiểm tora 25 nam gun: Seo.) „16 Hình 6: Các hàm Format — BL Hình 7: Các tham so format. ne _ - seven „21 Hình 8: Quét các dịch vụ đang chạy với v Nmạp 5 23 Hình 9: Quet 16 héng Website với Acunetix. sina — Hình 10: Kiểm thử đâm xuyên với Metasploit Hình 11: Phần mễm Internet Explorer khi gặp lỗi xử lý.

Hình 12: GS Miller = eee cena Hình 13: Mô hình Fuzzing cô điể Hinh 14: Mô hình Fuzzing thu gọn. Hình 15: Lưu đỗ hoạt động của quá trình Fuzzing. Hình 16: Fuzzing với cơ chế phản hội từ debugger Hình 17: Các mức của lỗ hồng phần mềm. Hình 18: Một mô hình zing phân tản Hình 19: Thông kê vẻ thí phần các trinh duyét vào tháng 10/2012 (Nguồn: Wiamada) Hình 20: Một trang HTML đơn giản.

Hình 21: Trang HTML được hiền thị trên trình duyệt Tternet kuugier 10. Hinh 22: Cac thanh phan co ban trong trinh duyét. : Hình 23: Luéng thực thí của một Rendering Engine đơngiản Hình 24: Số lỗ hồng trình duyệt trong giai đoạn 2007-2011. Hình 25: Tự động tải lai trang Web qua ma Javascript Hinh 26: M6 hinh fuzzing khong can debugger.

Hình 27: M6 hinh fwzzing khong có debugger & server riêng Hình 2§: Màn hình của Cross_Fuzz khi hoạt động Hình 29: File HTML demo lỗi CVE-2012-4792 Hình 30: Sinh dữ liệu Fuzzing voi Python. Hình 31: Các bước hoạt động trong LangFuzz. Hình 32: Các bước trong xây dựng hệ thông, Hình 33: Dẫn hướng biên dịch trong zBNE: Hình 34: Ví dụ sử dụng zBNE. - Hình 35: Luật sinh dữ liệu chưa.‘duge chuẩn hóa Hình 36: Các luật của dạng chuẩn Chomsky.

Hình 37: Các bước của quả trình biên dịch Hình 38: FSM của quá trình Tokenizing dit ligu ZBNF Hình 39: Lưu độ lưu kết quả biên địch. Hinh 40: Luu do> Bit thuật không đệ quy sinhdit liệu fing Hình 41: Biểu đồ phân rã chức năng. 5 Hoe vién thực hiện: Lé Dire Anh Lop 1IBMTTT Khoa hoc 2011B 6 MO DAU A. Tình hình an ninh ứng dụng hiện nay B.

Giải pháp đảm bảo chất lượng phần mềm C. Nhiệm vụ của đề tải Học viên thực hiện: Lê Đức -inh Lớp ITIBMTTT Khóa học 2011B Hình 42:Mô hình Fuzzing phân tán hay Rươing GNBEEEsseagsussassasraseagsssaazsaadfỗ Hình 43 Mã các Exception và ý nghĩa. sờ Hình 44 Biên dịch đữ liệu zBNE. Hình 45: Dũ liệu mẫu được sinh ra từ đặc tá zBNE, Hình 46: Trang Web hiển thị quá trình Fuzzing.

Hình 47: Qua trinh fixzzing6 phia agent Hình 48 Hiển thị cac 16i da fuzz duge trong Crash Bench Hình 49: Van pham ding zBNF cho fuzz cac tag. Hình 50: Cac trinh duyét va 16i duoc Iya chon dé fuzz. Hình ŠI Cay DOM Hình 52: 'Văn phạm cho thí nghiệm đo hiệu suấi Hình 53: ö liệu thu được từ thí nghiệm đo hiệu suất, Hình 54: Sự biến đổi hiệu suất theo sô máy tham gia. Học viên thực hiện: Lê Đức -inh Lớp ITIBMTTT Khóa học 2011B 7 2.

Phân tích khả năng khai thác của lỗi 4I 2. Tăng hiệu suât với ñtzzing phân tán 42 29. Kếtchương 43 CHƯƠNG III: XÂY DỰNG HỆ THÔNG FUZZING TRÌNH DUYỆT 44 3. Trinh duyệt hoạt động như thế nào? 46 3.

Các thành phần của trình duyệt 48 3. Trình duyệt: Đích ngắm sô một của tôi phạm mạng, 50 3. Bai toan Fuzzing trinh duyét 52 3. Mô hình Fuzzing có thể đơn giản hơn, mang tỉnh phân tán sẵn.

Xuất hiện các lỗi liên quan tới xử lý bộ nhớ nguy hiểm khác 55 3. Dữ liệu Fuzzing khả đa dang 57 3. Ý tưởng cải tiền cơ chế sinh dữ liệu Fuzzing 60 3. Để xuất phương pháp xây dựng hệ thông Fuzzing trình đuyệt 61 3.

Thiết kể ngônngữ mô tả dữ liệu Rtzzing 61 3. Thiết kế chức năng hệ thong T5 3. Thiết kể kiến trúc hệ thông T6 3. Một số hình ảnh về hệ thông 85 3.

Kết chương 87 CHUONG IV: THU NGHIEM VA DANH GIA 88 4. Các tiêu chí đánh giá 89 42. Tính sử dụng 89 4. Khả năng phát hiện lỗ hông 9 4.

Với các lỗ hỗng đã biết 91 4. Với các lỗ hồng chưa biết 93 4⁄4. Phương pháp tiền hành 94 4. Đánhgiá 96 KẾT LUẬN 97 A.

_ Kết luận 97 Học viên thực hiện: Lê Đức -Anh Lớp 1IBMTTT Khóa học 2011B 4 2. Phân tích khả năng khai thác của lỗi 4I 2. Tăng hiệu suât với ñtzzing phân tán 42 29.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ