Chương 1 TỔNG QUAN VỀ AN NINH TRỰC TUYẾN 1. An ninh trực tuyến Ngày nay, khi Internet ngày càng phát triển, việc tiếp cận đến các dịch vụ trực tuyến ngày càng dễ dàng hơn.Cùng với sự phát triển đó là sự xuất hiện của hàng loạt các website thương mại điện tử, thanh toán trực tuyến, các mạng xã hội, các trò chơi trực tuyến, vv….Việc đảm bảo an ninh, an toàn thông tin cho các giao dịch này là hết sức quan trọng. Thống kê an ninh cho thấy sự quan tâm của tin tặc đối với các hình thức giao dịch trực tuyến này. Cụ thể là cùng với sự tăng lên của số lượng các dịch vụ thanh toán trực tuyến, thì số lỗi bảo mật được phát hiện trên các website đó ngày càng tăng.
Đặc biệt, người quản trị website cũng không nhận thấy các lỗi bảo mật này. Đến khi phát hiện được, thì tác hại là không nhỏ. Các lỗi bảo mật liên quan đến các dịch vụ trực tuyến thường liên quan đến các ứng dụng web, công cụ dùng để triển khai thanh toán điện tử. Lý do là những lập trình viên thiết kế các ứng dụng web này chưa quan tâm đúng mức đến việc đảm bảo an ninh cho các giao dịch điện tử, hoặc có thể họ chưa được đầu tư, đào tạo bài bản cho những vấn đề này.
Chính vì thế, mặc dù có quan tâm, rà soát các chương trình, tuy nhiên vẫn không thể tránh khỏi một ứng dụng web dính các lỗi bảo mật. Theo thống kê của BKAV (bkav.vn) trong năm 2012 có khoảng hơn 2203 website của các doanh nghiệp và cơ quan Việt Nam bị tấn công, lỗi phổ biến là khai thác lỗ hổng trên các hệ thống mạng. Cũng theo thống kê này thì số lượng website bị lỗi hầu như không giảm mà đang có chiều hướng tăng lên. Thực trạng cho thấy, an ninh mạng, an ninh trực tuyến vẫn chưa được quan tâm đúng mức tại các cơ quan, doanh nghiệp, hầu hết các cơ quan này cũng chưa bố trí được nhân sự phụ trách an ninh mạng, hoặc đội ngũ chưa đáp ứng được với tình hình thực tế.
Thống kê an ninh Theo thống kê an ninh từ tổ chức whitehat (www.com) số lượng các lỗi liên quan đến việc đánh cắp thông tin người dùng, hay truy xuất vào cơ sở dữ 11 liệu ngày càng tăng. Cụ thể, tổ chức này thống kê 10 lỗi website thường gặp phải trong năm 2011 như sau : Hình 1.1 : Thống kê 10 lỗi website thường gặp phải Số lỗi liên quan đến Cross-site Scripting tăng dần theo từng năm.Mặc dù các nhà phát triển ứng dụng web có quan tâm đến lỗi bảo mật này, tuy nhiên số lượng website bị lỗi này không hề giảm.Theo tổ chức này, năm 2010 lỗi “Information Leakage” chiếm 64%, thì năm 2011 lại có xu hướng giảm chỉ còn 53%. Việc vá lỗi cũng không hề đơn giản, vì nó liên quan đến cấu trúc của cả ứng dụng web đang được triển khai. Trong ngành công nghiệp CNTT, tổ chức whitehat vẫn đánh giá thời gian sửa lỗi XSS là lâu nhất.
Trung bình là khoảng 35 ngày.2 : Thời gian vá lỗi 12 Cũng theo tổ chức này, họ tiến hành thống kê đánh giá các website dễ bị tổn thương do các lỗ hổng này mang lại. Và một lần nữa lỗi XSS được đánh giá là nghiêm trọng hơn cả.3 : Mức độ nghiêm trọng do các lỗ hổng bảo mật gây ra.3 Đánh giá Tình hình an ninh mạng, an ninh trực tuyến mặc dù có được quan tâm nhưng không hề được cải thiện.Số lỗi, website bị khai thác vẫn đang có chiều hướng tăng lên.Vì vậy cần phải có các nghiên cứu sâu hơn, đánh giá chi tiết hơn về các lỗi bảo mật này. Đặc biệt đối với lỗi Cross-site Scripting ngày càng phát triển mạnh và không có chiều hướng giảm.Chính vì thế việc nghiên cứu nhằm phát hiện và ngăn chặn từng bước lỗi XSS là hết sức quan trọng.Trong chương 2, và chương 3 chúng tôi sẽ đề cập chi tiết hơn về vấn đề này.Chúng tôi sẽ tiến hành tìm hiểu lỗi XSS, phân loại chúng, đánh giá mức độ nguy hiểm, đưa ra các giải pháp phát hiện và ngăn chặn XSS.Đồng thời trong chương 3, chúng tôi sẽ nghiên cứu sâu hơn về XSS worm, một dạng sâu, virus, tìm hiểu phương pháp lây lan, và đưa ra thuật toán ngăn chặn và phòng tránh. 13 Chương 2 PHƯƠNG PHÁP PHÁT HIỆN VÀ NGĂN CHẶN CROSS-SITE SCRIPTING 2.1 Tìm hiểu về Cross-site scripting XSS là một kiểu khai thác lỗ hổng an ninh mạng mà ở đó cho phép kẻ tấn công chèn mã độc vào một website.
Mã này có thể có thể chứa JavaScript hay chỉ là HTML nằm trên máy chủ web hoặc được chèn vào khi người dùng duyệt đến một trang web. Khi đoạn mã được kích hoạt, kẻ tấn công có thể chiếm quyền sử dụng các trang web của bên thứ ba hoặc sử dụng tài nguyên của máy chủ. Các cuộc tấn công XSS thường chèn mã JavaScript vào một dịch vụ web độc hại thực hiện trên trình duyệt web của người dùng. XSS là một trong các ứng dụng tấn công web phổ biến nhất mà các tin tặc sử dụng để gửi các mã độc hại cho người sử dụng.
Nó cũng được sử dụng để thay đổi nội dung hoặc chiếm quyền điều khiển trang web hay thực hiện các cuộc tấn công để lấy thông tin và dữ liệu người dùng. Bằng việc khai thác lỗ hổng XSS cross-site scripting, kẻ tấn công có thể xây dựng một cuộc tấn công. Kỹ thuật này thường được sử dụng bởi những kẻ tấn công với mục đích là tiêm đoạn mã JavaScript, VBScript, ActiveX, HTML, hoặc Flash để thực hiện trên hệ thống của nạn nhân với quyền của nạn nhân. Khi một cuộc tấn công được kích hoạt, tất cả mọi thứ từ lấy tài khoản, thay đổi các thiết lập của người sử dụng, lấy cookie hoặc quảng cáo có thể sai lệch.2 Các mối đe dọa từ Cross-site Scripting : - Theo thống kê về các lỗ hổng bảo mật thường bị tấn công nhất vào năm 2009, ta có kết quả như dưới đây: 14 Hình 2.1 : Thống kê các lỗ hổng thường bị tấn công năm 2009 - Một số website tìm thấy lỗ hổng XSS (2009) Tên công Domain Liên kết bị khai thác ty NBC http://www.com/ http://www.asp?q u= <script>alert(document.cookie)</script >&frompage=4&page=1&ct=VVTV& mh=0&sh=0&RN=1 Microsoft http://www.com http://www.com/education/? / ID=MCTN&target=http://www.com/education/?ID=MCTN&target =<script>alert(document.cookie)</scri pt> Chase https://www.com/ https://www.com/chase/gx.cgi/F Tcs?pagename=<script>alert(documen t.cookie)</script>&urlname=smallbusi ness/direct 15 Ebay https://scgi.uk https://scgi.uk/saw- cgi/eBayISAPI.dll?SSLRegisterShow &countryid=3&siteId=3&co_partnerId =0&UsingSS L=1&aolemail=<script>alert(documen t.cookie) </script> Oracle http://www.jp http://www.jp/mts_sem_owa/ Japan MTS_SEM/im_search_exe?search_tex t=<script>alert(document.cookie) </script> Cross-Site Scripting (XSS) chiếm một tỉ lệ rất cao so với các phương pháp tấn công khác.
Hầu hết các tác hại tiềm ẩn của kĩ thuật này đã được biết đến. Tuy nhiên, chúng ta mới chỉ khắc phục được một phần của nó. Từ lỗi Cross-site scripting, kẻ tấn công có thể gây ra những rủi ro nghiêm trọng: • Đánh cắp thông tin người sử dụng: chẳng hạn như hacker thêm JavaScript để ăn cắp cookie, mật khẩu người dùng,…. • Tạo ra những thông tin sai lệch, bôi nhọ danh tiếng của cá nhân, tổ chức… • Tạo các cuộc tấn công lừa đảo trực tuyến.
• Chiếm quyền sử dụng của nạn nhân: chẳng hạn như thêm mã JavaScript để chuyển hướng người dùng. • Đoạn mã độc hại có thể làm cho trang web của bạn không thể truy cập, cũng như có thể làm cho trình duyệt lỗi hoặc trở nên không thể hoạt động. • Thông qua đoạn mã kẻ tấn công có thể theo dõi lịch sử truy cập các trang web, theo dõi thông tin bạn đăng lên một trang web và truy cập vào dữ liệu cá nhân như (thẻ tín dụng, tài khoản ngân hàng,…).3 Phân loại Cross-site Scripting 16 Có ba loại tấn công XSS khác nhau là : Stored XSS, Reflected XSS và DOM-base XSS. Cụ thể như sau: -Stored XSS : Còn được gọi là kiểu tấn công liên tục (Persistent) là loại mà các mã được chèn vào website thông qua một chức năng nào đó, chẳng hạn như: gửi một lời bình luận hay tin nhắn, gửi bài trên các diễn đàn,.
để từ đó khi các thành viên khác truy cập website sẽ bị dính mã độc từ kẻ tấn công này. Với tấn công kiểu tấn công Stored XSS, kẻ tấn công sẽ lưu trữ đoạn mã độc trên ứng dụng web (ví dụ trong cơ sở dữ liệu - Database). Vì vậy, nó được gọi là Stored XSS… Sau đó, khi một người dùng gửi yêu cầu đến trang web mà có chứa đoạn mã độc đó thì đoạn mã độc sẽ được kích hoạt và thực hiện mưu đồ của kẻ tấn công. Ví dụ như một web site là một diễn đàn, nơi mọi người có thể đưa các bài viết lên hiển thị cho tất cả mọi người.
Trang web này có thể được sử dụng để thực hiện loại tấn công này. Kẻ tấn công viết một mẩu tin như hình 1 mà trong đó có chứa một đoạn mã độc để ăn cắp cookie, sau đó mẩu tin được lưu trữ trong CSDL. Khi một người dùng muốn đọc bài viết trên thì phải tải cả đoạn mã độc xuống trình duyệt của mình. Đoạn mã độc được chạy trên trình duyệt web của người dùng, nó sẽ gửi cookie của người dùng cho một máy chủ web mà được kiểm soát bởi kẻ tấn công.2 : Ví dụ về một tin nhắn, tấn công Stored XSS để lấy cắp cookie.
Trước tiên, kẻ tấn công lưu bài viết chứa mã XSS trên diễn đàn. Đầu tiên, người dùng đăng nhập vào diễn đàn và sẽ được xác định bởi một cookie được thiết lập trên trình duyệt. Sau đó, người dùng có thể đọc bài viết của kẻ tấn công đã đăng, các mã độc được gửi trả lại như một phần của bài viết và sau đó nó sẽ được dịch và chạy trên trình duyệt của người dùng. Đoạn mã XSS sẽ gửi cookie của người dùng 17 cho kẻ tấn công.
Với thông tin này của nạn nhân, kẻ tấn công có thể giả danh nạn nhân trong diễn đàn này và có tất cả các quyền của nạn nhân.3 : Các bước tấn công stored XSS -Reflected XSS : - Còn được gọi là kiểu tấn công XSS không liên tục (Non-Persistent). Đây là loại tấn công phổ biến. Trong loại này, mã độc được gửi trở lại người dùng với sự giúp đỡ của ứng dụng web. Chúng dưới dạng một tin nhắn thông báo lỗi, kết quả tìm kiếm… gửi đến người dùng.
Để làm điều này, kẻ tấn công gửi một liên kết cho người dùng có thể bằng email (đoạn mã hình 2. Trong liên kết là mã HTML có chứa một script để tấn công các máy client nhận được email này. Nếu người dùng nhấp chuột vào liên kết thì sẽ hiển thị các trang web được yêu cầu trong liên kết này. 18 Trên trang web có thể chứa mã độc hại, chúng sẽ được gửi tới trình duyệt của người dùng và nó được thực thi.4: Ví dụ về tấn công “Reflected XSS”.