Fuzzing trong An ninh mạng là gì?
Các lỗ hổng phần mềm là một vấn đề quan trọng trong an ninh mạng. Chúng cho phép các sản phẩm phần mềm bị tấn công và khi các sản phẩm đó được kết nối với các mạng an toàn khác, chúng có thể cung cấp một điểm xâm nhập cho tin tặc.
Tất cả các sản phẩm phần mềm chuyên nghiệp đều được kiểm tra kỹ lưỡng trước khi phát hành. Thật không may, các lỗ hổng vẫn là một sự xuất hiện phổ biến. Một cách để tìm các lỗ hổng bổ sung là sử dụng kỹ thuật kiểm tra phần mềm được gọi là fuzzing.
Vậy fuzzing là gì và nó hoạt động như thế nào?
Mục Lục
Fuzzing là gì?
Fuzzing là một kỹ thuật kiểm tra phần mềm tự động cố gắng tìm ra các lỗ hổng bảo mật bằng cách sử dụng các đầu vào ngẫu nhiên.
Phần mềm thường hoạt động không thể đoán trước khi người dùng nhập một đầu vào khác với những gì được yêu cầu. Fuzzing là thực hành nhập một lượng lớn đầu vào bất ngờ và ghi lại những gì sẽ xảy ra. Ý tưởng là người dùng sau đó có thể giám sát phần mềm và xác định xem có lỗ hổng bảo mật nào hay không.
Fuzzing được sử dụng để kiểm tra các sản phẩm phần mềm và bởi các chuyên gia bảo mật để xác định xem mạng có an toàn hay không. Nó cũng được sử dụng bởi các tin tặc, những người thực hành đánh lừa để tìm ra các lỗ hổng mà bản thân họ có thể sử dụng.
Các lỗ hổng được phát hiện bởi fuzzing rất khác nhau. Một đầu vào không mong muốn có thể khiến phần mềm bị treo. Nhưng nó cũng có thể trả về thông tin cá nhân hoặc cho phép người dùng truy cập vào các phần của phần mềm mà nếu không sẽ bị giới hạn.
Ưu điểm của Fuzzing là gì?
Fuzzing chỉ là một trong nhiều cách mà các sản phẩm phần mềm có thể được kiểm tra lỗ hổng bảo mật. Nó phổ biến vì:
- Fuzzing là hoàn toàn tự động. Sau khi một chương trình mờ được thiết lập, nó có thể tiếp tục tìm kiếm các lỗ hổng bảo mật mà không cần sự tham gia của con người.
- Fuzzing có thể tìm thấy các lỗ hổng mà các kỹ thuật kiểm thử phần mềm khác không có. Bởi vì điều này, nó thường được sử dụng ngoài các kỹ thuật thủ công.
- Fuzzing thường được tin tặc sử dụng để tìm lỗ hổng zero-day. Sử dụng các kỹ thuật tương tự như tin tặc cho phép các nhà phát triển tìm thấy các lỗ hổng zero-day trước khi chúng thực hiện.
Fuzzing hoạt động như thế nào?
Một công cụ được sử dụng để làm mờ thường có ba thành phần. Họ thường được coi là một nhà thơ, một người chuyển phát nhanh và một nhà tiên tri.
Nhà thơ
Nhà thơ bắt đầu quá trình và chịu trách nhiệm tạo một trường hợp thử nghiệm. Một trường hợp thử nghiệm là một danh sách dài các đầu vào tiềm năng.
Người vận chuyển
Người chuyển phát nhanh chèn tất cả các đầu vào ngẫu nhiên vào phần mềm được nhắm mục tiêu. Fuzzers được thiết kế để thực hiện việc này một cách tự động, cho phép kiểm tra hàng loạt lượng lớn đầu vào.
Người tiên tri
Tiên tri kiểm tra xem có bất kỳ đầu vào nào khiến phần mềm làm điều gì đó khác với việc nó được thiết kế để làm hay không. Nếu fuzzing đang được thực hiện vì các mục đích hợp pháp, thì hành vi đó có thể được tái tạo và sửa chữa. Hoặc nếu việc khai báo đang được thực hiện bởi một tin tặc và hành vi không mong đợi là hữu ích, nó có thể được sử dụng cho các mục đích xấu.
Làm thế nào để những kẻ tấn công sử dụng Fuzzing?
Fuzzing là một kỹ thuật phổ biến trong giới tin tặc vì nó cho phép họ tìm ra các lỗ hổng trong phần mềm mà không cần truy cập vào mã nguồn. Vì fuzzing được tự động hóa nên nó cũng dễ thực hiện. Nếu một tin tặc phát hiện ra một lỗ hổng, họ có thể thực hiện các cuộc tấn công sau.
Tấn công DDoS
Nếu fuzzing phát hiện ra rằng một số đầu vào cần một thời gian dài để xử lý, thông tin này có thể được sử dụng để khởi động một cuộc tấn công DDoS. Một cuộc tấn công DDoS liên quan đến việc gửi nhiều yêu cầu đến một hệ thống đến mức nó ngừng hoạt động. Fuzzing cho phép các yêu cầu được điều chỉnh để chúng yêu cầu nhiều tài nguyên hệ thống nhất để đáp ứng.
SQL Injection
Tấn công SQL injection là khi các câu lệnh SQL độc hại được gửi đến một ứng dụng. Nếu các câu lệnh này không được làm sạch đúng cách, chúng có thể cho phép kẻ tấn công tương tác với cơ sở dữ liệu. Điều này có thể cho phép họ đánh cắp dữ liệu hoặc sửa đổi nó. Fuzzing là một công cụ hiệu quả để thử một lượng lớn các câu lệnh SQL và xác định xem câu lệnh nào có tạo ra phản hồi thuận lợi hay không.
Tràn bộ nhớ
Tấn công tràn bộ đệm là khi nhiều dữ liệu được thêm vào bộ đệm của chương trình hơn mức nó có thể xử lý. Trong trường hợp này, tin tặc có thể khiến chương trình đó thực thi mã độc hại. Điều này có thể được sử dụng để ăn cắp dữ liệu hoặc truy cập trái phép. Fuzzing được sử dụng để tìm các đầu vào có thể gây ra hiện tượng tràn bộ đệm.
Các loại Fuzzing
Các công cụ Fuzzing có thể được phân loại dựa trên cả cách thức tạo các trường hợp thử nghiệm và mức độ hiểu biết về hệ thống.
Dumb so với thông minh
Dumb fuzzing chỉ đơn giản là thêm một lượng lớn các đầu vào ngẫu nhiên. Nó không chọn các đầu vào có nhiều khả năng được ứng dụng chấp nhận nhất. Điều này làm cho nó dễ dàng hơn để thực hiện mà không cần biết bất cứ điều gì về phần mềm; tuy nhiên, nó cũng không hiệu quả cao vì hầu hết các đầu vào sẽ bị từ chối.
Làm mờ thông minh tạo ra các đầu vào mà ứng dụng có thể chấp nhận. Nó yêu cầu người dùng hiểu định dạng đầu vào nào được chấp nhận và sau đó tạo ra một lượng lớn đầu vào trong định dạng đó. Quá trình khai thác thông minh đòi hỏi nhiều nỗ lực hơn và kiến thức về sản phẩm để triển khai, nhưng nó hiệu quả hơn đáng kể.
Đột biến so với Thế hệ
Những người làm mờ đột biến lấy một đầu vào đã được chấp nhận trước đó và thực hiện những thay đổi nhỏ đối với nó. Điều này cho phép tạo các đầu vào có khả năng được chấp nhận mà không cần biết về định dạng được chấp nhận.
Các bộ làm mờ thế hệ tạo ra các đầu vào hoàn toàn mới dựa trên những gì đã biết về định dạng được chấp nhận.
Hộp trắng so với Hộp đen
Hộp đen mờ được sử dụng mà không có bất kỳ thông tin nào về ứng dụng đang được kiểm tra. Nó kém hiệu quả hơn làm mờ hộp trắng nhưng có thể được áp dụng cho bất kỳ ứng dụng nào mà không cần truy cập vào mã nguồn. Điều này làm cho nó phổ biến trong số các tin tặc.
White box fuzzing sử dụng thông tin về ứng dụng đang được kiểm tra để tạo ra các đầu vào có nhiều khả năng được chấp nhận nhất và tạo ra các lỗ hổng bảo mật. Nó chủ yếu được sử dụng bởi các nhà phát triển phần mềm vì nó hiệu quả hơn so với việc làm mờ hộp đen.
Fuzzing là một phương pháp kiểm tra phần mềm mạnh mẽ được các nhà phát triển phần mềm, chuyên gia bảo mật và tin tặc sử dụng. Nó đòi hỏi nỗ lực tối thiểu để thực hiện và có khả năng tìm ra các lỗ hổng mà các kỹ thuật kiểm thử phần mềm khác không làm được.
Nó đặc biệt quan trọng từ quan điểm bảo mật vì nó thường được sử dụng để phát hiện các lỗ hổng zero-day. Những lỗ hổng này có thể được phát hiện và sửa chữa bởi các chuyên gia bảo mật hoặc bị phát hiện và khai thác bởi tin tặc.