Phát hiện lỗ hổng trên ứng dụng web sử dụng kỹ thuật phân tích động và thuật giải di truyền

on .

Phát hiện lỗ hổng trên ứng dụng web sử dụng kỹ thuật phân tích động và thuật giải di truyền

Ngô Khánh Khoa - CH1802047

Các trang web hiện nay tồn tại rất nhiều đầu vào để tương tác với ứng dụng và vô vàn các logic xử lý ở mỗi đầu vào. Do đó, việc kiểm tra và xử lý toàn bộ đầu vào tốn nhiều thời gian và công sức. Thông thường, việc kiểm tra đầu vào này sẽ được kiểm tra bởi các kỹ sư an ninh mạng, đánh giá an toàn thông tin. Công việc của họ là truy cập tất cả đầu vào có thể, thử nghiệm nhằm tìm kiếm điểm yếu của ứng dụng, từ đó thông báo cho người quản trị web có thể khắc phục lỗ hổng trước khi nó bị khai thác bởi kẻ xấu. Tuy nhiên, cách làm này phụ thuộc vào chuyên gia đánh giá và tốn nhiều thời gian. Phương pháp tiết kiệm hơn là dùng các công cụ rà quét tự động. Nhiệm vụ của chúng là từ các đầu vào có thể có, truyền các mã khai thác vào và kiểm tra phản hồi ứng dụng. Nếu phát hiện lỗ hổng, công cụ sẽ ghi nhận kết và và gửi cho người dùng công cụ để phân tích và vá kịp thời lỗ hổng.

Tuy rằng công cụ kiểm thử tự động có thể chạy được với gần như toàn bộ các ứng dụng web và tương đối dễ sử dụng, nhưng nó cũng có một số hạn chế đáng kể. Phương pháp này có thể phải sử dụng nhiều tài nguyên và thời gian thực thi phụ thuộc vào số lượng đầu vào của ứng dụng, và không kiểm tra được toàn bộ các đầu vào có thể gây ra lỗi. Điều này có thể làm lãng phí tài nguyên và giảm hiệu suất kiểm thử tự động. 

Để cải thiện việc này, một giải pháp có thể là sử dụng phương pháp thuật giải di truyền. Trong mô hình này, quá trình tiến hoá được thêm vào giữa giai đoạn chọn mã khai thác, giúp chọn lọc những mã khai thác phù hợp với đầu vào đang kiểm tra. Bằng cách kết hợp các mã khai thác tiềm năng với một đầu vào cụ thể với các mã khai thác khác có thể tạo ra điểm đột biến tại đầu vào đó, đi sâu vào các nhánh mã nguồn ứng dụng và truy cập đến các vị trí có thể tạo ra lỗi trên ứng dụng. Việc này giúp tăng cường hiệu quả của phương pháp kiểm thử tự động và giảm thiểu lãng phí tài nguyên.

Luận văn này sẽ tập trung nghiên cứu trên các ứng dụng web chạy ngôn ngữ PHP, và một trong những lỗ hổng bảo mật tiềm tàng của nó là lỗ hổng thực thi mã từ xa (RCE). Phương pháp kiểm thử tự động fuzzing sẽ được triển khai để tìm kiếm lổ hổng bảo mật trong ứng dụng web. Nhằm tăng cường chất lượng của quá trình fuzzing, thuật giải di truyền sẽ được thêm vào để xử lý mã khai thác phải thực hiện. Kết quả của nghiên cứu là mong muốn tìm cách giảm thiểu số lượng đầu vào cần xử lý trong quá trình fuzzing, đồng thời tăng khả năng tìm kiểm lỗ hổng bảo mật trên ứng dụng web.

Cụ thể hơn, công việc thực hiện sẽ là kết hợp thuật giải di truyền và công cụ webfuzz để cải thiện quá trình fuzzing. Các quá trình chọn lọc, tiến hoá của thuật giải sẽ được sử dụng để tạo ra các mã khai thác phù hợp với đầu vào đang kiểm tra, từ đó tạo ra các đột biến tại đầu vào đó. Việc sử dụng công cụ webfuzz sẽ giúp đưa ra các đầu vào ngẫu nhiên và đa dạng hơn, tăng khả năng tìm ra các lỗ hổng trong ứng dụng web.

Kết quả nghiên cứu giúp tăng cường khả năng phát hiện lỗ hổng của phương pháp phân tích động, đồng thời tăng cường hiệu suất và giảm thiểu thời gian và tài nguyên tiêu hao trong suốt quá trình thực thi mô hình.

Kết quả đạt được:

  • Thực hiện nghiên cứu và áp dụng phương pháp phân tích động sử dụng thuật giải di truyền trong việc đánh giá ứng dụng web mã nguồn mở và đạt được kết quả tăng độ bao phủ mã khi thực hiện fuzzing và tìm kiếm được các lỗ hổng RCE có tồn tại trong ứng dụng.
  • Trong quá trình tích luỹ, thu thập mã khai thác, luận văn đã tổng hợp được tập dữ liệu mã khai thác lỗi RCE. Tập dữ liệu này được sử dụng trong quá trình fuzzing của mô hình, đồng thời khi sử dụng trên các công cụ khác cũng đạt được kết quả tốt.
  • Kết quả đánh giá cũng được so sánh với công cụ fuzzing hộp đen wfuzz và ffuf và cho ra kết quả tích cực về hướng phát triển của fuzzing kết hợp thuật giải di truyền.

Trân trọng.