NHẬN XÉT CỦA GIÁO VIÊN
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
..............................................................................................................................
2
MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN ......................................................................... 1
MỤC LỤC ........................................................................................................... 2
LỜI NÓI ĐẦU .................................................................................................... 3
1. Tổng quan về lỗi tràn bộ đệm..................... Error! Bookmark not defined.
2. Kỹ thuật tấn công lỗi tràn bộ đệm ................................................................ 9
2.1. Ví dụ ....................................................................................................... 9
2.2. Tràn bộ nhớ đệm trên stack .................................................................. 10
3. Phương pháp phòng chống tấn công tràn bộ đệm ...................................... 13
3.1. Lựa chọn ngôn ngữ lập trình ................................................................ 13
3.2. Sử dụng các thư viện an toàn................................................................ 15
3.3. Chống tràn bộ nhớ đệm trên stack ........................................................ 16
3.4. Bảo vệ không gian thực thi ................................................................... 16
3.5. Ngẫu nhiên hóa sơ đồ không gian địa chỉ ............................................ 17
3.6. Kiểm tra sâu đối với gói tin .................................................................. 17
Kết Luận ............................................................................................................ 19
3
LỜI NÓI ĐẦU
Trong các lĩnh vực an ninh máy tính lập trình, một lỗi tràn bộ nhớ
đệm hay gọi tắt là lỗi tràn bộ đệm là một lỗi lập trình có thể gây ra một ngoại lệ
truy nhập bộ nhớ máy tính và chương trình bị kết thúc, hoặc khi người dùng
ý phá hoại, họ có thể lợi dụng lỗi này để phá vỡ an ninh hệ thống.
Năm 1988, một sự cố máy tính đã thu hút schú ý của toàn thể cộng
đồng sử dụng mạng internet, đó sự ra đời của sâu internet (Internet Worm).
Con sâu này đã làm hơn 6000 máy chủ phải ngưng hoạt động bởi một lỗi ít
được biết đến là “tràn bộ đệm” (buffer overflow). Cho đến nay, lỗi tràn bộ đệm
vẫn tiếp tục được tìm thấy trong nhiều phần mềm trên nhiều hệ điều hành khác
nhau. Đó thực sự một nguy nghiêm trọng, một vấn đề đã tồn tại khá lâu
và cần được quan tâm một cách nghiêm túc.
Đa phần các lỗi tràn bộ đệm dẫn đến việc chiếm quyền điều khiển toàn
bộ trên hệ thống nên đây thực sự là một lỗi chết người. Tràn bộ đệm xảy ra trên
nhiều hệ điều hành, đặc biệt là trên UNIX và Windows, và trên nhiều ứng dụng
khác nhau như web, mail, ftp, dns, telnet, ssh, database, ... Tháng 8-2001, sâu
máy tính Code Red đã khiến thế giới thiệt hại hàng tỉ USD cũng bắt nguồn từ
một lỗ hổng tràn bộ đệm trong phần mềm máy chủ Microsoft Internet
Information Server (IIS).
Vậy thế nào tràn bộ đệm? Tại sao xảy ra tràn bộ đệm? Tại sao tràn bộ
đệm tạo ra lỗ hổng bảo mật? Làm thế nào đngăn chặn lỗi tràn bộ đệm? Đó
do chúng em nghiên cứu đề i Nghiên cứu xây dựng phương pháp
chống tấn công tràn stack.
4
Trong quá trình thực hiện đề tài nhóm em không khỏi mắc phải thiếu sót.
Mong thầy đóng góp ý kiến để chúng em có thể hoàn thiện tốt hơn trong những
đề tài sau này.
Em xin chân thành cảm ơn!
Sinh viên thực hiện:
Vũ Hoàng Đạt
Lê Văn Phương
Lê Thị Linh
5
CHƯƠNG I. TỔNG QUAN VỀ LỖI TRÀN BỘ ĐỆM
1.1. Tổ chức bộ nhớ cho các tiến trình
Bộ nhớ được phân thành 2 phần là:
user mode
kernel mode
Mặc định 2 GB của không gian nhớ ảo được cung cấp cho user
mode, vùng địa chỉ 0x00000000 0x7fffffff, phần còn lại,
0x80000000 0xBfffffff được dành cho kernel mode.
1.2. Tổ chức bộ nhớ của một tiến trình
Mỗi tiến trình thực thi đều được hệ điều hành cấp cho một không
gian bộ nhớ ảo (logic) giống nhau. Không gian nhớ này gồm 3 vùng:
Vùng text
Vùng data