Buffer Overflow Là Gì

     

Buffer Overflow là gì?

Trước khi tìm hiểu Buffer Overflow là gì, ta cần biết được khái niệm về Buffer. Buffer (bộ đệm dữ liệu) là vùng lưu trữ dữ liệu tạm thời trong khi chờ để được chuyển đến vị trí khác. Buffer Overflow (hay Buffer Overrun) sẽ xảy ra khi khối lượng dữ liệu vượt quá khả năng lưu trữ của buffer. Do đó, khi chương trình cố gắng ghi dữ liệu vào trong buffer, nó sẽ ghi đè lên các bộ nhớ liền kề khác.

Bạn đang xem: Buffer overflow là gì


Lấy ví dụ, một buffer lưu trữ thông tin đăng nhập có thể được thiết kế sao cho input username và password là 8 byte. Do đó, với các transaction có input đến 10 byte, chương trình có thể ghi dữ liệu thừa (2 byte) vượt quá giới hạn của buffer.


Vậy ảnh hưởng của Buffer Overflow là gì? Hiện tượng Buffer Overflow có thể gây ra ảnh hưởng xấu đến tất cả các loại phần mềm. Nguyên nhân thường là do input không đúng định dạng, hoặc không gian lưu trữ không được phân bổ đủ cho buffer. Nếu transaction ghi đè lên các executable code (mã thực thi), chương trình có thể hoạt động không chính xác, đưa ra kết quả sai, crash. Bên cạnh đó còn có thể dẫn đến nhiều lỗi truy cập bộ nhớ khác.


*
*
*

Vậy cách chống Buffer Overflow là gì? Các developer có thể ngăn chặn lỗ hổng Buffer Overflow thông qua các biện pháp bảo mật với code. Hoặc đơn giản là sử dụng những ngôn ngữ có tích hợp khả năng bảo vệ.

Xem thêm: Chất Cách Điện Là Gì? Tìm Hiểu 3 Loại Vật Liệu Nào Là Vật Liệu Cách Điện Là Gì?

Bên cạnh đó, các hệ điều hành hiện đại đều có thêm khả năng bảo vệ runtime. Trong đó, ba biện pháp bảo vệ phổ biến nhất là:

Address Space Layout Randomization (ASLR) – di chuyển ngẫu nhiên xung quanh các không gian địa chỉ của vùng dữ liệu. Thông thường, các cuộc tấn công Buffer Overflow cần biét được vị trí của executable code, và việc ngẫu nhiên các không gian địa chỉ sẽ hoàn toàn vô hiệu hóa cách thức tấn công này.Bảo vệ việc thực thi dữ liệu Falg một số vùng bộ nhớ là non-executable (không thể thực thi) hoặc executable (có thể thực thi) để ngăn chặn các cuộc tấn công chạy mã ở trong vùng non-executable.Structured exception handler overwrite protection (SEHOP) – giúp ngăn chặn các code độc hại tấn công SEH (Ngoại lệ có cấu trúc) – một hệ thống được tích hợp sẵn để quản lý các ngoại lệ (exception) của phần cứng và phần mềm. Từ đó, ngăn chặn các hacker lợi dụng kỹ thuật khai thác ghi đè SEH. Ở cấp độ chức năng, việc ghi đè SEH có thể đạt được bằng cách sử dụng một stack-based Buffer Overflow dể ghi đè một bản ghi đăng ký ngoại lệ, được lưu trữ trong stack của thread.

Xem thêm: Đất Trồng Có Ba Thành Phần Chính Đó Là, Đất Trồng Gồm Những Thành Phần Nào

Dĩ nhiên, các biện pháp bảo mật về code hay hệ thống vẫn chưa hoàn toàn là đủ để ngăn chặn Buffer Overflow attack. Khi tổ chức phát hiện bất kỳ lỗ hổng Buffer Overflow nào, cần phải nhanh chóng vá các phần mềm bị ảnh hưởng. Đồng thời đảm bảo người dùng của phần mềm có thể truy cập được các bản vá đó.

Hy vọng sau bài viết này, các bạn có thể hiểu được Buffer Overflow là gì, ảnh hưởng của nó cũng như các cách có thể ngăn chặn được Buffer Overflow attack. Chúc các bạn thành công!