Kiểm tra lông tơ
Fuzz Testing hay Fuzzing là một kỹ thuật kiểm tra phần mềm đưa dữ liệu ngẫu nhiên hoặc không hợp lệ được gọi là FUZZ vào hệ thống phần mềm để phát hiện ra các lỗi mã hóa và lỗ hổng bảo mật. Mục đích của kiểm tra fuzz là chèn dữ liệu bằng các kỹ thuật tự động hoặc bán tự động và kiểm tra hệ thống để tìm các trường hợp ngoại lệ khác nhau như hệ thống gặp sự cố hoặc lỗi mã tích hợp, v.v.
Kiểm thử Fuzz ban đầu được phát triển bởi Barton Miller tại Đại học Wisconsin vào năm 1989. Kiểm thử Fuzz hay fuzzing là một kỹ thuật kiểm thử Phần mềm và nó là một loại Kiểm thử bảo mật .
Tại sao phải làm Thử nghiệm Fuzz?
- Thông thường, kiểm tra Mờ tìm lỗi hoặc lỗi bảo mật nghiêm trọng nhất.
- Thử nghiệm Fuzz cho kết quả hiệu quả hơn khi được sử dụng với Thử nghiệm hộp đen, Thử nghiệm beta và các phương pháp gỡ lỗi khác.
- Kiểm tra Fuzz được sử dụng để kiểm tra Lỗ hổng bảo mật của phần mềm. Đó là kỹ thuật kiểm tra rất hiệu quả về chi phí.
- Kiểm thử Fuzz là một trong những kỹ thuật kiểm tra hộp đen. Fuzzing là một trong những phương pháp phổ biến nhất mà hacker sử dụng để tìm lỗ hổng của hệ thống.
Cách thực hiện Kiểm tra Fuzz
Các bước kiểm tra mờ bao gồm các bước kiểm tra cơ bản-
Bước 1) Xác định hệ thống mục tiêu
Bước 2) Xác định đầu vào
Bước 3) Tạo dữ liệu Fuzzed
Bước 4) Thực hiện kiểm tra bằng cách sử dụng dữ liệu mờ
Bước 5) Giám sát hành vi của hệ thống
Bước 6) Ghi nhật ký các khiếm khuyết
Ví dụ về Fuzzers
-
Fuzzers dựa trên đột biến thay đổi các mẫu dữ liệu hiện có để tạo dữ liệu thử nghiệm mới. Đây là cách tiếp cận rất đơn giản và dễ hiểu, điều này bắt đầu với các mẫu giao thức hợp lệ và tiếp tục xử lý từng byte hoặc tệp.
-
Fuzzers dựa trên thế hệ xác định dữ liệu mới dựa trên đầu vào của mô hình. Nó bắt đầu tạo đầu vào từ đầu dựa trên đặc điểm kỹ thuật.
-
Bộ giảm tốc dựa trên PROTOCOL , bộ làm mờ thành công nhất là có kiến thức chi tiết về định dạng giao thức đang được kiểm tra. Sự hiểu biết phụ thuộc vào đặc điểm kỹ thuật. Nó liên quan đến việc viết một mảng đặc điểm kỹ thuật vào công cụ sau đó bằng cách sử dụng kỹ thuật tạo kiểm tra dựa trên mô hình, đi qua đặc điểm kỹ thuật và thêm tính bất thường trong nội dung dữ liệu, trình tự, v.v. Đây còn được gọi là kiểm tra cú pháp, kiểm tra ngữ pháp, kiểm tra độ mạnh, v.v ... Fuzzer có thể tạo các trường hợp thử nghiệm từ một trường hợp hiện có hoặc chúng có thể sử dụng các đầu vào hợp lệ hoặc không hợp lệ.
Có hai hạn chế của việc làm mờ dựa trên giao thức:
- Việc kiểm tra không thể tiến hành cho đến khi thông số kỹ thuật hoàn thiện.
- Nhiều giao thức hữu ích là một phần mở rộng của các giao thức đã xuất bản. Nếu kiểm tra fuzz dựa trên thông số kỹ thuật đã xuất bản, phạm vi kiểm tra cho các giao thức mới sẽ bị giới hạn.
Hình thức đơn giản nhất của kỹ thuật fuzzing là gửi đầu vào ngẫu nhiên đến phần mềm dưới dạng các gói giao thức hoặc dưới dạng một sự kiện. Kỹ thuật chuyển đầu vào ngẫu nhiên này rất hiệu quả để tìm ra lỗi trong nhiều ứng dụng và dịch vụ. Các kỹ thuật khác cũng có sẵn và nó rất dễ thực hiện. Để thực hiện các kỹ thuật này, chúng ta chỉ cần thay đổi các đầu vào hiện có. Chúng ta có thể thay đổi đầu vào chỉ bằng cách hoán đổi các bit đầu vào.
Các loại lỗi được phát hiện bằng Kiểm tra Fuzz
-
Lỗi xác nhận và rò rỉ bộ nhớ phương pháp luận này được sử dụng rộng rãi cho các ứng dụng lớn, nơi các lỗi đang ảnh hưởng đến sự an toàn của bộ nhớ, đây là một lỗ hổng nghiêm trọng.
- Đâu vao không hợp lệ
Trong kiểm tra fuzz, fuzzers được sử dụng để tạo ra một đầu vào không hợp lệ được sử dụng để kiểm tra các quy trình xử lý lỗi và điều này rất quan trọng đối với phần mềm không kiểm soát đầu vào của nó. Fuzzing đơn giản có thể được biết đến như một cách để tự động hóa việc kiểm tra âm tính.
- Lỗi độ chính xác
Fuzzing cũng có thể được sử dụng để phát hiện một số loại lỗi "tính đúng". Chẳng hạn như cơ sở dữ liệu bị hỏng, kết quả tìm kiếm kém, v.v.
Công cụ kiểm tra Fuzz
Các công cụ được sử dụng trong bảo mật web có thể được sử dụng rộng rãi trong kiểm tra lông tơ như Burp Suite, Peach Fuzzer, v.v.
- Peach Fuzzer
Peach Fuzzer cung cấp phạm vi bảo mật và mạnh mẽ hơn máy quét. Các công cụ kiểm tra khác chỉ có thể tìm kiếm các chủ đề đã biết trong khi Peach Fuzzer cho phép người dùng tìm các chủ đề đã biết và chưa biết.
- Spike Proxy
Nó là một công cụ cấp chuyên nghiệp tìm kiếm các lỗ hổng cấp ứng dụng trong các ứng dụng web. SPIKE Proxy bao gồm những điều cơ bản, chẳng hạn như SQL Injection và cross-site-scripting, nhưng đó là cơ sở hạ tầng Python hoàn toàn mở. SPIKE Proxy có sẵn cho Linux và Windows.
- Trang web
Webscarab được viết bằng Java do đó có thể di chuyển đến nhiều nền tảng. Để phân tích ứng dụng, khuôn khổ Webscarab được sử dụng giao tiếp bằng giao thức HTTP và HTTPS.
Ví dụ: Webscarab hoạt động như một proxy chặn, nó cho phép người điều hành xem xét và sửa đổi yêu cầu do trình duyệt tạo ra trước khi chúng được máy chủ nhận. Và cho phép xem xét và cập nhật phản hồi do máy chủ tạo ra trước khi trình duyệt nhận được. Bằng cách này, nếu bọ tìm kiếm tìm thấy bất kỳ lỗ hổng nào, nó sẽ tạo danh sách các vấn đề được báo cáo.
- OWASP WSFuzzer
WSFuzzer là một chương trình GPL'd được viết bằng Python. GPL'd một chương trình hiện đang nhắm mục tiêu các Dịch vụ Web. Trong phiên bản hiện tại của OWASPWSFuzzer, các dịch vụ SOAP dựa trên HTTP là mục tiêu chính.
Ưu điểm của Kiểm tra Fuzz
- Kiểm tra Fuzz cải thiện Kiểm tra bảo mật phần mềm.
- Các lỗi được tìm thấy trong fuzzing đôi khi rất nghiêm trọng và phần lớn thời gian được tin tặc sử dụng bao gồm sự cố, rò rỉ bộ nhớ, ngoại lệ không được khắc phục, v.v.
- Nếu bất kỳ lỗi nào không được người thử nghiệm nhận thấy do giới hạn về thời gian và tài nguyên thì những lỗi đó cũng được tìm thấy trong thử nghiệm Fuzz.
Nhược điểm của Kiểm tra Fuzz
- Chỉ riêng kiểm tra Fuzz không thể cung cấp một bức tranh toàn cảnh về các lỗi hoặc mối đe dọa bảo mật tổng thể.
- Kiểm tra Fuzz ít hiệu quả hơn để đối phó với các mối đe dọa bảo mật không gây ra sự cố chương trình, chẳng hạn như một số vi-rút, sâu, Trojan, v.v.
- Kiểm tra Fuzz chỉ có thể phát hiện các lỗi hoặc mối đe dọa đơn giản.
- Để thực hiện một cách hiệu quả, nó sẽ đòi hỏi thời gian đáng kể.
- Đặt điều kiện giá trị biên với các đầu vào ngẫu nhiên là rất khó nhưng hiện nay việc sử dụng các thuật toán xác định dựa trên đầu vào của người dùng, hầu hết những người kiểm tra đều giải quyết được vấn đề này.
Tóm lược:
Trong Kỹ thuật phần mềm, kiểm tra Fuzz cho thấy sự hiện diện của các lỗi trong một ứng dụng. Fuzzing không thể đảm bảo việc phát hiện lỗi hoàn toàn trong một ứng dụng. Nhưng bằng cách sử dụng kỹ thuật Fuzz, nó đảm bảo rằng ứng dụng mạnh mẽ và an toàn, vì kỹ thuật này giúp phơi bày hầu hết các lỗ hổng phổ biến.
Bài viết này được đóng góp bởi Priyanka Kothe