Skip to main content

Thử nghiệm fuzz là gì?

Thử nghiệm fuzz, hoặc fuzzing, là một phương pháp kiểm tra để xem chương trình hoặc hệ thống máy tính sẽ phản hồi như thế nào với các đầu vào và thông tin khác nhau.Quá trình này bao gồm việc tạo ra một số loại dữ liệu, hoàn toàn ngẫu nhiên hoặc ngẫu nhiên trong các ràng buộc nhất định và sau đó cung cấp dữ liệu đó vào chương trình để kiểm tra cách xử lý thông tin bất ngờ.Hình thức kiểm tra fuzz cơ bản nhất liên quan đến việc gửi một chuỗi ngẫu nhiên các máy nhấn hoặc ký tự cho chương trình và kiểm tra xem nó có xử lý chính xác chúng không.Một phiên bản phức tạp hơn của thử nghiệm fuzz sử dụng dữ liệu có cấu trúc sau đó được thao tác ngẫu nhiên và gửi đến chương trình.Dữ liệu có thể đến chương trình dưới dạng các sự kiện hệ thống, đầu vào bàn phím, tín hiệu mạng giả hoặc thậm chí là các tệp sẽ được tải. Có nhiều phần khác nhau của chương trình máy tính có thể được kiểm tra với trình tạo fuzz.Giao diện người dùng đồ họa (GUI) có thể được kiểm tra bằng cách tạo một chuỗi các sự kiện chuột và bàn phím ngẫu nhiên và kiểm tra xem GUI có thể xử lý đầu vào mà không bị sập, đóng băng hoặc thực hiện một tác vụ không mong muốn.Các giao thức mạng có thể được kiểm tra bằng cách cho phép Trình tạo Fuzz thay đổi ngẫu nhiên các phần của gói dữ liệu hợp lệ và sau đó đảm bảo giao thức có thể tiếp tục hoạt động sau khi nhận được dữ liệu không đúng.Các yếu tố đầu vào cơ bản của gần như bất kỳ chương trình nào cũng có thể được kiểm tra khả năng chống lại các lỗi, chẳng hạn như đầu vào quá dài đối với loại lưu trữ, đầu vào thuộc loại khác so với dự kiến và đầu vào không đầy đủ hoặc không chính xác.Ngành công nghiệp bảo mật máy tính có thể sử dụng thử nghiệm fuzz để đảm bảo rằng không có lỗ hổng bảo mật rõ ràng nào tồn tại trong một số hệ thống nhất định.Điều này có thể được thực hiện bằng cách sử dụng trình tạo fuzz được thiết kế để kiểm tra bảo mật máy tính.Các chương trình này sẽ cố gắng sử dụng các từ khóa hệ thống, mật khẩu quản trị viên mặc định đã biết, các chức năng trong các thư viện mà chương trình sử dụng và các cuộc gọi ngẫu nhiên đến các chức năng hệ thống để xem chương trình sẽ phản ứng như thế nào.Một số phạm vi nhất định, hoặc thậm chí chỉ để kiểm tra các loại đầu vào cụ thể.Điều này có nghĩa là một chương trình chỉ có thể có các lệnh hợp lệ được gửi cho nó, nhưng chúng có thể theo thứ tự vô nghĩa.Các chương trình thử nghiệm fuzz phức tạp hơn tồn tại có thể thực hiện các yếu tố của chương trình mục tiêu và thao túng chúng để tạo ra các tình huống có thể được khai thác độc hại.Điều này có thể bao gồm thay đổi thứ tự của các quy trình được sinh ra, sửa đổi quyền hoặc sửa đổi dữ liệu cốt lõi và tệp thư viện. Kết quả cuối cùng của việc kiểm tra fuzz là xem liệu chương trình có an toàn và hoạt động như vậy khi đối mặt vớitrường hợp không mong muốn.Khi được sử dụng song song với phần mềm hồ sơ và phân tích, nó cũng có thể phát hiện rò rỉ bộ nhớ trong các khu vực của chương trình như xử lý lỗi hoặc tắc nghẽn hiệu suất.Trong các trường hợp bảo mật máy tính, các vấn đề nguy hiểm như tràn có thể thỏa hiệp một hệ thống có thể bị bắt với thiết lập chính xác.Tuy nhiên, thử nghiệm Fuzz không thể được sử dụng làm phương pháp kiểm tra phần mềm duy nhất và cần phải là một phần của quy trình đảm bảo chất lượng và kiểm tra phần mềm lớn hơn.