Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do, trong đó có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thông không hay biết những cuộc
Trang 1LỜI MỞ ĐẦU
Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức cá nhân đều có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến Vấn đề nảy sinh là khi phạm vi ứng dụng của các dịch vụ trên Internet càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau
Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên Internet,
số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập đến nhiều vấn đề bảo đảm và an toàn dữ liệu cho các máy tính được kết nối vào mạng Internet
Những vụ tấn công nhằm vào tất cả các máy tính có mặt trên Internet, các máy tính của công ty lớn như AT&T, IBM, các trường đại học, các cơ quan nhà nước, các tổ chức quan sự, nhà băng Một số vụ tấn công có quy mô khổng lồ (có tới 100.000 máy tính bị tấn công ) Hơn nữa, nhưng con số này chỉ là phần nổi của tảng băng Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do, trong đó có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thông không hay biết những cuộc tấn công đang nhằm vào hệ thông của họ
Với những công cụ tự động tìm lỗi hổng tuy giúp rất nhiều cho những nhà lập trình web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ web đang phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu tố tốc độ ) nên dẫn đến nhiều khuyết điểm mới phát sinh Sự tấn công không nằm trong khuổn khổ vài
kĩ thuật đã phát hiện, mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập trình
Đồ án được thực hiện với mục đích tìm hiểu, phân tích kỹ thuật mà hacker thường hay sự dụng đó là kỹ thuật Buffer Overflow
MỤC LỤC
Trang 2LỜI MỞ ĐẦU .Error: Reference source not found
DANH MỤC HÌNH ẢNH .Error: Reference source not found
DANH MỤC CÁC TỪ VIẾT TẮT .Error: Reference source not found
Trang 3DANH MỤC HÌNH ẢNH
CHƯƠNG 1:
CHƯƠNG 2:
Trang 4DANH MỤC CÁC TỪ VIẾT TẮT
CERT Computer Emegency
Response Team Đội cấp cứu máy tính
BKIS Bach Khoa Internet
Trang 5CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ AN NINH MẠNG
1.2 TÌNH HÌNH AN NINH MẠNG THẾ GIỚI:
Theo số liệu của CERT (Computer Emegency Response Team - "Đội cấp cứu máy tính"), số lượng các vụ tấn công trên Internet được thông báo cho tổ chức này
là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993, và
2241 vào năm 1994, và năm 2001 là 5315 vụ
Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, các máy tính của tất cả các công ty lớn như AT&T, IBM, các trường đại học, các cơ quan nhà nước, các tổ chức quân sự, nhà băng Một số vụ tấn công có quy mô khổng lồ (có tới 100.000 máy tính bị tấn công) Hơn nữa, những con số này chỉ là phần nổi của tảng băng Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do, trong đó có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thống không hay biết những cuộc tấn công đang nhằm vào hệ thống của họ
Điển hình là cuộc tấn công vào phần mềm thương mại của IBM tháng 3/2001, hai hacker đã tìm thấy lỗ hổng trên ứng dụng mà bất cứ ai với một trình duyệt Web cũng có thể lấy tài khoản của người dùng, thậm chí cả người quản trị
Không chỉ số lượng các cuộc tấn công tăng lên nhanh chóng, mà các phương pháp tấn công ngày càng tinh vi và có tổ chức Mặt khác, việc quản trị các hệ thống mạng đòi hỏi nhà quản trị hệ thống có kiến thức và kinh nghiệm về hệ thống mạng chắc chắn, do đó sự yếu kém trong quản lý sẽ tạo nhiều điều kiện cho các hacker khai thác
Cũng theo CERT, những cuộc tấn công thời kỳ 1988-1989 chủ yếu là đoán tên người sử dụng-mật khẩu (UserID/password) hoặc sử dụng một số lỗi của các chương trình và hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ, tuy nhiên các cuộc tấn công vào thời gian gần đây còn bao gồm cả các thao tác như giả mạo địa chỉ IP, theo dõi thông tin truyền qua mạng, chiếm các phiên làm việc từ xa (telnet hoặc rlogin), cài trojan hay worm để kiểm soát hay điều khiển máy tính…vì
Trang 6thế, nhu cầu bảo vệ thông tin trên Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin người dùng và bảo vệ hệ thống.
Khi nói đến vấn đề bảo mật, hầu hết các chuyên gia bảo mật đều chú trọng đến
sự an toàn của hệ thống mạng và hệ điều hành Để bảo vệ cho hệ thống, phương pháp thường được chọn là sử dụng firewall Tuy nhiên, theo tuyên bố của CSI/FBI: 78% nơi bị hại có sử dụng firewall và 59% thì bị tấn công thông qua Internet, cụ thể hơn là theo báo cáo của CSI/FBI Computer Crime và Security Survey thì tổng
số thiệt hại do những ứng dụng Web bị tấn công từ năm 1997 đến năm 2000 là 626 triệu đôla Mỹ
1.2 TÌNH HÌNH AN NINH MẠNG TẠI VIỆT NAM:
Khi tốc độ ứng dụng công nghệ thông tin và phổ cập Internet được đẩy nhanh, đời sống thực ngày càng gần như phụ thuộc vào đời sống ảo trên mạng thì vấn đề
an ninh mạng càng cần được coi trọng và đặt ở tầm an ninh quốc gia
Môi trường internet tại Việt Nam hiện có nhiều yếu tố gây mất an toàn như không có cơ chế định danh người dùng, khó kiểm soát các giao tiếp và thiếu sự phối hợp, giám sát giữa các tổ chức quản lý internet Điều này dẫn tới sự bùng nổ của các hành vi: lấy cắp tài khoản, viết và phát tán virus máy tính, tấn công website…, mang lại nhiều nguy cơ tiềm tàng cho an ninh mạng
1.2.0 Thiếu nhận thức, nhân lực và đầu tư:
An ninh mạng là một vấn đề mới đối với đa số người sử dụng máy tính Những công ty lập trình website cũng chưa ý thức đầy đủ về vấn đề này Ở công ty nước ngoài, mỗi lập trình viên sau khi tuyển dụng phải qua một khoá đào tạo lập trình đặc biệt về an ninh mạng Tìm được công ty thiết kế website ở Việt Nam làm điều này rất khó Việc đầu tư thời gian và công sức vào bảo mật có thể làm chậm tiến độ triển khai dự án, hiệu quả lại khó kiểm chứng Tuy đã được các chuyên gia máy tính liên tục cảnh báo nhưng nhận thức về nguy cơ, tính rủi ro và hậu quả của tình trạng mất an ninh mạng vẫn chưa được quan tâm tìm hiểu đúng mức Tình trạng lơ là, mất cảnh giác đối với nguy cơ virus tấn công các trang web xảy ra khá
Trang 7phổ biến trong giới quản trị website, thậm chí ngay cả đối với website của các doanh nghiệp CNTT
Rất nhiều website tồn tại các lỗ hổng có thể trở thành mục tiêu cho tin tặc, trong đó có những website có nội dung hết sức quan trọng liên quan đến chính phủ điện tử, thương mại điện tử, doanh nghiệp điện tử… Theo thống kê của Trung tâm
An ninh mạng ĐHBK Hà Nội (BKIS) thì có khoảng 400 website luôn đặt trong tình trạng nguy hiểm, trong đó có website của các cơ quan nhà nước, các công ty và ngân hàng Trung bình mỗi tháng, trung tâm BKIS phát hiện trên dưới hai chục trang web bị hacker tấn công, trong đó có cả trang web của những công ty tên tuổi như Viettel, VDC hay MobiFone Bên cạnh đó, các doanh nghiệp đang phải đương đầu với sự thiếu hụt về nhân lực CNTT và hiểu biết về tội phạm mạng
Hiện nay, phần lớn các doanh nghiệp Việt Nam chưa có sự đầu tư đúng mức
về công nghệ bảo mật cũng như về con người do chi phí cho lĩnh vực này khá cao BKIS cho biết, các lổ hổng bảo mật trên các trang web của Việt Nam phần lớn là
do các công ty viết phần mềm chưa quan tâm đến an toàn hệ thống và đầu tư cho an ninh mạng chưa đủ ngưỡng Người quản trị mạng chưa làm tốt công việc của mình: đặt mật khẩu yếu, mở nhiều dịch vụ không cần thiết; các doanh nghiệp và tổ chức ở Việt Nam thường đầu tư dưới 10% chi phí CNTT cho bảo mật - một tỷ lệ dưới mức đảm bảo an toàn cho hệ thống thông tin
1.2.0 Tình hình tội phạm:
“An toàn mạng” ngày nay không chỉ trong phạm vi khái niệm an ninh mạng (network security) vốn dành cho những đối tượng chuyên nghiệp mà quan trọng hơn là bảo vệ các ứng dụng trong hệ thống của doanh nghiệp Phần lớn các doanh nghiệp Việt Nam hiện chưa có hệ thống bảo mật dữ liệu chuyên nghiệp mà chủ yếu chỉ trang bị vài hệ thống bảo vệ: tường lửa, phần mềm chống virus Các chuyên gia nhận định rằng: tình hình an ninh trên môi trường mạng ở Việt Nam đang ở tình thế rất đáng ngại khi số lượng và mức độ các loại hình tội phạm ngày càng gia tăng
Trang 8Có thể chia tội phạm mạng ở Việt Nam thành 2 hai nhóm: tội phạm tấn công trang web, các cơ sở dữ liệu và phát tán virus; và tội phạm lợi dụng môi trường mạng để ăn cắp, tống tiền và tổ chức hoạt động phạm tội, như đánh bạc qua mạng,
ăn cắp và làm giả thẻ tín dụng, dùng internet để trộm cước viễn thông Cả hai nhóm tội phạm mạng này đều đang tăng cả về lượng và mức độ tác động Thống kê của BKIS cho thấy, đầu năm 2008, số lượng virus mới tăng hơn rất nhiều so với trước Tội phạm mạng ở Việt Nam hiện đã chuyển sang mục đích kiếm tiền chứ không còn là thoả mãn niềm ham mê ghi điểm “thành tích” như trước
Về mức độ tinh vi, các phương thức tội phạm mạng ở Việt Nam đang dần tiếp cận với thế giới Thế giới có tội phạm gì liên quan đến môi trường mạng thì cũng nhanh chóng có ở Việt Nam Mới đây, đơn vị chống tội phạm công nghệ cao (C15) thuộc Tổng cục Cảnh sát đã phối hợp với cơ quan chống tội phạm mạng của Anh bắt được một nhóm hacker Việt Nam ăn cắp mật khẩu thẻ tín dụng bán cho một tổ chức tội phạm của Anh Trước đó, C15 đã bắt được một đường dây hơn 10 sinh viên ăn cắp thẻ tín dụng và làm giả thẻ tín dụng để rút tiền
Trong khi đó, yếu tố chính góp phần làm cho tình hình an ninh mạng ở Việt Nam thêm nghiêm trọng chính là hành lang pháp lý chưa đủ mạnh, hình phạt dành cho tội phạm mạng còn nhẹ, chưa tương xứng với thiệt hại do hành vi phạm tội gây
ra nên chưa đạt mục đích trừng trị người phạm tội, giáo dục họ trở thành người có ích cho xã hội và giáo dục người khác tôn trọng pháp luật, đấu tranh phòng, chống tội phạm Một bất cập nữa là các quy định liên quan đến tội phạm mạng quá chung chung, không áp dụng được vào các hành vi cụ thể, nhất là các quy định về tội phạm máy tính của bộ luật Hình sự Các quy định thiếu rõ ràng làm cho các cơ quan lúng túng trong việc xử lý
1.2.0 Cần hoàn thiện qui định của pháp luật:
Nước ta nên theo xu hướng của thế giới khi quy định về những hành vi liên quan tới tội phạm mạng: các quy định nên trung lập với công nghệ để có thể dễ dàng áp dụng và ban hành các văn bản dưới luật điều chỉnh những hành vi này Tội
Trang 9phạm mạng có tốc độ phát triển nhanh như tốc độ phát triển của CNTT Các quy định của pháp luật luôn lạc hậu hơn so với những thay đổi trong môi trường CNTT Mặc dù các nhà làm luật đã sửa đổi, bổ sung các quy định pháp luật, nhưng việc sửa đổi các quy định của luật nhất là Bộ luật Hình sự, Bộ luật Tố tụng Hình sự không thể làm trong một sớm một chiều Với những văn bản hướng dẫn, việc điều chỉnh sẽ được thực hiện dễ dàng hơn
1.2.0 Nâng cao nhận thức về an ninh mạng:
Hiện nay, nhận thức về nguy cơ, tính rủi ro và hậu quả của tình trạng mất an ninh mạng trong xã hội ta chưa cao Nhiều người vẫn coi hành vi xâm phạm an ninh mạng chỉ là trò đùa ác ý, trong khi các hành vi này cần phải bị lên án và xử lý nghiêm minh Không chỉ trên phương diện công nghệ mà ở cả góc độ luật pháp, vấn đề phòng chống tội phạm tin học cũng chưa đặt đúng tầm Những gì đã diễn ra cho thấy hiện nay chưa có biện pháp hữu hiệu đảm bảo an ninh mạng tại Việt Nam.Tiện ích của mạng Internet thì đã rõ nhưng đi cùng với đó, các vấn đề tiêu cực cũng liên tục phát sinh Theo quy luật, người dân ngày càng quan tâm hơn đến an ninh mạng Vấn đề càng lúc càng nóng bỏng khi nguy cơ mất an toàn mạng hiện hữu hơn bao giờ hết Nhiệm vụ của mỗi cơ quan chức năng và người dân lúc này là phải hiểu rõ lỗ hổng trên môi trường mạng để bịt kín, không để tội phạm mạng có đất hoạt động
1.2 CÁC KHÁI NIỆM VÀ THUẬT NGỮ:
Họ sử dụng kiến thức của mình trong việc tìm tòi và khai thác các lỗ hổng của
hệ thống mạng Một số hacker chỉ dừng lại việc phát hiện và thông báo lỗi tìm được cho những nhà bảo mật hay người phát triển chương trình, họ được xem như
Trang 10là WhiteHat (Hacker mũ trắng) Một số hacker dựa vào những lỗ hổng thực hiện việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, những người này bị xem như là BlackHat (Hacker mũ đen).
1.3.0 HTTP header:
HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ gửi cho nhau Những thông tin trình khách gửi cho trình chủ được gọi là HTTP requests (yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời) Thông thường, một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị Một số tham số có thể được dùng trong cả header yêu cầu và header trả lời, còn số khác thì chỉ đuợc dùng riêng trong từng loại
1.3.0 Session:
HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTP không lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ Sự thiếu sót này gây khó khăn cho một số ứng dụng Web, bởi vì trình chủ không biết được trước đó trình duyệt đã có những trạng thái nào Vì thế, để giải quyết vấn đề này, ứng dụng Web đưa ra một khái niệm phiên làm việc (Session) Còn SessionID là một chuỗi
để chứng thực phiên làm việc Một số trình chủ sẽ cung cấp một SessionID cho người dùng khi họ xem trang web trên trình chủ
Để duy trì phiên làm việc thì sessionID thường được lưu vào :
Biến trên URL
Biến ẩn form
Cookie
Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này được cấu hình qui định tại trình chủ hoặc bởi ứng dụng thực thi Trình chủ sẽ tự động giải phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống
1.3.0 Cookie:
Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và trình duyệt của người dùng
Trang 11Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được ứng dụng tạo ra để lưu trữ/truy tìm/nhận biết các thông tin về người dùng đã ghé thăm trang Web và những vùng mà họ đi qua trong trang Những thông tin này có thể bao gồm tên/định danh người dùng, mật khẩu, sở thích, thói quen cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải lúc nào trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện lưu trữ đó hay không.
Ở những lần truy cập sau đến trang Web đó, ứng dụng có thể dùng lại những thông tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo Messenger! ) mà người dùng không phải làm lại thao tác đăng nhập hay phải cung cấp lại các thông tin khác
Cookie được phân làm 2 loại secure/non-secure và persistent/non-persistent do
Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và sẽ
bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web
Secure cookies chỉ có thể được gửi thông qua HTTPS (SSL)
Non-Secure cookie có thể được gửi bằng cả hai giao thức HTTPS hay HTTP Thực chất là đối với secure cookie thì trình chủ sẽ cung cấp chế độ truyền bảo mật
Trang 12Hình 1.1: Các thành phần của một cookie
Domain: tên miền của trang Web đã tạo cookie (trong ví dụ trên là www.redhat.com)
Flag: mang giá trị TRUE/FALSE xác định các máy khác với cùng tên miền
có được truy xuất đến cookie hay không
Path: Phạm vi các địa chỉ có thể truy xuất cookie.Sercure: Mang giá trị TRUE/FALSE xác định đây là một secure cookie hay không nghĩa là kết nối
có sử dụng SSL hay không
Expiration: Thời gian hết hạn của cookie, được tính bằng giây kể từ 00:00:00 giờ GMT ngày 01/01/1970 Nếu giá trị này không được thiết lập thì trình duyệt sẽ hiểu đây là non-persistent cookie và chỉ lưu trong bộ nhớ RAM và
sẽ xóa nó khi trình duyệt bị đóng
Name: tên biến (trong trường hợp này là Apache)
Value: Với cookie được tạo ở trên thì giá trị của Apache
54.3.40.151.16018996349247480 và hết hạn là 27/07/2006, của tên miền
Trang 13Các cookies của IE được lưu thành nhiều tập tin, mỗi tập tin là một cookie và được đặt trong C:\Documents and Setting\[username]\Cookies (Win2000), đối với win9x, thư mục cookies nằm trong thư mục C:\Windows\cookies.
Kích thước tối đa của cookie là 4kb Số cookie tối đa cho một tên miền là 20 cookie.Cookie bị hủy ngay khi đóng trình duyệt gọi là “session cookie”
Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặt biệt hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host Những chương trình client của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp
Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng như trả lời của server đến client Vì vậy proxy server giống cầu nối trung gian giữa server và client
Trang 14CHƯƠNG 2: GIỚI THIỆU VỀ KỸ THUẬT BUFFER OVERFLOW
Chương trình khi nạp trong bộ nhớ:
Khi những tiến trình được nạp đến bộ nhớ, chúng chia thành 6 phân đoạn như sau:
Hình 1.2: Các phân đoạn chương trình thực thi
text: phân đoạn này tương ứng là phần của file thực thi nhị phân Nó chứa các chỉ thị lệnh (mã máy) để thực hiện các tác vụ của chương trình Phân đoạn này được đánh dấu là chỉ đọc và sẽ gây ra lỗi nếu như ghi trên phân đoạn này Kích thước là cố định tại lúc thực thi khi tiến trình lần đầu tiên được nạp
data: là phân đoạn được sử dụng để lưu trữ các biến toàn cục và có khởi tạo giá trị ban đầu như là: int a=0; kích thước này cũng cố định tại lúc thực thi chương trình
Trang 15 bss (Below stack section) là được sử dụng để lưu trữ các biến toàn cục nhưng không có khởi tạo giá trị ban đâu như là: int a Kích thước của phân đoạn này cũng cố định lúc thực thi chương trình.
Heap: Phân đoạn này được sử dụng để cấp phát các biến động và phát triển
từ vùng địa chỉ thấp đến vùng địa chỉ cao trong bộ nhớ Trong ngôn ngữ C thì việc cấp phát và giải phóng được thực hiện qua hai hàm malloc() và
free()
Ví dụ: int i = malloc(sizeof (int));
Stack: phân đoạn stack có tác dụng giữ những lời gọi hàm trong thủ tục đệ quy và phát triển theo địa chỉ vùng nhớ cao đến địa chỉ vùng nhớ thấp trên hầu hết các hệ thống
Phân đoạn biến môi trường và đối số: phân đoạn này lưu trữ một bản sao chép các biến cấp độ hệ thống mà có thể được yêu cầu bởi tiến trình trung quá trình thực thi Phân đoạn này có khả năng ghi được
Trong các ngôn ngữ lập trình thì ngôn ngữ C dễ sinh ra các lỗi tràn nhớ mà attacker có thể khai thác Trong ngôn ngữ C, các chuỗi (string) hay các buffer được thể hiện như sau: Con trỏ (pointer) sẽ chỉ trỏ vào byte đầu tiên của chuỗi hay buffer đó,và chúng ta xác định được kết điểm kết thúc khi con trỏ trỏ đến 1 byte null → không xác định độ dài của đối tượng nhập vào → có thể copy 1 buffer có độ dài lớn vào 1 buffer có độ dài nhỏ hơn → gây tràn bộ nhớ đệm (buffer overflow)
Ví dụ một lỗi đơn giản:
Trang 16printf(“% \n”,target);
return 0;
}
2.3 LỖI BUFFER OVERFLOW VÀ NGUYÊN NHÂN GÂY LỖI:
Thông thường có 2 cách khai thác lỗi buffer overflow mà attacker có thể sử dụng:
Khai thác dựa vào các lỗ hỏng phần mền thông qua ngôn ngữ lập trình (phần mềm viết bằng ngôn ngữ C)
Khai thác các trang web có tương tác người dùng nhưng không ràng buộc dữ liệu nhập vào như các trường username, password
Nguyên nhân gây ra các lỗi buffer overflow của các chương trình và ứng dụng:
Phương thức kiểm tra biên (boundary) không được thực hiện đầy đủ, hoặc là được bỏ qua
Các ngôn ngữ lập trình, như là ngôn ngữ C, bản thân nó đã tiềm ẩn các lỗi
mà hacker có thể khai thác Các phương thức strcat(), strcpy(), sprintf(), bcopy(), gets(), và canf() trong ngôn ngữ C có thể được khai thác vì các hàm này không kiểm tra xem những buffer được cấp phát trên stack có kích thước lớn hơn dữ liệu được copy vào buffer hay không
Những chương trình hoặc ứng dụng được lập trình không tốt khi tạo ra nó (khả năng lập trình kém)
Một lỗi buffer overflow xuất hiện khi buffer cố gắng cấp phát 1 không gian lưu trữ có dữ liệu lớn hơn khả năng lưu trữ của nó
Có 2 kiểu Buffer Overflow chính:
Stack overflow
Heap overflow
Stack (nơi lưu trữ tĩnh của không gian bộ nhớ) và Heap (nơi lưu trữ động của
không gian bộ nhớ, được sinh ra khi chạy một chương trình) là địa điểm lưu trữ
Trang 17cung cấp cho các biến khi chạy một chương trình Biến được lưu trữ trong stack hoặc heap cho đến khi chương trình có nhu cầu sử dụng.
2.3 STACK OVERFLOW:
2.3.0 Định nghĩa:
Stack là một kiểu cấu trúc dữ liệu hoạt động theo cơ chế LIFO (last in first out) được máy tính sử dụng để truyền các đối số vào các hàm để tham chiếu đến các biến cục bộ
Stack sẽ lưu giữ tất cả các thông tin mà hàm cần Stack được khởi tạo khi bắt đầu của một hàm và được “phóng thích” khi hàm kết thúc
Stack overflow xuất hiện khi buffer tràn trong stack space Đoạn code độc hại sẽ được push vào stack
Lỗi tràn nhớ có thể viết lại giá trị của return pointer, vì thế hacker có thể điều khiển con trỏ tới các đoạn code độc hại mà họ muốn thực thi
Hình 2.1: Stack
2.3.0 Mục đích chính của Stack buffer overflow:
Ghi đè một biến địa phương nằm gần bộ nhớ đệm trong stack đê thay đổi hành
vi của chương trình nhằm phục vụ cho ý đồ của hacker
Trang 18Ghi đè địa chỉ trả về trong khung stack (stack frame) Khi hàm trả về thưc thi
sẽ được tiếp tục tại địa chỉ mà hacker đã chỉ rõ, thường là tại một bộ đệm chứa dữ liệu vào của người dùng
Ví dụ:
Hình 2.2: Ví dụ Stack Overflow
Hình 2.3: Stack khi bị tấn công bởi Atacker
Trang 19Trong cách tấn công heap overflow, attacker làm tràn bộ nhớ sẽ có thể
overwrite các dynamic variables, vì thế có thể dẫn đến các hiệu ứng không mong muốn Trong hầu hết các môi trường ứng dụng, việc này có thể giúp attacker có thể điều khiển các thực thi của chương trình
Ví dụ: