1. Address Space Layout Randomization (ASLR)
ASLR là tính năng bảo mật khiến vị trí dữ liệu của chương trình được sắp xếp một cách ngẫu nhiên trong bộ nhớ. Trước ASLR, vị trí dữ liệu của chương trình trong bộ nhớ có thể dự đoán được, làm các cuộc tấn công trên chương trình đơn giản hơn. Với ASLR, kẻ tấn công phải đoán đúng vị trí trong bộ nhớ khi cố gắng khai thác lỗ hổng trong chương trình. Dự đoán không chính xác có thể dẫn đến việc chương trình bị treo, do đó kẻ tấn công sẽ không thể thử lại.
Tính năng bảo mật này cũng được sử dụng trên các phiên bản Windows 32-bit và nhiều hệ điều hành khác. Tuy nhiên trên các phiên bản Windows 64 bit, ASLR mạnh hơn rất nhiều. Hệ thống 64-bit có không gian địa chỉ lớn hơn nhiều so với hệ thống 32-bit, do đó ASLR cũng hiệu quả hơn nhiều.
2. Data Execution Protection (DEP)
DEP cho phép hệ điều hành đánh dấu một số khu vực trên bộ nhớ dưới dạng “non-executable” (không được thực thi) bằng cách thiết lập “NX bit”. Vùng bộ nhớ này chỉ được phép lưu trữ dữ liệu chứ không thể thực thi các lệnh sử dụng.
Ví dụ, trên hệ thống không DEP kẻ tấn công có thể sử dụng một số loại buffer overflow (lỗi tràn bộ đệm) để viết mã vào vùng bộ nhớ của ứng dụng sau đó có thể được thực hiện. Với DEP, kẻ tấn công có thể viết mã vào vùng bộ nhớ của ứng dụng - nhưng khu vực này sẽ được đánh dấu là không thể thực thi không thể được thực hiện giúp ngăn chặn cuộc tấn công.
Trên hệ điều hành Windows 64-bit có DEP dựa trên phần cứng (nếu bạn có CPU hiện đại, các phiên bản Windows 32-bit cũng hỗ trợ DEP dựa trên phần cứng). Tuy nhiên, DEP luôn được kích hoạt đối với các chương trình 64-bit, trong khi theo mặc định, nó bị vô hiệu hóa đối với các chương trình 32-bit vì lý do tương thích.
Hộp thoại cấu hình DEP trong Windows chỉ áp dụng cho cho các ứng dụng, tiến trình 32-bit vì tài liệu của Microsoft cho biết, DEP luôn được sử dụng cho tất cả các tiến trình 64-bit.
No comments:
Post a Comment