Tràn bộ đệm

Một phần của tài liệu Giáo trình An toàn và bảo mật thông tin (Nghề: Công nghệ thông tin - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ (Trang 42 - 43)

1 Kẻ xâm nhập

3.8Trà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.

Một phần của tài liệu Giáo trình An toàn và bảo mật thông tin (Nghề: Công nghệ thông tin - Cao đẳng) - Trường CĐ Nghề Kỹ thuật Công nghệ (Trang 42 - 43)