TẤN CÔNG BỘ ĐỆM [BUFFER OVERFLOW]
- Buffer Overflow là gì?
1. Buffer
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.
2. Buffer Overflow
Lỗi tràn bộ đệm [Buffer Overflow] là một điều kiện bất thường khi tiến
trình lưu trữ dữ liệu vượt ra ngoài biên của bộ nhớ đệm có chiều dài cố định. Kết
quả là dữ liệu có thể đè lên các bộ nhớ liền kề. Dữ liệu bị ghi đè có thể bao gồm
các bộ nhớ đệm khác, các biến và dữ liệu điều khiển luồng chảy của cả chương
trình [program flow control].
- VD: Một chương trình cần nhập dữ liệu của người dùng với kích thước tối đa
256 bytes. Hệ điều hành sẽ cấp phát một vùng trong bộ nhớ máy tính [đó chính
là một bộ đệm – buffer] dành cho chương trình để lưu trữ 256 bytes hoặc ít hơn.
Nếu người dùng nhập vào quá 256 bytes và chương trình không kiểm tra điều
này, tràn bộ đệm sẽ xảy ra.
3. Làm thế nào những kẻ tấn công khai thác lỗi Buffer Overflow?
Các hacker có thể cố tình đưa một input vào chương trình, làm cho
chương trình lưu trữ input đó vào một buffer không đủ bộ nhớ. Từ đó ghi đè lên
các phần bộ nhớ được kết nối với buffer.
Nếu hacker biết cách bố trí bộ nhớ của chương trình, chúng có thể cố tình
gửi các input mà buffer không thể lưu trữ. Từ đó ghi đè lên các executable code
bằng code của chúng. Chẳng hạn, hacker có thể ghi đè lên một con trỏ [một đối