Phát hiện và cảnh báo lỗ hổng bảo mật SQL Injection trong ứng dụng Web Nguyễn Thúy Hồng Trường Đại học Công nghệ. Đại học Quốc gia Hà Nội Luận văn ThS. Công nghệ thông tin : 60 48 10 Người hướng dẫn : TS. Phạm Thanh Giang Năm bảo vệ: 2013 89 tr . Abstract. Tổng quan về bối cảnh thực tại của ứng dụng web. Khái niệm cơ bản về ứng dụng web, việc thẩm định dữ liệu đầu vào, liệt kê các loại lỗ hổng đầu vào, khái niệm lỗ hổng SQL Injection và cơ chế hoạt động của nó. Trình bày phân loại kỹ thuật tấn công lỗ hổng SQL Injection. Trình bày kỹ thuật tĩnh, động và vận dụng các kỹ thuật đó trong việc phát hiện các loại lỗ hổng SQL Injection. Xây dựng công cụ phát hiện và cảnh báo lỗ hổng SQL Injection cho ứng dụng web.Đưa ra các hướng phát triển trong tương lai Keywords. Công nghệ phần mềm; Lỗ hổng bảo mật; Ứng dụng Web Content. 1.1. Lý do chọn đề tài. Ở nước ta hiện nay, nền khoa học kỹ thuật nói chung cũng như nền công nghệ thông tin nói riêng phát triển như vũ bão và được ứng dụng rộng rãi trong hầu hết các lĩnh vực của đời sống xã hội. Một vấn đề đặt ra là làm thế nào để đáp ứng được nhu cầu trao đổi thông tin, quảng bá thông tin trực tuyến Từ nhu cầu thực tiễn đó, dẫn đến sự ra đời của các ứng dụng Web. Ngày nay, ứng dụng Web đã trở thành phương tiện liên lạc hữu ích cho hàng triệu tổ chức, cá nhân, doanh nghiệp, đối tác, khách hàng và dần dần thay thế các giao dịch thủ công truyền thống. Chẳng hạn như, ngày nay ta đã có thể ngồi nhà mà vẫn có thể thực hiện các dịch vụ như kiểm tra tài khoản ngân hàng, đặt vé máy bay, mua sắm trực tuyến…Chính vì vậy Web chính là yếu tố cơ bản giúp các doanh nghiệp, tổ chức, cá nhân tăng cường hình ảnh trực tuyến của mình trên thế giới Internet, tạo ra và duy trì nhiều mối quan hệ đem lại lợi nhuận lâu dài với khách hàng tiềm năng và khách hàng hiện tại. Nhưng song song với sự hữu ích đó, các ứng dụng Web cũng đã tạo ra những thách thức lớn đối với nhà phát triển, nhà quản trị Web đó chính là vấn đề làm thế nào để đảm bảo được an toàn thông tin khi sử dụng các ứng dụng Web. Bởi vì hầu hết các ứng dụng này đều chứa những lỗ hổng bảo mật tiềm ẩn mà kẻ tấn công có thể khai thác và thực hiện các hành vi gây nguy hại đến ứng dụng Web của bạn. Theo các báo cáo về an ninh mạng của Whitehat Security hay trên trang Verizon Business, Sans Institute,…thì đều cho thấy mức độ phát triển nhanh chóng, tính nghiêm trọng của các lỗ hổng bảo mật, và sự quan tâm chưa đúng mức của các tổ chức tới vấn đề này. Năm 2011, Whitehat Security đã thống kê về 10 lỗ hổng phổ biến và các lỗ hổng nghiêm trọng tấn công trên Website, kết quả như sau: Hình 0.1 - Thống kê về 10 lỗ hổng phổ biến tấn công trên Website năm 2011 Hình 0.2 - Thống kê các lỗ hổng nghiêm trọng năm 2011 Như vậy vấn đề bảo mật Web đang là mối quan tâm hàng đầu không những của các doanh nghiệp mà còn là mối quan tâm của hầu hết các quốc gia trên thế giới vì các kỹ thuật tấn công vào ứng dụng Web ngày càng trở nên tinh vi, phức tạp. Nó không những ảnh hưởng đến nền kinh tế quốc gia mà còn ảnh hưởng đến tình hình an ninh chính trị giữa các nước trong khu vực và trên chiến trường quốc tế. Trong biểu đồ thống kê trên ta thấy SQL Injection cũng được coi là một lỗ hổng phổ biến và nghiêm trọng trong an ninh ứng dụng Web và đây cũng vẫn đang là vấn đề nhận được rất nhiều quan tâm của các nhà nghiên cứu, các nhà phát triển ứng dụng Web, các tổ chức doanh nghiệp, cơ quan hành chính Bên cạnh những khó khăn do cơ sở hạ tầng mạng còn yếu kém, sự phát triển không ngừng của các công cụ và phương pháp tấn công khiến cho việc phòng, chống các hình thức tấn công ứng dụng Web trở thành một vấn đề rất nan giải. Một thực tại hiện này là hầu hết các lập trình viên vẫn chưa nhận thức được vấn đề lập trình ứng dụng Web an toàn, ngoài ra rất nhiều giải pháp đã được công bố và áp dụng nhưng vẫn chưa đủ tốt. Đây cũng chính là lý do mà tôi chọn đề tài “Phát hiện và cảnh báo lỗ hổng bảo mật SQL Injection trong ứng dụng Web” để nghiên cứu. 1.2. Mục đích và nội dung nghiên cứu. Luận văn này nhằm mục đích phân loại các kỹ thuật mà kẻ tấn công thường sử dụng để tấn công SQL Injection lên các ứng dụng Web, từ đó nhà phát triển ứng dụng có thể dự đoán trước các nguy cơ tấn công để kịp thời đưa ra các biện pháp ngăn chặn những hành động gây mất an toàn thông tin từ bên trong cũng như bên ngoài ứng dụng Web đối với từng loại SQL Injection…Đồng thời luận văn cũng đưa ra các phương pháp mà nhà phát triển ứng dụng thường sử dụng để phát hiện các loại lỗ hổng SQL Injection, đưa ra những cảnh báo và giúp cho những người mới lập trình PHP có cái nhìn tổng quan và nhận thức được tầm quan trọng của việc đảm bảo an toàn thông tin cho ứng dụng Web trong xây dựng, phát triển và vận hành ứng dụng Web. Trên cơ sở đó luận văn cũng xây dựng công cụ cho việc phát hiện và cảnh báo lỗ hổng SQL Injection. 1.3. Cấu trúc luận văn. Nội dung của luận văn này xoay quanh các vấn đề chính: Phần mở đầu giúp chúng ta có cái nhìn tổng quan về bối cảnh thực tại của ứng dụng Web, mục đích và nội dung nghiên cứu luận văn. Phần thứ hai trình bày một số khái niệm cơ bản về ứng dụng Web, việc thẩm định dữ liệu đầu vào, liệt kê các loại lỗ hổng đầu vào, khái niệm lỗ hổng SQL Injection và cơ chế hoạt động của nó. Ngoài ra phần thứ hai còn trình bày phân loại các kỹ thuật tấn công lỗ hổng SQL Injection. Việc trình bày các phương pháp phân tích tĩnh, phân tích động và vận dụng các kỹ thuật này trong việc phát hiện các loại lỗ hổng SQL Injection sẽ được trình bày trong chương 3. Chương 4 sẽ tập trung xây dựng công cụ phát hiện và cảnh báo lỗ hổng SQL Injection cho ứng dụng Web. Phần kết luận và hướng phát triển sẽ được trình bày trong phần cuối của luận văn. TÀI LIỆU THAM KHẢO Tiếng Việt 1. Phạm Hữu Khang, Hoàng Đức Hải (2007), Xây dựng ứng dụng Web bằng PHP & MySQL, Nhà xuất bản Phương Đông. Tiếng Anh 2. Alshanetsky (2005), PHP|Architect’s Guide to Security, Marco Tabini & Associates, Inc. 3. Anup Shakya, Dhiraj Aryal (2011), A Taxonomy of SQL Injection Defense Techniques, Master’s Thesis Computer Science, School of Computing Blekinge Institute of Technology, Sweden. 4. Chad Dougherty (2012), Practical Identification of SQL Injection Vulnerabilities, US – CERT (United States Computer Emergency Readiness Team). 5. Chris Snyder and Michael Southwell (2005), Pro PHP Security, Grace Wong, United States of America. 6. Dafydd Stuttard and Marcus Pinto (2008), The Web Application Hacker’s Handbook : Discovering and Exploiting Security Flaws, Wiley Publishing, Inc., Indianapolis, Indiana. 7. David Litchfield, Chris Anley, John Heasman, Bill Grindlay (2005), The Database Hacker’s Handbook - Defending Database Servers, Wiley Publishing, Inc., Indianapolis, Indiana. 8. Debasish Das, Utpal Sharma & D.K. Bhattacharyya (2010), “An Approach to Detection of SQL Injection Attack Based on Dynamic Query Matching”, International Journal of Computer Applications, Volume 1, No. 25, pp. 28 - 33. 9. Devata R. Anekar, Prof. A. N. Bhute (2012), “SQL Injection Detection and Prevention Mechanism using Positive Tainting and Syntax Aware Evaluation”, International Journal of Advances in Computing and Information Researches, Volume 1, No.3, pp. 1 - 4. 10. Dibyendu Aich (2009), Secure Query Processing By Blocking SQL Injection, Master’s Thesis, National Institute of Technology Rourkela of India. 11. Fatima Sami Hamdan (2012), Labeling user inputs to prevent SQL Injection attacks, Master’s Thesis, American University of Beirut. 12. Gary Michael Wassermann (2008), Techniques and Tools for Engineering Secure Web Applications, Master’s Thesis, Computer Science, University of California. 13. Hung Q.Nguyen, Bob Johnson, Michael Hackett (2003), Testing Applications on the Web, Wiley Publishing, Inc., Indianapolis, Indiana. 14. Justin Clarke (2009), SQL Injection Attacks and Defense, Syngress Publishing, Inc. 15. Dr R.P.Mahapatra and Mrs Subi Khan (2012), A Survey Of Sql Injection Countermeasures, International Journal of Computer Science & Engineering Survey (IJCSES), Vol.3, No.3, pp. 56 - 70. 16. Mark Curphey, Joel Scambray, and Erik Olson (2003), Improving Web Application Security - Threats and Countermeasures, Microsoft Corporation. 17. McGraw-Hill (2003), HackNotes Web Security Portable Reference, Brandon A. Nordin, United States of America. 18. Munqath H. Alattar S.P. Medhane (2013), “Efficient Solution for SQL Injection Attack Detection and Prevention”, International Journal of Soft Computing and Engineering (IJSCE), Vol.3, pp. 396 - 398. 19. Praveen Kumar (2013), “The Multi-Tier Architecture for Developing Secure Website with Detection and Prevention of SQL-Injection Attacks”, International Journal of Computer Applications, Vol. 62, No.9, pp. 30 – 35. 20. Rahul Johari, Pankaj Sharma (2012), “A Survey On Web Application Vulnerabilities (SQLIA,XSS) Exploitation and Security Engine for SQL Injection”, International Conference on Communication Systems and Network Technologies, pp. 453 – 456. 21. Shreeraj Shah (2008),Web 2.0 Security: Defending AJAX, RIA, and SOA, Publisher and General Manager, Course Technology PTR. 22. Sonal Telang, Prof. Ajit Kumar Shrivastava, Dr. Manish Manoria (2012), “Development of an Effective Runtime Defense Algorithm for Web Application Security”, IACSIT Coimbatore Conferences, Vol. 28, pp. 6-9. 23. Shruti Bangre, Alka Jaiswal (2012), “SQL Injection Detection and Prevention Using Input Filter Technique”, International Journal of Recent Technology and Engineering (IJRTE), Vol. 1, pp. 145 - 149. 24. Yonghee SHIN, Laurie Williams (2008), Toward A Taxonomy of Techniques to Detect Cross – site Scripting and SQL Injection Vulnerabilities, North Carolina State University . lỗ hổng SQL Injection. Xây dựng công cụ phát hiện và cảnh báo lỗ hổng SQL Injection cho ứng dụng web. Đưa ra các hướng phát triển trong tương lai Keywords. Công nghệ phần mềm; Lỗ hổng bảo mật; . và vận dụng các kỹ thuật này trong việc phát hiện các loại lỗ hổng SQL Injection sẽ được trình bày trong chương 3. Chương 4 sẽ tập trung xây dựng công cụ phát hiện và cảnh báo lỗ hổng SQL Injection. công bố và áp dụng nhưng vẫn chưa đủ tốt. Đây cũng chính là lý do mà tôi chọn đề tài Phát hiện và cảnh báo lỗ hổng bảo mật SQL Injection trong ứng dụng Web để nghiên cứu. 1.2. Mục đích và nội