Hướng dẫn kiểm tra Fuzz (Fuzzing)

Kiểm tra Fuzz là gì?

Kiểm tra lông tơ hay Fuzzing là một kỹ thuật kiểm thử phần mềm đưa dữ liệu không hợp lệ hoặc ngẫu nhiên gọi là FUZZ vào hệ thống phần mềm để phát hiện 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 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ư lỗi hệ thống 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 tra bảo mật.

Kiểm tra lông tơ

Tại sao phải thực hiện Fuzz testing?

  • Thông thường, kiểm thử mờ sẽ tìm ra lỗi hoặc khiếm khuyết bảo mật nghiêm trọng nhất.
  • Kiểm tra Fuzz cho kết quả hiệu quả hơn khi sử dụng với Da Đen Box Kiểm tra, 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 tính dễ bị tổn thương của phần mềm. Đây là kỹ thuật thử nghiệm rất hiệu quả về mặt chi phí.
  • Kiểm thử Fuzz là một trong những kỹ thuật kiểm thử hộp đen. Fuzzing là một trong những phương pháp phổ biến nhất mà tin tặc 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 mờ

Bước 4) Thực hiện kiểm thử bằng dữ liệu mờ

Bước 5) Giám sát hành vi hệ thống

Bước 6) Nhật ký lỗi

Ví dụ về Fuzzer

  • 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, bắt đầu bằng các mẫu giao thức hợp lệ và tiếp tục xáo trộn 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 thông số kỹ thuật.
  • Fuzzer DỰA TRÊN GIAO THỨC, cách 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 thử nghiệm. 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 tả vào công cụ, sau đó sử dụng kỹ thuật tạo thử nghiệm dựa trên mô hình để xem xét đặc tả và thêm tính bất thường trong nội dung dữ liệu, trình tự, v.v. Điều này còn được gọi là kiểm tra cú pháp, kiểm tra ngữ pháp, kiểm tra độ mạnh mẽ, 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 đầ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:

  1. Việc kiểm tra không thể tiến hành cho đến khi đặc tả hoàn thiện.
  2. Nhiều giao thức hữu ích là phần mở rộng của các giao thức đã được xuất bản. Nếu việc kiểm tra lông tơ dựa trên các thông số kỹ thuật đã được công bố, Phạm vi kiểm tra đối với các giao thức mới sẽ bị hạn chế.

Hình thức đơn giản nhất của kỹ thuật làm mờ là gửi đầu vào ngẫu nhiên tới phần mềm dưới dạng gói giao thức hoặc dưới dạng 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à rất dễ thực hiện. Để thực hiện những 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ởi Fuzz testing

  • Lỗi xác nhận và rò rỉ bộ nhớ phương pháp này được sử dụng rộng rãi cho các ứng dụng lớn trong đó các lỗi ả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, bộ mờ được sử dụng để tạo ra đầ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ó. Làm mờ đơn giản có thể được coi là một cách để tự động hóa thử nghiệm tiêu cực.
  • 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 “đúng đắn”. 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 lông tơ

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 thử nghiệm fuzz như Burp Suite, Peach Fuzzer, v.v.

  • lông tơ đào: 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.
  • Proxy tăng đột biến: Đây là một công cụ cấp chuyên nghiệp nhằm 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 Chèn và viết kịch bản chéo trang, nhưng nó hoàn toàn mở Python cơ sở hạ tầng. Proxy SPIKE có sẵn cho Linux và Windows.
  • Webscarab: Webscarab được viết bằng Java do đó có thể di chuyển sang nhiều nền tảng. Để phân tích ứng dụng, khung 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 vận 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 web bọ tìm thấy bất kỳ lỗ hổng nào, nó sẽ lập danh sách các vấn đề được báo cáo.
  • OWASP WSFuzzer: WSFuzzer là một chương trình GPL được viết bằng Python. GPL'd một chương trình hiện đang nhắm mục tiêu Dịch vụ Web. Trong phiên bản hiện tại của OWASPWSFuzzer HTTP dựa trên dịch vụ SOAP là mục tiêu chính.

Ưu điểm của kiểm tra Fuzz

  • Kiểm thử Fuzz cải tiến phần mềm Kiểm tra bảo mật.
  • Các lỗi được tìm thấy trong quá trình làm mờ đôi khi rất nghiêm trọng và hầu hết được tin tặc sử dụng bao gồm sự cố, rò rỉ bộ nhớ, ngoại lệ chưa được xử lý, v.v.
  • Nếu bất kỳ lỗi nào không được người kiểm tra chú ý do hạn chế về thời gian và nguồn lực 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ỉ kiểm thử Fuzz không thể cung cấp bức tranh hoàn chỉnh về mối đe dọa hoặc lỗi bảo mật tổng thể.
  • Kiểm thử Fuzz kém hiệu quả hơn trong việc xử lý 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 hiệu quả, nó sẽ đòi hỏi thời gian đáng kể.
  • Việc đặt điều kiện giá trị biên với đầu vào ngẫu nhiên là rất khó khăn 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 thử nghiệm đều giải quyết được vấn đề này.

Tổng kết

Trong Kỹ thuật phần mềm, kiểm thử Fuzz cho thấy sự hiện diện của lỗi trong ứng dụng. Fuzzing không thể đảm bảo phát hiện hoàn toàn các lỗi 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át hiện hầu hết các lỗ hổng phổ biến.