1 Kẻ xâm nhập
3.8 Tràn bộ đệm
Tràn bộ đệm là cơ chế tấn công rất phổ biến bắt đầu từ 1988 xuất hiện sâu Morris đến Code Red, Slammer, Sasser và nhiều cái khác nữa. Các kỹ thuật phòng chống đều đã biết. Tuy nhiên vẫn cịn là vấn đề phải quan tâm vì di truyền từ các con rệp đã lây lan rộng rãi. Vì vẫn cịn các kỹ thuật lập trình khơng cẩn thận.
Cơ sở của việc tràn bộ nhớ: sinh bởi do lỗi lập trình, cho quá nhiều dữ liệu lưu trữ hơn khả năng cho phép trong bộ đệm kích thước cố định. Bộ đệm có thể trên ngăn xếp, đống, dữ liệu tổng thể. Viết đè các vị trí nhớ cận kề, làm hỏng dữ liệu của chương trình, truyền điều khiển khơng mong muốn, vi phạm truy cập bộ nhớ, thực hiện code của kẻ tấn cơng
Xét chương trình C trên. Ở đây có ba biến, thơng thường lưu trong vùng nhớ liền kề. Gọi chương trình con copy vào str1 dữ liệu Start. Sau đó đọc đầu vào sử dụng hàm gets lưu vào str2. Sau đó so sánh đầu vào với xâu Start. Nếu thành công valid = true. Vấn đề hàm thư viện gets của C không kiểm tra độ lớn dữ liệu đọc vào. Nếu nhiều hơn 7 ký tự nó địi hỏi bộ nhớ nhiều hơn. Khi đó dữ liệu thừa viết đè dữ liệu của biến kề, trong trường hợp này là str1. Giả sử xâu đầu vào là “EVILINPUTVALUE”, kết quả xâu Str1 bị viết đè với các ký tự “TVALUE”. Xâu str2 không chỉ sử dụng 8 ký tự của nó mà cịn thêm 7 ký tự từ str1. Biết cấu trúc trên, kẻ tấn cơng có thể thu xếp sao cho giá trị xâu Str1 vẫn bằng Str2. Chẳng hạn nếu nhập xâu đầu vào là “BADINPUTBADINPUT” thì trong phép so sánh kết quả vẫn đúng như trong lần chạy thứ ba trong ví dụ trên.