Lỗi do tràn bộ nhớ đệm và cách khắc phục

Về cơ bản, tràn bộ nhớ đệm thường xuất phát từ một nguyên nhân duy nhất. Đó là do người dùng gửi quá nhiều dữ liệu tới một chương trình và một phần của dữ liệu này buộc phải lưu trữ ra ngoài bộ nhớ mà lập trình viên đã cấp cho chương trình đó. | Lỗi do tràn bộ nhớ đệm và cách khắc phục Về cơ bản tràn bộ nhớ đệm thường xuất phát từ một nguyên nhân duy nhất. Đó là do người dùng gửi quá nhiều dữ liệu tới một chương trình và một phần của dữ liệu này buộc phải lưu trữ ra ngoài bộ nhớ mà lập trình viên đã cấp cho chương trình đó. Quá trình tràn bộ nhớ đệm có thể gây ra nhiều vấn đề trong đó có một vấn đề mà chúng ta cần quan tâm đó là khi bộ nhớ đệm lưu trữ dữ liệu tới một mức độ nhất định nào đó thì tin tặc có thể chạy các đoạn mã chương trình trên hệ thống. Trong bài viết này chúng ta sẽ tìm hiểu một tình huống tràn bộ nhớ đệm mà tin tặc có thể khai thác để chạy mã trên hệ thống. Sau đó chúng ta sẽ tìm hiểu Data Execution Preventions DEP một tính năng được tích hợp trong hệ điều hành Windows có chức năng ngăn tràn bộ nhớ đệm. Nhận biết hiện tượng tràn bộ nhớ đệm Để có thể hiểu rõ về hiện tượng tràn bộ nhớ đệm chúng ta phải nắm vững ngôn ngữ lập trình cao cấp như C hay C cũng như có một vốn kiến thức sâu về quá trình vận hành của các ngăn xếp bộ nhớ. Khi viết một chương trình một trong những điều mà lập trình viên cần phải tính toán cẩn trọng đó là kích thước vùng trống của bộ đệm được phân bổ cho những hàm cụ thể. Bộ nhớ đệm là một vùng trống liền kề của bộ nhớ mà một chương trình có thể sử dụng để lưu trữ dữ liệu mà các chức năng khác có thể sử dụng. Chúng ta hãy xem xét đoan mã ví dụ sau void main ỉ char bufferA 5Ữ Hchar buffers 16 ỉ printf What is your name nnì gets bufferA strcpy bufferB bufferA return Hình 1 Hàm A C rất dễ bị tấn công khi tràn bộ nhớ đệm. Hàm này rất rõ ràng bắt đầu bằng việc khai bào hai biến bufferA và bufferB có kích thước lần lượt là 50 và 16. Chương trình này hiển thị một câu hỏi tới người dùng yêu cầu nhập tên và sử dụng hàm gets đễn nhận thông tin nhập vào. Sau đó dữ liệu mà người dùng cung cấp được copy từ bufferA sang tham số bộ nhớ đệm và hàm này được hoàn thành. Với một chương trình đơn giản như vậy có thể hơi quá khi cho rằng nó có thể bị tác động bởi mọi cuộc tấn công. Tuy .

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.