Có rất nhiều cách để khai thác các vấn đề tràn bộ đệm tiềm năng. Trong ví dụ này, chúng tôi xem xét khả năng mà chương trình bị tấn công - mã thể hiện trong hình 15,2 - chạy với quyền truy cập hệ thống. Tuy nhiên,
đoạn mã mà chạy một lần giá trị của địa chỉ trở lại đã được sửa đổi có thể thực hiện bất kỳ loại hành động độc hại, chẳng hạn như xóa các tập tin, mở cổng mạng để khai thác hơn nữa, và như vậy.
ví dụ tấn công tràn bộ đệm này cho thấy đáng kể kiến thức
và kỹ năng lập trình cần thiết để nhận ra đang khai thác và sau đó
để khai thác nó. Thật không may, nó không mất lập trình tuyệt vời để khởi động
các cuộc tấn công an ninh. Thay vào đó, một cracker có thể xác định lỗi và sau đó viết một
khai thác. Bất cứ ai có kỹ năng máy tính thô sơ và truy cập vào khai thác -
một cái gọi là script kiddie - sau đó có thể cố gắng để khởi động các cuộc tấn công vào các hệ thống mục tiêu.
Cuộc tấn công tràn bộ đệm đặc biệt nguy hại vì nó có thể chạy
giữa các hệ thống và có thể đi du lịch trên truyền thông cho phép kênh. Như
các cuộc tấn công có thể xảy ra trong giao thức dự kiến sẽ được sử dụng để giao tiếp
với các máy tính mục tiêu, và do đó họ có thể được khó khăn để phát hiện và ngăn chặn.
Họ thậm chí có thể bỏ qua sự an toàn nhất bởi tường lửa (Mục 15.7).
Một giải pháp cho vấn đề này là cho CPU để có một tính năng không cho phép
thực thi mã trong một phần ngăn xếp bộ nhớ. Phiên bản gần đây của Sun SPARC
con chip bao gồm thiết lập này, và các phiên bản gần đây của Solaris kích hoạt nó. Sự trở lại
địa chỉ của các thói quen tràn vẫn có thể được sửa đổi, nhưng khi trở lại
địa chỉ nằm trong ngăn xếp và mã có nỗ lực để thực hiện, một ngoại lệ
. được tạo ra, và chương trình phải dừng lại với một lỗi
phiên bản gần đây của AMD và Intel x86 chip bao gồm các tính năng NX để ngăn chặn
kiểu tấn công này. Việc sử dụng các tính năng được hỗ trợ trong một số hoạt động x86
hệ thống, bao gồm cả Linux và Windows XP SP2. Việc thực hiện phần cứng
liên quan đến việc sử dụng một chút mới trong bảng trang của CPU. Bit này đánh dấu
trang liên quan như nonexecutable, để hướng dẫn không thể đọc được từ nó
và thực hiện. Như tính năng này trở nên phổ biến hơn, các cuộc tấn công tràn bộ đệm
rất nhiều nên giảm bớt.
đang được dịch, vui lòng đợi..
