Bài đăng này đã không được cập nhật trong 3 năm
Ngày nay, hình thức thanh toán trực tuyến thông qua website, ứng dụng online đang ngày càng trở nên phổ biến. Vì thế, các website, ứng dụng online này đã trở thành mục tiêu tấn công của hacker.Tại Việt Nam, “Trong năm 2013 đã có gần 5.000 hệ thống website của các cơ quan doanh nghiệp tại Việt Nam bị hacker tấn công. Chủ yếu thông qua các lỗ hổng về mạng và cấu hình hệ thống. “(Nguồn http://bkav.com.vn) Từ thực trạng trên cho thấy, an ninh mạng vẫn chưa thực sự được các cơ quan, doanh nghiệp quan tâm. Do đó, cần thiết có một giải pháp kiểm thử an toàn bảo mật cho mỗi hệ thống website, ứng dụng online trước khi đưa vào sử dụng. Nhằm phát hiện và cảnh báo được các lỗ hổng trên hệ thống website một cách chính xác. Và thật may kỹ thuật fuzzing giúp tìm kiếm và xử lý được hầu hết các lỗ hổng trong vấn đề nêu trên.
Fuzzing là một kỹ thuật phát hiện lỗi của phần mềm bằng cách tự động hoặc bán tự động sử dụng phương pháp lặp lại thao tác sinh dữ liệu sau đó chuyển cho hệ thống xử lý. Nó cung cấp dữ liệu đầu vào cho chương trình (là các dữ liệu không hợp lệ, dữ liệu không mong đợi: các giá trị vượt quá biên, các giá trị đặc biệt có ảnh hưởng tới phần xử lý, hiển thị của chương trình), sau đó theo dõi và ghi lại các lỗi, các kết quả trả về của ứng dụng trong quá trình xử lý của chương trình. Fuzzing là một trong những kỹ thuật của kiểm thử hộp đen. không đòi hỏi quyền truy cập vào mã nguồn. Do nó có khả năng tìm thấy lỗi một cách nhanh chóng và tránh được việc phải xem mã nguồn. Các chương trình và framework được dùng để tạo ra kỹ thuật fuzzing hoặc thực hiện fuzzing được gọi là Fuzzer. Tùy theo môi trường và ứng dụng cần kiểm tra mà người ta có các phương án khác nhau để xây dựng Fuzzer.
Các bước thực hiện của kiểm thử fuzzing bao gồm các step cơ bản sau:
Các mục tiêu được đánh giá có nguy cơ rủi ro cao gồm:
Đầu vào ứng dụng có thể có nhiều hình thức, hoặc từ xa (mạng traffic), hoặc cục bộ (các file, các khóa registry, các biến môi trường, đối số dòng lệnh, tên đối tượng …). Một số fuzzer đã được tạo ra để phục vụ cho nhiều loại đầu vào. Các lớp đầu vào ứng với fuzzers phổ biến như sau:
Mục đích của một fuzzer là để kiểm tra sự tồn tại của lỗ hổng bảo mật có thể truy cập thông qua đầu vào trong các ứng dụng phần mềm.
Fuzzers được phân loại dựa trên hai tiêu chí khác nhau: a. Injectionvector hoặc attack vector Fuzzers có thể được chia dựa trên các lĩnh vực ứng dụng mà chúng sử dụng, nhưng về cơ bản theo hướng attack vector. Đối với Fuzzers theo loại Injectionvector nó sẽ thực hiện kiểm thử hộp đen thông qua việc nhập dữ liệu đầu vào. Các Fuzzers loại này dùng để kiểm thử phía client và một số khác để kiểm thử phía server. Đối với fuzzers kiểm thử phía client với giao thức HTTP hoặc TLS sẽ nhằm mục tiêu vào các trình duyệt. Đối với các fuzzers kiểm thử phía Server sẽ thực hiện kiểm thử trên máy chủ Web Server. Một số fuzzers khác hỗ trợ kiểm thử trên cả hai Server và Client, hoặc thậm chí cả hai (dùng để phân tích proxy hoặc phân tích lưu lượng ). b. Kỹ thuật test case Fuzzers cũng có thể được phân loại dựa trên testcase phức tạp. Các test case được tạo ra trong fuzzing với mục tiêu tạo ra các lớp khác nhau trong phần mềm, và nhờ đó có thể thâm nhập vào các lớp logic khác nhau trong ứng dụng. Fuzzers mà thay đổi các giá trị khác nhau trong các giao thức sẽ kiểm tra được lỗ hổng như: tràn số nguyên và các vấn đề khác về số nguyên. Khi cấu trúc thông điệp được biến đổi dị thường (anomalized), các fuzzer sẽ tìm thấy sai sót trong phân tích cú pháp thông điệp (Chẳng hạn trong đặt tả XML và ASN.1). Một số phương pháp phân loại dựa trên sự phức tạp của test case trong một fuzzer:
Hiệu quả của fuzzing phụ thuộc vào : + Độ bao phủ không gian đầu vào (input spacecoverage) : Không gian đầu vào của giao diện kiểm thử càng tốt thì hiệu quả đạt càng cao. + Chất lượng của dữ liệu kiểm thử (qualityoftestdata) : Các đầu vào độc hại tiêu biểu (representativemalicious) và dị hình (malformed) sẽ làm sẽ là tăng cường khả năng kiểm thử đối với các yếu tố hoặc cấu trúc trong định nghĩa giao diện.
Ở giai đoạn này, thông thường các fuzzers thực hiện phần lớn các chức năng của các cách tiếp cận nêu trên nhưng bằng cách giải pháp đặt biệt để tự động hóa quá trình xử lý kiểm thử. Đối tượng tiếp cận của Fuzzing bao gồm:
Giai đoạn này không đơn thuần các fuzzers phát hiện các lỗ hổng qua fuzzing, mà phải định nghĩa các lỗi được phát hiện. Điều này có ý nghĩa hết sức quan trọng trong việc phân tích và báo cáo lỗi. Để báo cáo lỗi đòi hỏi sự hiểu biết rõ về hoạt động xử lý, và có thể được tích hợp vào sự kiện phân loại lỗi tự động.
Sau khi một hoặc một số lỗi phần mềm đã được xác định, các fuzzers gửi một danh sách các khiếm khuyết này để một đội ngũ phát triển, để họ có thể sửa chữa chúng. Tất nhiên, việc này đòi hỏi một cuộc kiểm tra cho dù khiếm khuyết có hay không có khả năng khai thác nhằm tìm hiểu các tác động sẽ ảnh hưởng đến người dùng.
Kỹ thuật Fuzzing thường được sử dụng nhiều trong việc kiểm thử cho các vấn đề về an ninh trong các phần mềm, hệ thống máy tính và các website dịch vụ. Ngoài ra, fuzzing là một trong những phương pháp phổ biến nhất được hacker sử dụng để tìm lỗ hổng của hệ thống. Nên khi các quản trị viên, những người trực tiếp quản lý và theo dõi tình hình hoạt động các website hoặc các QA/tester sử dụng phương pháp này để kiểm thử sẽ giúp chương trình ngăn chặn trước được sự quấy phá từ hacker.
nguồn : https://viblo.asia/p/tim-hieu-ve-fuzz-testing-YWOZrDzv5Q0
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE