Tấn Công Buffer Overflow
Tràn bộ đệm có lẽ là dạng lỗ hổng bảo mật phần mềm được biết đến nhiều nhất. Hầu hết các nhà phát triển này đều biết lỗ hổng bảo mật là gì, nhưng các cuộc tấn công tràn bộ đệm vẫn đang xảy ra trên các ứng dụng, cả ứng dụng mới được phát triển và ứng dụng lâu đời. .
Bạn đang xem: Tấn công buffer overflow
Đang xem: Tràn bộ nhớ đệm là gì
Tràn bộ đệm là gì?
Tràn bộ đệm hay còn gọi là Buffer Overflow mô tả một sự kiện bất thường của chương trình khi quá trình lưu trữ dữ liệu vượt quá ranh giới của vùng đệm được cấp phát có độ dài nhất định. Kết quả là, dữ liệu có thể được ghi đè lên bộ nhớ liền kề. Dữ liệu bị ghi đè có thể bao gồm các bộ đệm, biến và thanh ghi khác kiểm soát luồng của toàn bộ chương trình. Thiệt hại mà lỗi tràn bộ đệm có thể gây ra có thể làm hỏng dữ liệu, làm hỏng chương trình hoặc gây ra việc thực thi mã độc hại.
Tràn bộ đệm có thể ảnh hưởng đến tất cả các loại phần mềm, chúng thường là kết quả của đầu vào không đúng định dạng hoặc không phân bổ đủ dung lượng lưu trữ cho bộ đệm. Như một ví dụ đơn giản dưới đây, việc cấp phát bộ nhớ cho thông tin đăng nhập được thiết kế để mong muốn tên người dùng và mật khẩu được nhập là 8 byte. Vì vậy, nếu ai đó cố tình nhập 10 byte, chương trình có thể ghi đè dữ liệu qua ranh giới bộ đệm.
Các cuộc tấn công tràn bộ đệm được chia thành hai loại:
Tràn bộ đệm dựa trên ngăn xếp: hay còn gọi là tràn bộ đệm dựa trên ngăn xếp là một trong những phương pháp tấn công phổ biến hơn. Nó tận dụng bộ nhớ ngăn xếp chỉ tồn tại trong quá trình thực thi chức năng. Tấn công dựa trên heap: Còn được gọi là tràn bộ nhớ thường khó thực hiện hơn, liên quan đến việc lấp đầy không gian bộ nhớ. được phân bổ cho một chương trình ngoài bộ nhớ được sử dụng cho thao tác đang chạy hiện tại. Tổ chức bộ nhớ
Đầu tiên chúng ta hãy xem lại một chút về tổ chức của bộ nhớ. Tổ chức bộ nhớ bao gồm các phân đoạn chính là code, data, .bss, heap, stack:


Đoạn văn bản/mã: Lưu trữ các đoạn mã đã biên dịch của chương trình, dữ liệu trong vùng này là chỉ đọc và có kích thước cố định (không thay đổi) nên mọi thao tác ghi trên vùng dữ liệu này sẽ gây ra lỗi. vi phạm phân đoạn.Phân đoạn dữ liệu: Lưu trữ dữ liệu chung với các giá trị được khởi tạo như biến cục bộ và toàn cục nên kích thước là cố định. Phân đoạn .bss: Lưu trữ dữ liệu chung nhưng chưa được khởi tạo như các biến cục bộ và toàn cầu. Phân đoạn heap: Được sử dụng để cấp phát bộ nhớ động từ thấp đến cao. Bộ nhớ heap không được tự động giải phóng.Stack segment: Dùng để lưu trữ các tham số của hàm và các biến cục bộ bao gồm cả địa chỉ trả về trong các hàm được gọi. Theo kiến trúc bộ vi xử lý của intel, ngăn xếp được phân bổ bộ nhớ từ cao xuống thấp. Dữ liệu trong các nhóm được gọi là stack frame và hoạt động theo cơ chế LIFO (Last In First Out). Khi gọi một hàm, việc khởi tạo hàm và trở về từ chương trình con sẽ khiến ngăn xếp thay đổi.
Khung ngăn xếp là một vùng của ngăn xếp được chỉ định cho các giá trị được đưa vào ngăn xếp. Địa chỉ trả về của khung được lưu trong thanh ghi EBP (dành cho bộ xử lý Intel). Ví dụ sau minh họa một khung ngăn xếp, giả sử đây là một chuỗi gọi hàm của chương trình:

Trong ngăn xếp có 3 thanh ghi mà chúng ta sẽ phải tìm hiểu kỹ để hiểu cơ chế hoạt động của ngăn xếp:
EBP (Con trỏ cơ sở mở rộng): Lưu địa chỉ của vị trí nơi dữ liệu đầu tiên được nhập vào ngăn xếp để nó luôn được trỏ tới nền của khung hiện tại ESP (Con trỏ ngăn xếp mở rộng): Lưu địa chỉ tiếp theo phải được nhập vào trên ngăn xếp để nó luôn trỏ tới đỉnh ngăn xếp EIP ( Con trỏ chỉ lệnh mở rộng ): Lưu địa chỉ tiếp theo của lệnh phải được thực hiện.
Quá trình gọi hàm được chia thành ba bước như sau:
Start (Prologue): lưu trạng thái ngăn xếp, cấp phát bộ nhớ Gọi hàm (call): đẩy EIP vào ngăn xếp và nhảy đến địa chỉ của hàm Kết thúc (Phần kết): khôi phục trạng thái như trước khi gọi hàm
Ví dụ: thêm (3, 4)
Chương trình sẽ đẩy 3 và 4 vào ngăn xếp
Thông thường các biến và tham số cục bộ được truy cập thông qua phần bù so với EBP. Trong đó:
EBP-n: Biến cục bộEBP+n: Tham số
Do đó, giả sử chúng ta có thể ghi đè lên con trỏ EIP bằng dữ liệu trỏ đến địa chỉ của vùng chứa thực thi mà chúng ta muốn, điều gì sẽ xảy ra? Một ví dụ về tràn ngăn xếp và cách khai thác nó
Một ví dụ về tràn ngăn xếp và cách khai thác nó
Phần mềm chống tràn bộ đệm mình sử dụng ở đây là Chuyển đổi RM sang MP3 dễ dàng. Mọi người có thể tải về tại đây, Sau khi cài đặt:
Đây là phần mềm cho phép chuyển đổi từ các đoạn phim trực tuyến Realplayer sang Mp3 bằng cách tải và chọn một tập tin mà bạn muốn.
Xem thêm: Cách Dự Đoán Tương Lai Của Bạn Qua Những Bức Ảnh!, Dự Đoán Tương Lai
Tham khảo chi tiết tại đây vì Trường THCS Ngô Thì Nhậm không cho phép viết quá dài :(.
Kết quả là mình đã chèn code hiển thị cửa sổ hộp thoại với nội dung Hello World.
Hậu quả của việc tồn tại lỗ hổng tràn bộ đệmTiêm mã hệ thốngDDOS Leo thang đặc quyền….Cách khắc phục lỗ hổng tràn bộ đệm
Đối với một số ngôn ngữ lập trình như C:
Khai báo một vùng nhớ lớn gấp nhiều lần dữ liệu vào. Xử lý dây một cách an toàn. Tránh các lỗi phổ biến khi xử lý chuỗi như: Sao chép chuỗi không giới hạn, Lỗi kết thúc không có giá trị, Viết ngoài giới hạn mảng, Lỗi từng cái một, Vệ sinh dữ liệu không đúng cách Các chức năng nên sử dụng:
Hoặc đối với các hệ điều hành cũng cung cấp cơ chế bảo vệ bộ nhớ:
Ngẫu nhiên hóa không gian địa chỉ (ASLR): Di chuyển ngẫu nhiên xung quanh các vị trí không gian địa chỉ của vùng dữ liệu. Thông thường, các cuộc tấn công tràn bộ đệm cần biết mã thực thi được lưu trữ ở đâu và việc ngẫu nhiên hóa không gian địa chỉ khiến điều này gần như không thể. Ngăn chặn thực thi dữ liệu: Các vùng được gắn cờ ngẫu nhiên Một số vùng bộ nhớ không thể thực thi được hoặc không thể thực thi được, điều này ngăn mã chạy trong các vùng bị cấm. Bảo vệ ghi đè trình xử lý ngoại lệ có cấu trúc (SEHOP): Giúp ngăn chặn các cuộc tấn công mã độc từ Ngoại lệ có cấu trúc. Xử lý (SEH) — một hệ thống tích hợp để quản lý các ngoại lệ phần cứng và phần mềm. Do đó, ngăn kẻ tấn công không thể sử dụng khai thác ghi đè SHE. Ở cấp độ chức năng, ghi đè SHE đạt được bằng cách sử dụng tràn bộ đệm dựa trên ngăn xếp để ghi đè lên bản ghi thanh ghi ngoại lệ được lưu trữ trên luồng của ngăn xếp.
Xem thêm: Kiếm Tiền Từ Review Sản Phẩm
Dưới đây là một số lưu ý của tôi về vấn đề tràn bộ đệm. Cảm ơn giáo viên lập trình an toàn của tôi đã truyền cảm hứng cho tôi với những kiến thức bổ ích này.
Nhớ để nguồn bài viết này: Kỹ Thuật Tấn Công Buffer Overflow Là Gì ? Buffer Overflow Là Gì của website ngothinham.edu.vn
Chuyên mục: Là gì?
Danh mục Là gì?
What Does ” Ngoại Trừ Tiếng Anh Là Gì, Không Ngoại Trừ Tôi Dịch
C/I Là Gì, Nghĩa Của Từ C/I, Hóa Đơn Proforma & Commercial