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ệ.. Trình bày kỹ thuật tĩnh, động và vận dụng các kỹ thuật đó trong việc
Trang 1Phá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
Trang 2hà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
Trang 3Hì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
Trang 4có 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
Trang 54 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
Trang 616 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