PHÁT HIỆN LỖ HỔNG AN NINH TRÊN CÁC ỨNG DỤNG WEB

19 398 1
PHÁT HIỆN LỖ HỔNG AN NINH TRÊN CÁC ỨNG DỤNG WEB

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ──────── * ─────── ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN PHÁT HIỆN LỖ HỔNG AN NINH TRÊN CÁC ỨNG DỤNG WEB Sinh viên thực : Bùi Duy Hùng Lớp CNPM A - K49 Giáo viên hướng dẫn: TS Nguyễn Khanh Văn HÀ NỘI 6-2009 Phát lỗ hổng an ninh ứng dụng web PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Thông tin sinh viên Họ tên sinh viên: Bùi Duy Hùng Điện thoại liên lạc: 01697266076 Email: duyhung19@gmail.com Lớp: CNPM A – K49 Hệ đào tạo: Đại học quy Đồ án tốt nghiệp thực tại: Trường ĐH Bách Khoa – Hà Nội Thời gian làm ĐATN: Từ ngày 18 /02 /2009 đến 05 /06 /2009 Mục đích nội dung ĐATN Nghiên cứu, tìm hiểu cài đặt thuật toán phát lỗ hổng an ninh ứng dụng web Các nhiệm vụ cụ thể ĐATN  Tìm hiểu cài đặt thuật toán ngăn chặn công SQL Injection thời điểm thực thi (thuật toán Runtime SQLCheck)  Tìm hiểu thuật toán phát lỗ hổng SQL Injection mã nguồn ứng dụng (thuật toán Static SQLCheck)  Xây dựng hệ thổng website để kiểm tra độ xác công cụ cài đặt thuật toán Runtime SQLCheck Lời cam đoan sinh viên: Tôi Bùi Duy Hùng cam kết ĐATN công trình nghiên cứu thân hướng dẫn TS Nguyễn Khanh Văn Các kết nêu ĐATN trung thực, chép toàn văn công trình khác Hà Nội, ngày 25 tháng 05 năm 2009 Tác giả ĐATN Bùi Duy Hùng Xác nhận giáo viên hướng dẫn mức độ hoàn thành ĐATN cho phép bảo vệ: Hà Nội, ngày tháng năm 2009 Giáo viên hướng dẫn Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 2/19 Phát lỗ hổng an ninh ứng dụng web TS Nguyễn Khanh Văn TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP Sự tăng trưởng nhanh chóng Internet tạo dịch vụ web hữu ích, thay giao dịch thủ công truyền thống Điển hình như, ngày ta ngồi nhà mà thực dịch vụ kiểm tra tài khoản ngân hàng, đặt vé máy bay, mua sắm … Nhưng hầu hết ứng dụng chứa lỗi bảo mật tiềm ẩn mà tin tặc khai thác thực công Kết việc công tính mật (tính riêng tư) toàn vẹn thông tin bị xâm phạm Một lỗi nguy bảo mật tiềm ẩn phát triển nhanh năm gần xuất phát từ sai sót việc kiểm tra tính hợp lệ chuỗi đầu vào cung cấp người dùng, gọi công dựa khai thác lỗ hổng SQL Injection Nhưng nguyên nhân sâu xa lại bắt nguồn từ tầng lõi ứng dụng, bao gồm hệ thống nhận, chuyển đổi xây dựng giá trị chuỗi (một số giá trị chuỗi lại cung cấp từ nguồn không tin cậy), trình diễn giá trị tới hệ thống khác chương trình hay đoạn chương trình Do cần phải có kỹ thuật để hạn chế nguy bảo mật Đồ án mô tả kĩ thuật công website dựa việc khác thác lỗi SQL Injection tiên tiến Sau đồ án cung cấp nguyên lý dựa khái niệm từ ngôn ngữ lập trình trình biên dịch cho lỗi bảo mật tiềm ẩn với định nghĩa hình thức cho công SQL Injection Dựa vào mô tả này, đồ án mô tả phân tích hai thuật toán: “bảo vệ thời điểm thực thi”(runtime protection) “phân tích tĩnh”(static analysis) Hai thuật toán có mục đích chung lỗi bảo mật mã ứng dụng ngăn cản tin tặc khai thác chúng Song thuật toán lại có vai trò riêng vòng đời phát triển phần mềm Thuật toán “bảo vệ thời điểm thực thi” (Runtime SQLCheck) ngăn cản hiệu SQL Injection sản phẩm phần mềm triển khai Trong thuật toán “phân tích tĩnh” (Static SQLCheck) lại cần thiết suốt trình triển khai phần mềm kiểm thử Phần đóng góp thực tế đồ án thực cài đặt thực tế cho thuật toán (Runtime SQLCheck Static SQLCheck) với kết thử nghiệm ứng dụng web thực tế (website bán sách trực tuyến) Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 3/19 Phát lỗ hổng an ninh ứng dụng web ABSTRACT OF THESIS Together with the rapid growth of the Internet, many online services were born and became necessary in our daily life, these services are gradually replacing our manual transaction For instance, we can check our bank account, book ticket, shopping even when we are at home But most of these web applications contain many potential security vulnerabilities that hackers can easily exploit and attack As a result, the integrity of confidential information is damaged In recent years, one of the fastest developing potential security vulnerabilities is about checking the valid input sequence provided by users, where the so-called SQL injection attack exploits But the primary cause is that the error is derived from the core of the applications, including receiving, conversion and construction of the sequence value (a string value supplied from an untrusted sources), and show that value to other systems such as program or modules Therefore it is necessary to have a new technology to limit this security risk The thesis describes in detail website attack techniques based on the latest SQL Injection exploitation Then, it provides the basic principles based on programming languages concepts and compiler for potential security vulnerabilities, and formal definition for SQL Injection attacks Based on this description, the thesis describes and analyzes two algorithms: "runtime protection" and" static analysis" These two algorithms have the same purpose which is to find out the security vulnerabilities in the application and prevent the hackers from exploiting them However, each algorithm has a particular role within the software development cycle The algorithms "runtime protection" ( Runtime SQLCheck ) effectively prevent SQL Injection in the software when it was deployed, while algorithms "static analysis" (Static SQLCheck ) is needed during software implementation and testing Finally, the most important contribution of the thesis is practical implementation of these algorithms (Runtime SQLCheck and Static SQLCheck) together with the implementation result on actual website – Online Booksale Website Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 4/19 Phát lỗ hổng an ninh ứng dụng web MỤC LỤC PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP ABSTRACT OF THESIS MỤC LỤC DANH MỤC HÌNH VẼ DANH MỤC BẢNG DANH MỤC CÁC THUẬT NGỮ 10 DANH MỤC TỪ VIẾT TẮT 11 LỜI CẢM ƠN 12 CHƯƠNG GIỚI THIỆU BÀI TOÁN 13 1.1 CÁC ỨNG DỤNG WEB 13 1.2 NHỮNG NGUY CƠ TIỀM ẨN TỪ VIỆC KIỂM TRA DỮ LIỆU ĐẦU VÀO 14 1.3 MỘT SỐ PHƯƠNG PHÁP PHÒNG CHỐNG SQL INJECTION PHỔ BIẾN .17 1.4 NHIỆM VỤ, KẾT QUẢ VÀ NGHIỆM THU 18 1.5 BỐ CỤC ĐỒ ÁN 19 CHƯƠNG CÁC KỸ THUẬT TẤN CÔNG ỨNG DỤNG BẰNG SQL INJECTION .Error! Bookmark not defined 2.1 TRƯỜNG HỢP TẤN CÔNG SQL INJECTION PHỔ BIẾN Error! Bookmark not defined 2.2 KHAI THÁC THÔNG TIN SỬ DỤNG CÁC THÔNG ĐIỆP LỖI Error! Bookmark not defined 2.3 STORED PROCEDURES Error! Bookmark not defined 2.4 SQL INJECTION TIÊN TIẾN Error! Bookmark not defined 2.4.1 Các chuỗi không ‘ Error! Bookmark not defined 2.4.2 SQL Injection bậc hai Error! Bookmark not defined 2.4.3 Giới hạn độ dài Error! Bookmark not defined 2.4.4 Tránh kiểm tra Error! Bookmark not defined Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 5/19 Phát lỗ hổng an ninh ứng dụng web CHƯƠNG THUẬT TOÁN RUNTIME SQLCHECK: NGĂN CHẶN SQL INJECTION TẠI THỜI ĐIỂM THỰC THI Error! Bookmark not defined 3.1 THUẬT TOÁN NGĂN CHẶN SQL INJECTION Error! Bookmark not defined 3.1.1 Giới thiệu Error! Bookmark not defined 2.1.1 Tổng quan phương pháp Error! Bookmark not defined 2.1.2 Các mô tả hình thức Error! Bookmark not defined CHƯƠNG THUẬT TOÁN STATIC SQLCHECK: PHÂN TÍCH TĨNH ĐỂ PHÁT HIỆN SQL INJECTION Error! Bookmark not defined 4.1 GIỚI THIỆU Error! Bookmark not defined 4.2 TỔNG QUAN BÀI TOÁN Error! Bookmark not defined 4.2.1 Một ví dụ lỗ hổng SQL Injection ứng dụng web.Error! Bookmark not defined 4.3 Tổng quan phân tích Error! Bookmark not defined 4.3.1 Thuật toán phân tích Error! Bookmark not defined CHƯƠNG CÀI ĐẶT VÀ THỬ NGHIỆM THUẬT TOÁN RUNTIME SQLCHECK TRÊN WEBSITE BÁN SÁCH TRỰC TUYẾN Error! Bookmark not defined 5.1 THƯ VIỆN RuntimeSQLCheck Error! Bookmark not defined 5.1.1 Kiến trúc Runtime SQLCheck Error! Bookmark not defined 5.1.2 Cấu trúc thư viện Runtime SQLCheck Error! Bookmark not defined 5.1.3 Xây dựng bảng văn phạm gia tăng biên dịch Error! Bookmark not defined 5.1.4 Xây dựng câu truy vấn gia tăng Error! Bookmark not defined 5.1.5 Phân tích ngữ pháp câu truy vấn gia tăng Error! Bookmark not defined 5.2 KIỂM THỬ Error! Bookmark not defined 5.2.1 Kiểm thử cài đặt RuntimeSQLCheck Error! Bookmark not defined 5.2.2 Kết kiểm thử website bán sách trực tuyến Error! Bookmark not defined CHƯƠNG ĐÁNH GIÁ VÀ KẾT LUẬN Error! Bookmark not defined 6.1 MỘT SỐ NHẬN XÉT ĐÁNH GIÁ Error! Bookmark not defined Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 6/19 Phát lỗ hổng an ninh ứng dụng web 6.1.1 Một số kết luận hai phương pháp Runtime SQLCheck Static SQLCheck Error! Bookmark not defined 6.1.2 Những công việc làm Error! Bookmark not defined 6.2 KHÓ KHĂN VÀ HẠN CHẾ Error! Bookmark not defined 6.2.1 Những khó khăn trình làm đồ án Error! Bookmark not defined 6.2.2 Những hạn chế đồ án Error! Bookmark not defined 6.3 HƯỚNG PHÁT TRIỂN Error! Bookmark not defined 6.3.1 SQL Injection in Stored Procedure Error! Bookmark not defined 6.3.2 Cross Site Scripting Error! Bookmark not defined 6.3.3 Xpath Injection Error! Bookmark not defined 6.3.4 Shell Injection Error! Bookmark not defined TÀI LIỆU THAM KHẢO Error! Bookmark not defined PHỤ LỤC A GOLD PARSER SYSTEM .Error! Bookmark not defined “PARSER” LÀ GÌ? Error! Bookmark not defined 1.1 Bộ phân tích từ vựng (Lexical Analysis) Error! Bookmark not defined 1.2 Bộ phân tích cú pháp Error! Bookmark not defined GOLD LÀM VIỆC NHƯ THẾ NÀO? Error! Bookmark not defined 2.1 Builder Error! Bookmark not defined 2.2 Engine Error! Bookmark not defined 2.3 Tổng quan trình phát triển Error! Bookmark not defined Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 7/19 Phát lỗ hổng an ninh ứng dụng web DANH MỤC HÌNH VẼ Hình 1.1: Kiến trúc hệ thống ứng dụng web 14 Hình 1.2: Số lần công nguy tiềm ẩn 15 Hình 3.1: Một trang JSP để nhận số thể tín dụng .Error! Bookmark not defined Hình 3.2: Kiến trúc hệ thống Runtime SQLCheck Error! Bookmark not defined Hình 3.3: Các phân tích ngữ pháp cho mệnh đề WHERE câu truy vấn sinh Các chuỗi người dùng nhập vào gạch chân .Error! Bookmark not defined Hình 3.4: Văn phạm đơn giản cho câu mệnh đề SELECT Error! Bookmark not defined Hình 3.5: Văn phạm gia tăng cho văn phạm trình Hình 4.2 Các sản xuất mới/đã chỉnh sửa tô bóng Error! Bookmark not defined Hình 3.6: Các phần phân tích ngữ pháp cho câu truy vấn gia tăng Error! Bookmark not defined Hình 4.1: Đoạn mã ví dụ chứa lỗ hổng SQL Injection Error! Bookmark not defined Hình 4.2: Trình tự công việc phân tích lỗ hổng SQL Injection file nguồn PHP Error! Bookmark not defined Hình 4.3: Các sản xuất văn phạm chuỗi truy vấn từ Hình 5.1 Error! Bookmark not defined Hình 4.4: Văn phạm phản ảnh luồng liệu Error! Bookmark not defined Hình 4.5: Một chuyển đổi trạng thái hữu hạn tương ứng với hàm str_replace(“ ’’ ”,” ‘ ”,$B); A   \ {' } Error! Bookmark not defined Hình 5.1: Kiến trúc Runtime SQLCheck Error! Bookmark not defined Hình 5.2: Biểu đồ lớp RuntimeSQLCheck Error! Bookmark not defined Hình 5.3:Văn phạm SQL viết theo dạng Backus-Naur Error! Bookmark not defined Hình 5.4: Văn phạm SQL gia tăng viết theo dạng Backus-Naur Error! Bookmark not defined Hình 5.5: Bảng trình phân tích ngữ pháp (parse table) câu truy vấn Error! Bookmark not defined Hình 5.6: Website bán sách trực tuyến Error! Bookmark not defined Hình 5.7: Quá trình đăng nhập hệ thống có sử dụng thư viện RuntimeSQLCheck Error! Bookmark not defined Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 8/19 Phát lỗ hổng an ninh ứng dụng web Hình 5.8: Kết kiểm tra thực công SQL Injection form đăng nhập (Login form) .Error! Bookmark not defined Hình 5.9: Kết kiểm tra thực công SQL Injection form đăng ký (Registration form) Error! Bookmark not defined Hình 5.10: Kết kiểm tra thực công SQL Injection form tìm kiếm (Search form) Error! Bookmark not defined Hình 5.11: Kết kiểm tra thực công SQL Injection form lời bình (Comment form) .Error! Bookmark not defined Hình 6.1: Stored Procedure tiềm ẩn lỗ hổng SQL Injection Error! Bookmark not defined Hình A.0.1: Các thành phần Parser .Error! Bookmark not defined Hình A.0.2: Giao diện chương trình Gold Parser Builder .Error! Bookmark not defined Hình A.0.3: Quá trình phát triển parser Error! Bookmark not defined DANH MỤC BẢNG Bảng 5.1: Độ xác cho RuntimeSQLCheck .Error! Bookmark not defined Bảng 6.1: So sánh hai phương pháp Runtime SQLCheck Static SQLCheck Error! Bookmark not defined Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 9/19 Phát lỗ hổng an ninh ứng dụng web DANH MỤC CÁC THUẬT NGỮ Thuật ngữ Web browser Ý nghĩa Trình duyệt web Web Application Server Máy chủ ứng dụng web Database Server Máy chủ sở liệu Meta-Character Siêu ký tự: Là chuỗi tổ hợp ký tự chữ sinh ngẫu nhiên sử dụng để đánh dấu đầu cuối chuỗi đầu vào Augmented Input Đầu vào gia tăng: chuỗi đầu vào thêm Meta-Character vào đầu cuối chuỗi Augmented Query Câu truy vấn gia tăng: câu truy vấn xây dựng từ chuỗi đầu vào gia tăng Augmented Grammar Văn phạm gia tăng: văn phạm xây dựng cho câu truy vấn gia tăng Parse tree Cây phân tích ngữ pháp Context free grammar Văn phạm phi ngữ cảnh Tranducer Bộ chuyển đổi Finite state tranducer Bộ chuyển đổi trạng thái hữu hạn Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 10/19 Phát lỗ hổng an ninh ứng dụng web DANH MỤC TỪ VIẾT TẮT Từ viết tắt Viết đầy đủ HTML Hypertext Markup Language Ngôn ngữ đánh dấu siêu văn HTTP Hypertext Tranfer Protocol Giao thức truyền tải siêu văn SQLCIA SQL Command Injection Attack LALR Look Ahead Left-to-Right CFG Context Free Grammar Văn phạm phi ngữ cảnh SQLCIV SQL Command Injection Vulnerability Lỗ hổng SQL Injection Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Ý nghĩa Tấn công SQL Injection Thuật toán đọc từ xuống theo chiều từ trái sang phải Trang 11/19 Phát lỗ hổng an ninh ứng dụng web LỜI CẢM ƠN Trước hết, em xin chân thành gửi lời cảm ơn sâu sắc tới thầy cô giáo trường Đại học Bách Khoa Hà Nội nói chung thầy cô khoa Công nghệ Thông tin, môn Công nghệ phần mềm nói riêng tận tình giảng dạy, truyền đạt cho em kiến thức, kinh nghiệm quý báu suốt trình học tập rèn luyện trường Đại học Bách Khoa Hà Nội Em xin gửi lời cảm ơn đến thầy Nguyễn Khanh Văn – Trưởng môn, Giảng viên môn Công nghệ phần mềm, khoa Công nghệ Thông tin, trường Đại học Bách Khoa Hà Nội hết lòng giúp đỡ, hướng dẫn dạy tận tình em trình làm đồ án tốt nghiệp Cuối cùng, em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè động viên, đóng góp ý kiến giúp đỡ trình học tập, nghiên cứu hoàn thành thực tập tốt nghiệp Hà Nội, ngày 25 tháng 05 năm 2009 BÙI DUY HÙNG Sinh viên lớp Công nghệ phần mềm A – K49 Khoa Công nghệ Thông tin - Đại học Bách Khoa Hà Nội Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 12/19 Phát lỗ hổng an ninh ứng dụng web CHƯƠNG GIỚI THIỆU BÀI TOÁN An toàn bảo mật thông tin, đặc biệt cho liệu máy tính, không quan tâm tất doanh nghiệp, dịch vụ tài hay phủ mà vấn đề mà người sử dụng máy tính phải ý thường xuyên đối mặt Từ người dùng máy tính để bàn bình thường phòng nghiên cứu đến quản trị viên làm việc cho công ty lớn, tất cần hiểu biết định hệ thống thông tin máy tính Vấn đề khẳng định phát triển Internet làm cho lợi ích tài sản người dùng trở lên gắn liền với ứng dụng web Trong chương đồ án, người viết xin trình bày đôi nét hoàn cảnh chung dẫn đến nhu cầu cần giải toán “Phát lỗ hổng an ninh ứng dụng web”; sau xin giới thiệu công việc hoàn thành ý tưởng thực Cuối người viết xin cung cấp vắn tắt bố cục đồ án 1.1 CÁC ỨNG DỤNG WEB Sự đời Internet đánh dấu bước nhảy vọt phát triển ngành công nghệ thông tin Sự phát triển nhanh Internet tạo cách mạng thục thụ Internet nhanh chóng xâm nhập vào hoạt động thông tin, kinh tế - xã hội hoạt động vui chơi giải trí trực tuyến khác game online… Dần dần Internet trở thành phần thiếu sống ngày Sự phát triển muôn mặt Internet thể rõ ứng dụng web đa dạng, thâm nhập vào mặt đời sống Điển hình ứng dụng web sử dụng để giúp đỡ hành khách đặt mua vé máy bay qua mạng, thực mua bán toán trực tuyến hay chúng sử dụng làm nơi để cộng đồng dân cư mạng trao đổi, giao lưu chia sẻ thông tin (blog, website cá nhân) Chỉ với máy tính, thiết bị cầm tay … có cài đặt trình duyệt web việc truy cập vào web dịch vụ thực nơi Các liệu mà ứng dụng web nắm giữ số thẻ tín dụng, số bảo hiểm xã hội… có ý nghĩa đặc biệt quan người dùng nhà cung cấp dịch vụ ) Sự xuất mô hình tương tác Business-to-Business (B2B) Business-to-Consumer (B2C) việc trao đổi thông tin xác bảo mật trở nên cần thiết lúc hết Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 13/19 Phát lỗ hổng an ninh ứng dụng web Hình 1.1: Kiến trúc hệ thống ứng dụng web Hình 1.1 đưa kiến trúc hệ thống cho ứng dụng web ngày Kiến trúc bao gồm ba tầng: Web Browser (trình duyệt web), đóng vai trò giao diện người dùng; Web Application Server (máy chủ ứng dụng web) có chức quản lý logic nghiệp vụ (business logic); Database Server quản lý liệu lưu trữ Web Application Server nhận đầu vào dạng chuỗi từ hai tầng lại: đầu vào người dùng cung cấp từ trình duyệt tập kết từ sở liệu Nó chuyển đầu vào thành đầu dạng chuỗi cho tầng khác: câu truy vấn cho Database Server văn HTML cho trình duyệt máy khách Web Application Server xây dựng mã “động”, mà mã cho toàn ứng dụng web không tồn nơi thời điểm cho thực thể điều chỉnh Luồng liệu tầng làm nảy sinh vấn đề kiểm tra đầu vào (input validation) cho Web Application Server: phải kiểm tra và/hoặc chỉnh sửa chuỗi đầu vào trước tiếp tục xử lý chúng hay biến đổi chúng thành đầu để đưa đến tầng khác thực thi Lỗi kiểm tra hay đầu vào chưa xử lý gây vấn đề bảo mật ứng dụng web 1.2 NHỮNG NGUY CƠ TIỀM ẨN TỪ VIỆC KIỂM TRA DỮ LIỆU ĐẦU VÀO Song song với phát triển ứng dụng web phải đối đầu với nguy hiểm phá hoại tiềm ẩn Sự phá hoại xóa bỏ ứng dụng web khỏi sống số mà phá hoại việc ăn trộm, thay đổi, giả mạo xóa bỏ thông tin ứng dụng web Chính từ phá hoại mà lợi ích người dùng, doanh nghiệp, phủ… đứng trước nguy mát vi phạm khôn lường Hai mối họa đáng quan tâm Cross-site scripting (XSS) SQL Injection Đây hai loại lỗi phổ biến dựa thiếu Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 14/19 Phát lỗ hổng an ninh ứng dụng web sót từ khâu kiểm tra đầu vào ứng dụng web Các tin tặc thường sử dụng lỗi (XSS SQL Injection) để làm cho Web Application Server sinh văn HTML câu truy vấn sở liệu mà người lập trình viên ý định nhắm tới hay nói cách khác tin tặc sử dụng lỗi để công ứng dụng web Những việc công gọi công mức ứng dụng Chúng bị ngăn cản tường lửa kiểm duyệt gói tin (phân tích chữ ký gói IP riêng lẻ định cổng cụ thể) Tấn công tầng ứng dụng khác với công tầng mạng Tấn công tầng ứng dụng khai thác lỗi bảo mật mã ứng dụng web hạn chế giao thức HTTP Tấn công tầng ứng dụng bị chặn tường lửa phần mềm diệt virus Các tường lửa mạng để mở cổng 80 cho web server Các ứng dụng web giao tiếp với người sử dụng thông qua cổng Nếu kẻ công truy cập ứng dụng công ứng dụng mà không bị tường lửa ngăn chặn Cho ví dụ, người có tài khoản hợp lệ hệ thống ngân hàng Người kết nối tới tài khoản cá nhân cách xác thực thiết lập phiên hợp lệ Nếu người chèn thêm đoạn mã để truy cập trái phép thông tin người dùng khác tường lửa mạng hay Instrusion Detection Systems(IDSs) chặn Hình 1.2: Số lần công nguy tiềm ẩn Hình 1.2a cho ta thấy tỷ lệ phần trăm nguy bảo mật năm từ 2003 – 2006: XSS, SQL Injection, PHP file inclusions, buffer overflows (tràn đệm), directory traversals (duyệt thư mục) Đây top năm nguy bảo mật báo cáo năm 2006 Lưu ý năm 2006 tỉ lệ XSS SQL Injection gần nhau: 21.7% 16% Còn Hình 1.2b cho xem báo cáo thống kê vụ công website năm 2007 Mặc dù có nhiều vụ công chưa báo cáo hay chưa phát biểu đồ số 12% 20% vụ công web thực năm 2007 Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 15/19 Phát lỗ hổng an ninh ứng dụng web XSS SQL Injection tương ứng Còn theo thống kê năm 2008 website nạn nhân bị công SQL Injection gần 500.000 – số đáng để lưu tâm Qua thống kê thấy SQL Injection ngày trở thành phương thức công ưu thích tin tặc Tấn công SQL Injection cách công mức ứng dụng phổ biến ứng dụng web Đây kiểu công mà tin tặc lợi dụng lỗ hổng khâu kiểm tra liệu nhập vào ứng dụng web thông báo lỗi hệ quản trị sở liệu để “tiêm vào” (inject) thi hành câu truy vấn SQL không hợp lệ (các câu truy vấn mà người lập trình không mong muốn) Từ tin tặc sử dụng công cụ để thu thập thông tin từ số bảng cột định sở liệu Bước việc công sở liệu tin tặc chèn them mã lệnh điều khiển máy chủ sở liệu tải phần mềm khác Internet giúp chúng có quyền kiểm soát cao mục tiêu SQL Injection kiểu công có mục tiêu cụ thể thường mục tiêu đơn lẻ cho vụ công Chính mà vụ công thường không gây ý rộng rãi virus hay sâu máy tính Âm thầm thiệt hại vụ công lại lớn Nếu máy chủ sở liệu bị tin tặc chiếm quyền kiểm soát có khối lượng lớn thông tin cá nhân tài người dùng rơi vào tay chúng Và thành công nói nguồn thông tin mà tin tặc thu nhiều nhiều so với công phishing Tin tặc công giả mạo để lừa người sử dụng cung cấp thông tin cá nhân tài Tỉ lệ thành công vụ công SQL Injection thường cao Do vấn đề đặt cần xem xét lại cách nghiêm túc tính bảo mật hệ thống trước trở thành nạn nhân SQL Injection Xong nhiều kiểm soát hết tất nguy lỗi SQL Injection tiềm ẩn mã ứng dụng Đã có nhiều phương pháp khắc phục SQL Injection phổ biến đưa như:  Kiểm tra liệu đầu vào, dùng biểu thức quy  Sử dụng thư viện Prepared Java hay SqlParameter Net  Sử dụng Stored Procedure Nhưng phương pháp có nhược điểm Để phòng chống SQL Injection người dùng thường lựa chọn phương pháp kiểm tra liệu đầu vào cách dùng biểu thức quỹ Nhưng nhiều họ lại bỏ qua việc Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 16/19 Phát lỗ hổng an ninh ứng dụng web kiểm tra có kiểm tra biểu thức quy thường sai sót, dẫn tới ứng dụng Nhưng có số khác lại lựa chọn thư viện Prepared (Java) hay SqlParameter (.NET) để phòng chống SQL Injection Các thư viện ngăn cản SQL Injection hiệu ràng buộc kiểu tham số truyền vào câu truy vấn Song trường hợp ứng dụng thực tìm kiếm theo nhiều trường phức tạp, phong phú thư viện lại dùng Và hầu hết nhiều người cho Stored Procedure an toàn tuyệt đối, thực điều nửa Vì, ví dụ, SQL Server cung cấp cho người quản trị sở liệu hàm EXEC thực thi câu truy vấn xây dựng động dạng chuỗi Việc sử dụng rộng rãi hàm khiến cho Stored Procedure không mức an toàn tuyệt đối Trước bối cảnh vậy, nhu cầu cấp thiết đặt trước mắt cần phải có công cụ phát ngăn chặn SQL Injection hiệu 1.3 MỘT SỐ PHƯƠNG PHÁP PHÒNG CHỐNG SQL INJECTION PHỔ BIẾN Thường thường người lập trình viên thực việc kiểm tra đầu cách xử lý đầu vào cách độc lập Phương pháp lại để lại cho ta hai khả gây lỗi: việc kiểm tra bị bỏ qua, việc kiểm tra không Hầu hết ngôn ngữ lập trình web cho truyền đầu vào không tin cậy tới máy khách sở liệu Không có ngôn ngữ lập trình web, trình biên dịch hay hệ thống thực thi cảnh báo cho người lập trình viên biết việc kiểm tra bị bỏ qua Do đó, việc phân tích luồng thông tin động tĩnh cần thiết để đảm bảo tất đầu vào không tin cậy kiểm tra Các thủ tục kiểm tra có lỗi Đã có nhiều kỹ thuật kiểm tra đầu vào đưa như: giới hạn độ dài chuỗi đầu vào hay phổ biến sử dụng biểu thức quy để lọc đầu vào Một phương pháp thay cho việc ngăn cản SQL Injection thay đầu vào, cách thêm dấu sổ ( \ ) vào đằng trước dấu nháy đơn Tất kỹ thuật sử cải thiện đầu vào chưa điều chỉnh, tất chúng có điểm yếu Không có chúng đảm bảo cấu trúc tĩnh câu truy vấn hay trang web sinh từ chối hoàn toàn đầu vào “tồi” (bad input), cho ví dụ, lọc biểu thức quy có hạn chế Do trình phân tích chuỗi cần thiết phải có để đảm bảo công SQL Injection xảy Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 17/19 Phát lỗ hổng an ninh ứng dụng web Việc phát nơi bị công SQL Injection mã ứng dụng (qua việc phân tích chuỗi hay nói khác phân tích mã nguồn) trở nên vô nghĩa thủ tục nghĩa để ngăn chặn Vì biết trước có công SQL Injection mà biện pháp ngăn chặn công việc lập trình người lập trình viên vào bế tắc Vậy nên đòi hỏi cần phải có phương pháp ngăn chặn SQL Injection thời điểm thực thi (ứng dụng chạy) 1.4 NHIỆM VỤ, KẾT QUẢ VÀ NGHIỆM THU Trong đề tài đồ án tốt nghiệp lần này, người viết đồ án xin trình bày hai phương pháp Static SQLCheck Runtime SQLCheck phát ngăn chặn SQL Injection hiệu ứng dụng web Cách thức xây dựng hai phương pháp chủ yếu dựa văn phạm phi ngữ cảnh Static SQLCheck Runtime SQLCheck hoàn toàn hoạt động độc lập với phạm vi tác dụng chúng khác Runtime SQLCheck ngăn chặn SQL Injection hiệu thời điểm thực thi (thời điểm ứng dụng chạy), từ chối đầu vào người dùng cung cấp gây công SQL Injection Trong Static SQLCheck lại có khả phát đoạn mã ứng dụng bị khai thác SQL Injection Song hai kết hợp hai phương pháp tạo cho ta hệ thống có khả phát (Static SQLCheck) ngăn chặn (Runtime SQLCheck) SQL Injection hiệu mạnh mẽ Sau số kết mà người viết đạt trình làm đồ án:  Tìm hiểu nắm bắt cách thức xây dựng văn phạm phi ngữ cảnh  Xây dựng thành công văn phạm gia tăng cho thư viện RuntimeSQLCheck  Hiểu cách thức làm việc sử dụng thành thạo sinh trình phân tích ngữ pháp (parser generation) GOLD Parser  Nghiên cứu nắm vững tư tưởng thuật toán hai phương pháp Runtime SQLCheck Static SQLCheck  Xây dựng thành công thư viện RuntimeSQLCheck ( viết hai ngôn ngữ NET Java) để ngăn chặn công SQL Injection ứng dụng web  Đã xây dựng hệ thống website bán sách trực tuyến để thử nghiệm độ xác thư viện RuntimeSQLCheck Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 18/19 Phát lỗ hổng an ninh ứng dụng web 1.5 BỐ CỤC ĐỒ ÁN Với phương pháp trình bày công việc làm phần lại đồ án tổ chức sau: Chương trình bày kỹ thuật công SQL Injection tiên tiến mà tin tặc sử dụng để công ứng dụng web Đây tiền đề trước đưa phương pháp phòng chống ngăn chặn SQL Injection Chương phân tích đánh giá người viết phương pháp Runtime SQLCheck để ngăn chặn SQL Injection từ đầu vào người dùng cung cấp Chương trình bày phương pháp Static SQLCheck Cơ chế hoạt động phương pháp phân tích mã nguồn ứng dụng web để tìm đoạn mã có khả bị khai thác công SQL Injection Trong Chương người viết trình bày thử nghiệm cài đặt thực tế thuật toán Runtime SQLCheck, thư viện RuntimeSQLCheck, kèm theo cách thức sử dụng ứng dụng web thực tế Cuối cùng, từ cài đặt thử nghiệm này, đánh giá kết luận người viết rút từ kết kiểm thử thư viện RuntimeSQLCheck hệ thống website bán sách trực tuyến người viết phát triển, trình bày rõ phần cuối chương Chương Đánh giá kết luận trình bày so sánh đánh giá tính hiệu hữu dụng hai phương pháp Runtime SQLCheck Static SQLCheck Hướng phát triển đề tài tương lai đề xuất chương Cuối cùng, phần Phụ Lục trình bày kiến trúc cách thức hoạt động chương trình sinh phân tích ngữ pháp: Gold Parser Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 19/19 [...]... CNPM A Trang 14/19 Phát hiện lỗ hổng an ninh trên các ứng dụng web sót từ khâu kiểm tra đầu vào trong các ứng dụng web Các tin tặc thường sử dụng những lỗi này (XSS và SQL Injection) để làm cho Web Application Server sinh ra các văn bản HTML và các câu truy vấn cơ sở dữ liệu mà người lập trình viên không có ý định nhắm tới hay nói cách khác là tin tặc sử dụng những lỗi này để tấn công ứng dụng web Những... thống kê các vụ tấn công website trong năm 2007 Mặc dù có nhiều vụ tấn công chưa được báo cáo hay chưa được phát hiện thì biểu đồ này cũng chỉ ra các con số 12% và 20% của các vụ tấn công web được thực hiện trong năm 2007 là Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 15/19 Phát hiện lỗ hổng an ninh trên các ứng dụng web XSS và SQL Injection tương ứng Còn theo thống kê mới nhất thì trong năm 2008 các website... mức ứng dụng Chúng không thể bị ngăn cản bởi các tường lửa kiểm duyệt các gói tin (phân tích chữ ký các gói IP riêng lẻ và chỉ định các cổng cụ thể) Tấn công ở tầng ứng dụng khác với tấn công ở tầng mạng Tấn công ở tầng ứng dụng khai thác các lỗi bảo mật trong mã ứng dụng web và các hạn chế của giao thức HTTP Tấn công ở tầng ứng dụng không thể bị chặn bởi các tường lửa và các phần mềm diệt virus Các. .. Phát hiện lỗ hổng an ninh trên các ứng dụng web ; sau đó xin giới thiệu các công việc đã hoàn thành cùng các ý tưởng thực hiện Cuối cùng người viết xin cung cấp vắn tắt bố cục của đồ án 1.1 CÁC ỨNG DỤNG WEB Sự ra đời của Internet đã đánh dấu một bước nhảy vọt trong sự phát triển của ngành công nghệ thông tin Sự phát triển nhanh của Internet đã tạo một cuộc cách mạng thục thụ Internet nhanh chóng xâm... trúc tĩnh của các câu truy vấn hay các trang web được sinh ra từ chối hoàn toàn các đầu vào “tồi” (bad input), cho ví dụ, các bộ lọc biểu thức chính quy vẫn còn có những hạn chế Do đó một trình phân tích chuỗi cần thiết phải có để đảm bảo các tấn công SQL Injection không thể xảy ra Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 17/19 Phát hiện lỗ hổng an ninh trên các ứng dụng web Việc phát hiện ra những... tâm Qua những thống kê trên thì chúng ta có thể thấy là SQL Injection ngày càng trở thành phương thức tấn công khá ưu thích đối với các tin tặc Tấn công SQL Injection là một trong các cách tấn công mức ứng dụng rất phổ biến trong các ứng dụng web Đây là một kiểu tấn công mà tin tặc lợi dụng lỗ hổng trong khâu kiểm tra dữ liệu nhập vào trong các ứng dụng web và các thông báo lỗi trong hệ quản trị cơ.. .Phát hiện lỗ hổng an ninh trên các ứng dụng web DANH MỤC TỪ VIẾT TẮT Từ viết tắt Viết đầy đủ HTML Hypertext Markup Language Ngôn ngữ đánh dấu siêu văn bản HTTP Hypertext Tranfer Protocol Giao thức truyền tải siêu văn bản SQLCIA SQL Command Injection Attack LALR Look Ahead Left-to-Right CFG Context Free Grammar Văn phạm phi ngữ cảnh SQLCIV SQL Command Injection Vulnerability Lỗ hổng SQL Injection... Lớp CNPM A Trang 12/19 Phát hiện lỗ hổng an ninh trên các ứng dụng web CHƯƠNG 1 GIỚI THIỆU BÀI TOÁN An toàn và bảo mật thông tin, đặc biệt là cho dữ liệu máy tính, không chỉ là sự quan tâm của tất cả các doanh nghiệp, dịch vụ tài chính hay chính phủ mà còn là vấn đề mà bất kỳ người sử dụng máy tính nào cũng phải chú ý và thường xuyên đối mặt Từ người dùng máy tính để bàn bình thường trong các phòng nghiên... nghĩa đặc biệt quan trong đối với cả người dùng và những nhà cung cấp dịch vụ ) Sự xuất hiện mô hình tương tác Business-to-Business (B2B) và Business-to-Consumer (B2C) thì việc trao đổi thông tin chính xác và bảo mật trở nên cần thiết hơn lúc nào hết Bùi Duy Hùng - Khóa 49 - Lớp CNPM A Trang 13/19 Phát hiện lỗ hổng an ninh trên các ứng dụng web Hình 1.1: Kiến trúc hệ thống của ứng dụng web Hình 1.1 đưa... thực hiện mua bán và thanh toán trực tuyến hay chúng còn được sử dụng làm nơi để các cộng đồng dân cư trên mạng có thể trao đổi, giao lưu và chia sẻ các thông tin của mình (blog, các website cá nhân) Chỉ với một chiếc máy tính, một thiết bị cầm tay … có cài đặt trình duyệt web thì việc truy cập vào web và các dịch vụ có thể thực hiện ở bất cứ nơi nào Các dữ liệu mà ứng dụng web nắm giữ như số thẻ tín dụng,

Ngày đăng: 21/11/2016, 02:34

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan