sử dụng các khuôn mẫu hợp lệ theo bối cảnh để chống tấn công tiêm nhiễm SQL

47 19 0
sử dụng các khuôn mẫu hợp lệ theo bối cảnh để chống tấn công tiêm nhiễm SQL

Đ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

Ngày nay, ứng dụng web trở nên thiết yếu trong cuộc sống hàng ngày của con người. Giao dịch ngân hàng online, mua bán online, mạng xã hội, blog… đều là những ứng dụng web khá phổ biến và chúng cũng là những mục tiêu ưa thích của tin tặc. Trong các cuộc tấn công mạng thì tấn công mà mục tiêu là ứng dụng web là phổ biến nhất và gây ra nhiều thiệt hại cho các tổ chức và cá nhân. Đặc biệt là dạng tấn công tiêm nhiễm SQL. Tiêm nhiễm SQL là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu, để tiêm nhiễm (inject) và thi hành các câu lệnh SQL trái phép (không được người phát triển ứng dụng lường trước). Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy.

MỤC LỤC CHƯƠNG TỔNG QUAN VỀ TẤN CÔNG TIÊM NHIỄM SQL VÀ CÁC PHƯƠNG PHÁP PHÒNG CHỐNG 1.1 Khái niệm công tiêm nhiễm SQL 1.2 Phân loại công tiêm nhiễm SQL 10 1.2.1 Cơ chế tiêm nhiễm 10 1.2.2 Mục đích công 11 1.2.3 Kỹ thuật công 12 1.3 Các phương pháp ngăn chặn công tiêm nhiễm SQL .14 1.3.1 Phương pháp mã phòng thủ 14 1.3.2 Phương pháp phát ngăn chặn 16 1.4 Tóm Tắt 17 CHƯƠNG PHƯƠNG PHÁP SDRIVER TRONG CHỐNG TẤN CÔNG TIÊM NHIỄM SQL 19 2.1 Phương pháp chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh, SDriver 19 2.2 Cách thức hoạt động SDriver 20 2.2.1 Chế độ huấn luyện 20 2.2.2 Chế độ thực thi 22 2.3 Stack trace 23 2.4 Mô hoạt động SDriver 24 2.4.1 Môi trường mô 24 2.4.2 Chạy mô hoạt động SDriver 26 2.5 Tóm tắt 30 CHƯƠNG ĐỀ XUẤT CẢI TIẾN CHỐNG TẤN CÔNG TIÊM NHIỄM SQL SỬ DỤNG CÁC KHUÔN MẪU HỢP LỆ THEO BỐI CẢNH 32 3.1 Phân tích hoạt động SDriver 32 3.2 Đề xuất cải tiến 37 3.2.1 Cơ chế rút bỏ liệu câu truy vấn 37 3.2.2 Triển khai chế rút bỏ liệu đề xuất 39 3.3 Tóm tắt 40 CHƯƠNG KẾT QUẢ THỰC NGHIỆM ĐÁNH GIÁ 41 4.1 Mô thực nghiệm SDriver với chế rút bỏ liệu 41 4.2 Đánh giá hoạt động SDriver đề xuất 45 4.2.1 Đánh giá chi phí hoạt động 45 4.2.2 Đánh giá độ xác 46 KẾT LUẬN 51 Tài liệu tham khảo 52 MỞ ĐẦU Ngày nay, ứng dụng web trở nên thiết yếu sống hàng ngày người Giao dịch ngân hàng online, mua bán online, mạng xã hội, blog… ứng dụng web phổ biến chúng mục tiêu ưa thích tin tặc Trong cơng mạng cơng mà mục tiêu ứng dụng web phổ biến gây nhiều thiệt hại cho tổ chức cá nhân Đặc biệt dạng công tiêm nhiễm SQL Tiêm nhiễm SQL kĩ thuật cho phép kẻ công lợi dụng lỗ hổng việc kiểm tra liệu nhập ứng dụng web thông báo lỗi hệ quản trị sở liệu, để tiêm nhiễm (inject) thi hành câu lệnh SQL trái phép (không người phát triển ứng dụng lường trước) Hậu tai hại cho phép kẻ cơng thực thao tác xóa, hiệu chỉnh, … có toàn quyền sở liệu ứng dụng, chí server mà ứng dụng chạy Các nhà nghiên cứu đề xuất nhiều phương pháp phòng chống cơng tiêm nhiễm SQL, nhìn chung chia thành hai loại phương pháp thực hành mã phòng thủ (defensive coding pratices) phương pháp phát ngăn ngừa (dection and prevention techniques) Thực hành mã phòng thủ dựa vào người phát triển ứng dụng cố gắng loại bỏ nguy từ mã nguồn Phương pháp phụ thuộc nhiều vào chủ quan người phát triển ứng dụng, khó đảm bảo ứng dụng web khơng có lỗ hổng thay đổi ứng dụng web Trong phương pháp phát ngăn ngừa lại tập trung vào việc tự động phát công tiêm nhiễm SQL ngăn chặn chúng Các nhà nghiên cứu đề xuất loạt kỹ thuật chống cơng tiêm nhiễm SQL theo phương pháp Nhìn chung kỹ thuật dựa vào việc xây dựng tập hợp tình cơng có xây dựng tập hợp câu truy vấn hợp lệ Với đa dạng phát triển nhanh chóng dạng cơng tiêm nhiễm SQL khó xác định tập hợp cơng tiêm nhiễm SQL Trong để xác định truy vấn hợp lệ lại dễ dàng nhiều Dr Dimitris Mitropoulos Prof Diomidis Spinellis đề xuất kỹ thuật chống công tiêm nhiễm SQL khuôn mẫu hợp lệ theo bối cảnh (locationspecific signatures prevent SQL injection attack) Một trình điều khiển gọi SDriver thêm vào ứng dụng web trình điều khiển kết nối tới sở liệu SDriver chịu trách nhiệm phát ngăn chặn công tiêm nhiễm SQL thông qua sở liệu câu truy vấn hợp lệ gắn với bối cảnh Do SDriver kỹ thuật đơn giản hiệu việc chống công tiêm nhiễm SQL Hơn triển khai kỹ thuật việc thay mã phần kết nối tới sở liệu không ảnh hưởng nhiều tới hiệu hệ thống Tuy phương pháp tồn vấn đề khiến kẻ cơng tiêm nhiễm thành cơng Xuất phát từ thực tế đó, luận văn tập trung nghiên cứu: “Chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh” Nội dung luận văn gồm năm chương: Chương 1: Tổng quan công tiêm nhiễm SQL phương pháp phòng chống Trong chương đề cập đến lý thuyết công tiêm nhiễm SQL, phương pháp phòng chống cách tổng quát Chương 2: Phương pháp chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh - SDriver Chương trình bày trạng phương pháp chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh Phân tích vấn đề tồn Chương 3: Đề xuất cải tiến chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh Đưa phương pháp cải tiến chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh Chương 4: Kết thực nghiệm đánh giá Chương trình bày kết thực nghiệm phương pháp cải tiến đưa đánh giá phương pháp cải tiến CHƯƠNG TỔNG QUAN VỀ TẤN CÔNG TIÊM NHIỄM SQL VÀ CÁC PHƯƠNG PHÁP PHỊNG CHỐNG 1.1 Khái niệm cơng tiêm nhiễm SQL Theo OWASP (Open Web Application security Project), công tiêm nhiễm SQL mối đe dọa an ninh phổ biến nguy hiểm [2] Tấn công tiêm nhiễm SQL dạng công tiêm nhiễm mã độc mà kẻ công cố gắng khai thác lỗ hổng ứng dụng web để tiến hành tiêm nhiễm mã độc vào câu truy vấn SQL ứng dụng web nhằm truy cập trái phép vào sở liệu đằng sau ứng dụng web Khi kẻ cơng lấy cắp thơng tin khách hàng, người dùng, có khơng thơng tin nhạy cảm tên, tuổi, địa chỉ, số tài khoản… Tùy vào môi trường, kẻ cơng chí thực thao tác sửa, xóa liệu, thực thi câu lệnh hệ điều hành hay thực công từ chối dịch vụ Tấn công tiêm nhiễm SQL thường sử dụng để khai thác lỗ hổng ứng dụng web có hệ quản trị sở liệu quan hệ MySQL, MS SQL, DB2, Oracle… Hình 1.1 từ [4, pp 164] ví dụ điển hình cho Tấn cơng tiêm nhiễm SQL Các bước thực sau: Hình 1 Một Tấn cơng tiêm nhiễm SQL điển hình 10 Bước 1: Kẻ cơng dò qt lỗ hổng ứng dụng web Khi phát lỗ hổng, tiêm nhiễm câu lệnh SQL vào sở liệu (CSDL) cách gửi câu lệnh đến máy chủ web (Web server) Câu lệnh trái phép tiêm nhiễm vào luồng thông tin ứng dụng web vượt qua tường lửa (Firewall) Bước 2: Máy chủ web tiếp nhận mã độc gửi đến máy chủ ứng dụng web (Web application server) Bước 3: Tại máy chủ ứng dụng web, kẻ cơng khai thác lỗ hổng ứng dụng web nên mã độc tiếp tục chấp nhận gửi đến máy chủ CSDL (database) Bước 4: Máy chủ CSDL thực thi đoạn mã độc trả liệu chứa thông tin nhạy cảm thơng tin thẻ tín dụng Bước 5: Máy chủ ứng dụng web tạo nội dung động bao gồm thơng tin nhạy cảm thẻ tín dụng Bước 6: Máy chủ web gửi tồn thơng tin cho kẻ công Trên bước công Tấn công tiêm nhiễm SQL điển hình, kẻ cơng nhằm mục đích ăn cắp thông tin nhạy cảm khách hàng, người dùng Thay ăn cắp thơng tin, kẻ cơng phá hủy CSDL, hay đánh sập ứng dụng web cách tiêm nhiễm đoạn mã độc nguy hiểm 1.2 Phân loại công tiêm nhiễm SQL Có nhiều loại Tấn cơng tiêm nhiễm SQL khác nhau, Tấn cơng tiêm nhiễm SQL phân loại theo tiêu chí chế tiêm nhiễm, mục đích cơng kỹ thuật cơng [5] 1.2.1 Cơ chế tiêm nhiễm Câu lệnh SQL độc hại tiêm nhiễm theo nhiều chế khác nhau, sau số chế thông dụng nhất: Tiêm nhiễm thông qua nhập liệu người dùng: Kẻ công tiêm nhiễm mã độc vào trường nhập liệu người dùng Ứng dụng web đọc nhập liệu người dùng nhiều cách khác dựa mơi trường mà triển khai Trong hầu hết Tấn cơng tiêm nhiễm SQL có mục tiêu ứng dụng web, mã độc tiêm nhiễm vào nhập liệu người dùng qua form xác nhận (form submissions) gửi ứng dụng web qua yêu cầu HTTP GET HTTP POST 11 Tiêm nhiễm thông qua cookies: Khi máy khách trả ứng dụng web, cookies sử dụng để lưu trữ thơng tin trạng thái máy khách Vì máy khách kiểm sốt hồn tồn cookies, kẻ cơng thay đổi cookies Khi ứng dụng web sử dụng nội dung cookies máy khách để xây dựng câu truy vấn với cookies bị thay đổi, câu truy vấn bị thay đổi theo Tiêm nhiễm Second-order: Cơ chế tiêm nhiễm tinh vi Với tiêm nhiễm Second-order, kẻ cơng dựa vào liệu có hệ thống CSDL để kích hoạt Tấn cơng tiêm nhiễm SQL Nên công xảy ra, câu truy vấn bị thay đổi từ người dùng mà từ thân hệ thống 1.2.2 Mục đích cơng Một Tấn cơng tiêm nhiễm SQL có nhiều mục đích cơng lúc Nhìn chung, mục đích Tấn cơng tiêm nhiễm SQL phân loại sau: Xác định tham số tiêm nhiễm: Kẻ cơng thăm dò ứng dụng web nhằm khám phá tham số hay trường nhập liệu người dùng lỗ hổng cho Tấn cơng tiêm nhiễm SQL Thực tìm vết CSDL: Kẻ cơng muốn tìm kiếm thơng tin kiểu phiên CSDL mà ứng dụng web sử dụng Tùy theo kiểu CSDL có phản ứng khác dạng câu truy vấn công khác Và từ thông tin phản hồi trên, kẻ cơng tìm kiểu phiên CSDL Kiểu phiên CSDL cho phép kẻ cơng tìm cách công cụ thể chuyển nhằm vào CSDL Xác định lược đồ CSDL: Để trích xuất liệu xác từ CSDL, kẻ cơng cần biết thông tin lược đồ CSDL tên bảng, tên cột kiểu liệu Kẻ cơng thu thập suy luận thông tin lược đồ CSDL Trích xuất liệu: Với mục đích công này, kẻ công mong muốn đánh cắp liệu từ CSDL Tùy vào loại ứng dụng web mà liệu chứa thơng tin nhạy cảm, bí mật khách hàng, người dùng hay tổ chức Phần lớn kẻ công vào ứng dụng web có mục đích Thêm thay đổi liệu: Mục tiêu kẻ công chèn thêm thông tin thay đổi thông tin CSDL 12 Thực từ chối dịch vụ: Những kẻ cơng với mục đích phá hoại cách thực dừng CSDL ứng dụng web, khiến người dùng khơng thể sử dụng Ngồi ra, kẻ cơng thực xóa bảng liệu, khóa bảng CSDL, làm tê liệt khả hoạt động CSDL thuộc loại Tránh né phát hiện: Kẻ công sử dụng kỹ thuật công nhằm tránh né phát chế bảo vệ hệ thống Vượt qua xác thực: Mục tiêu dạng công cho phép kẻ cơng vượt qua chế xác thực CSDL ứng dụng Khi thực thành công, kẻ công hưởng quyền mà gắn với người dùng khác Thực thi câu lệnh từ xa: Kẻ công cố gắng thực thi câu lệnh tùy ý CSDL Những câu lệnh lưu trữ thủ tục hay hàm cho CSDL người dùng Thực leo thang đặc quyền: Kẻ công lợi dụng sai sót logic thực thi CSDL để tiến hành chiếm đặc quyền Trái với công vượt qua xác thực, kiểu công tập trung vào việc khai thác đặc quyền CSDL người dùng 1.2.3 Kỹ thuật cơng Có nhiều kỹ thuật Tấn công tiêm nhiễm SQL khác chúng sử dụng cách đơn độc mà thường sử dụng kết hợp hay tuần tự, tùy theo mục tiêu cụ thể kẻ công Dưới kỹ thuật Tấn công tiêm nhiễm SQL tiêu biểu: Tautologies: Với kỹ thuật này, kẻ công tiêm nhiễm mã độc vào câu truy vấn có điều kiện khiến điều kiện câu truy vấn trở thành Sau câu truy vấn hợp lệ, chức xác thực người dùng: “SELECT accounts FROM users WHERE login=’ + $login + ‘ AND pass=’ + $pass + ‘”; Kẻ cơng nhập “‘ or 1=1 “ vào trường login, khiến câu truy vấn hợp lệ trở thành: “SELECT accounts FROM users WHERE login=’’ or 1=1-AND pass=’’”; Khi thực thi câu truy vấn bị thay đổi trên, CSDL bỏ qua chuỗi ký tự đằng sau dấu thích “ ”, với điều kiện “or 1=1” điều kiện câu truy 13 vấn Tức CSDL liệu trả kết điều kiện vậy, từ kẻ cơng vượt qua xác thực CSDL Chú thích cuối dòng (End-of-Line Comment): Kẻ công lợi dụng việc CSDL bỏ qua chuỗi đằng sau dấu thích dòng, ví dụ “ ”, thực thi truy vấn Bằng cách chèn dấu thích vào vị trí thích hợp câu truy vấn, kẻ công lừa CSDL thực thi câu truy vấn bị thay đổi Ví dụ ví dụ điển hình cho kỹ thuật công kẻ công thêm vào dấu thích “ ”, làm CSDL bỏ qua phần “AND pass=’’” thực thi câu truy vấn Truy vấn Union (Union query): Với kỹ thuật này, kẻ công lợi dụng lỗ hổng tham số để thay đổi liệu trả cho câu truy vấn Với câu truy vấn hợp lệ bên trên, kẻ cơng tiêm nhiễm vào trường login “’ UNION SELECT cardNo FROM CreditCards accNo=20301 ” Lúc câu truy vấn trở thành: WHERE “SELECT accounts FROM users WHERE login=’’ UNION SELECT cardNo FROM CreditCards WHERE accNo=20301 AND pass=’’”; Với câu truy vấn bị thay đổi trên, CSDL dù khơng tìm thấy ghi login phù hợp với “” tìm thấy ghi cardNo phù hợp với “accNo=20301” CSDL tiến hành hợp kết quả, cardNo trả cho ứng dụng Truy vấn Piggy-Backed (Piggy-Backed queries): Kỹ thuật công dựa vào máy chủ CSDL cấu hình để thực thi nhiều câu truy vấn khác dòng mã ngăn cách dấu “;” Kẻ công chèn thêm câu truy vấn trái phép vào câu truy vấn ban đầu với mục đích trích xuất liệu, thay đổi liệu, thực từ chối dịch vụ hay thực thi lệnh từ xa Ví dụ, kẻ cơng nhập mã độc “’; DROP table users ” vào trường password câu truy vấn hợp lệ Câu truy vấn lúc “SELECT accounts FROM users pass=’’; DROP table users ‘”; WHERE login=’’ AND Khi thực thi câu truy vấn trên, CSDL thực thi câu lệnh “DROP table users”, bảng users bị xóa Suy luận (Inference): Với kỹ thuật này, kẻ cơng khơng thực trích xuất liệu, thay vào tiến hành suy luận tái cấu trúc lại thông tin 14 liệu Kỹ thuật cơng có hai loại truy vấn trái phép không logic (illegal/logically incorrect queries) tiêm nhiễm SQL mù (Blind SQL injection) Với loại công truy vấn trái phép không logic, kẻ công cố gắng thu thập thông tin kiểu cấu trúc CSDL Kẻ cơng đơn giản nhập vào trường login câu truy vấn hợp lệ ký tự “’” hay “’’ or 1=0 ” có lỗi thực thi Dựa vào lỗi mà CSDL trả về, kẻ cơng thăm dò thơng tin liệu, từ xác định lỗ hổng hay cách thức công phù hợp với kiểu CSDL 1.3 Các phương pháp ngăn chặn công tiêm nhiễm SQL Các nhà nghiên cứu đề xuất nhiều kỹ thuật phòng chống cơng tiêm nhiễm SQL, nhìn chung chia thành hai loại kỹ thuật mã phòng thủ (defensive coding) kỹ thuật phát ngăn chặn (detection and prevention techniques) 1.3.1 Phương pháp mã phòng thủ Rất nhiều Tấn cơng tiêm nhiễm SQL thành cơng nhà phát triển sử dụng mã nguồn không bảo vệ Do vậy, mã phòng thủ cách thức vơ hiệu để làm giảm đáng kể mối đe dọa từ Tấn cơng tiêm nhiễm SQL Dưới ví dụ điển hình cho phương pháp mã phòng thủ: Thực hành mã phòng thủ (Defensive coding practices): Các lỗ hổng thơng thường khai thác Tấn công tiêm nhiễm SQL việc kiểm sốt đầu vào khơng hồn thiện Dưới kỹ thuật thực hành mã phòng thủ thơng dụng có hiệu quả:  Kiểm tra kiểu đầu vào (Input type checking): Tấn công tiêm nhiễm SQL tiêm nhiễm vào tham số kiểu chuỗi hay kiểu số Ngay cách kiểm sốt đơn giản hạn chế đáng kể cống Ví dụ trường nhập liệu kiểu số, nhà phát triển cần loại bỏ tất kiểu chuỗi hay kiểu ký tự (những ký tự ký tự số) nhập vào trường này, hạn chế đáng kể cơng  Mã hóa đầu vào (Endcoding of inputs): Tấn công tiêm nhiễm SQL thường tiêm nhiễm tham số kiểu chuỗi cách sử dụng ký tự đặc biệt để đánh lừa trình phân tích cú pháp SQL hiểu nhầm ký tự mã SQL nhập liệu người dùng Dù nhà phát triển cấm nhập ký tự này, điều làm giới hạn việc nhập liệu người dùng thông thường Một giải pháp tốt 37 Hình Ví dụ kỹ thuật công truy vấn piggy-backed Kẻ công tiếp tục vượt qua SDriver, lệnh SHUTDOWN không thực thi phương thức gọi lệnh thực thi truy vấn trường hợp excuteQuery, phương thức truy vấn để lấy liệu không thực thay đổi CSDL Như SDriver bị vượt qua cách lợi dụng lỗ hổng rút bỏ liệu câu truy vấn Để giải vấn đề cần chế rút bỏ liệu câu truy vấn tốt 3.2 Đề xuất cải tiến Như phân tích trên, vấn đề SDriver nằm chế rút bỏ liệu câu truy vấn Do vậy, chế rút bỏ liệu câu truy vấn đề xuất 3.2.1 Cơ chế rút bỏ liệu câu truy vấn Cơ chế rút bỏ liệu câu truy vấn đề xuất khơng đảm bảo trích xuất đặc trưng câu truy vấn mà đảm bảo không loại bỏ nhầm mã độc hại Sau số vấn đề cần xem xét đề xuất chế rút bỏ liệu câu truy vấn Đầu tiên, ta xem xét hai câu truy vấn sau: (1) “Select userid, username from USER_ACCOUNT where USER_NAME = ‘?’ and PASSWORD= ‘?’” (2) “Select a.userid, a.username from USERS a where a.userid = ‘?’ and a.password = ‘?’ /*dang nhap */” 38 Tuy hai câu truy vấn có khác biệt thực thi chúng trả kết giống hệt Sự khác biệt có phong cách lập trình nhà phát triển Nhà phát triển sử dụng biệt danh cho bảng, câu truy vấn (2) biệt danh cho bảng “USERS” “a”, sử dụng để xác định trường thuộc bảng nào, (2) “a.userid” xác định trường “userid” thuộc bảng USERS Hay nhà phát triển thêm thích, kiểu “/* dang nhap */”, để làm rõ ý nghĩa chức câu truy vấn Tức ký tự “+”, “-”, “.” hay chuỗi đánh dấu thích coi đặc trưng câu truy vấn, không nên loại bỏ chúng khỏi câu truy vấn Ngay kẻ cơng đốn cấu trúc câu truy vấn khó đốn đặc trưng Tiếp đến ta cần xem xét đến vấn đề loại bỏ chuỗi đầu vào Khi tiến hành loại bỏ chuỗi đầu vào cần xác định xác có chuỗi đầu vào loại bỏ vị trí chúng câu truy vấn hợp lệ Để làm điều đó, thay hồn tồn xóa bỏ chuỗi đầu vào, ta thay chúng ký tự đặc biệt để “đánh dấu” vị trí chuỗi bị loại bỏ, ví dụ ký tự ‘?’ Nếu có khác biệt ký tự “đánh dấu” vị trí số lượng câu truy vấn so với khuôn mẫu hợp lệ câu truy coi độc hại Cuối chuỗi loại bỏ bước rút bỏ liệu câu truy vấn phải lọc để đảm bảo không loại bỏ nhầm chuỗi độc hại Trong SDriver cũ, chuỗi bị loại bỏ khỏi câu truy vấn trình rút bỏ liệu khơng kiểm tra Chính điều dẫn đến việc loại bỏ nhầm chuỗi độc hại khỏi câu truy vấn Do chế rút bỏ liệu câu truy vấn đề xuất, chuỗi bị loại bỏ phải trải qua lần sàng lọc Một CSDL lưu trữ dạng công tiêm nhiễm biết sử dụng để lọc chuỗi bị loại bỏ Nếu chuỗi bị loại bỏ khớp với mẫu cơng tiêm nhiễm có khả chuỗi độc hại Lúc này, dù câu truy vấn có khớp với khn mẫu hợp lệ bị ngăn chặn 39 Hình Cơ chế rút bỏ liệu câu truy vấn đề xuất Các bước chế rút bỏ liệu câu truy vấn đề xuất thể hình 3.7 Trong SDriver cũ, chế độ huấn luyện chế độ thực thi sử dụng chung chế rút bỏ liệu câu truy vấn Với chế rút bỏ liệu câu truy vấn mới, chế độ huấn luyện chế độ thực thi có khác biệt rút bỏ liệu câu truy vấn Trong chế độ huấn luyện, với giả định chuỗi đầu vào hồn tồn bình thường chuỗi bị loại bỏ trải qua bước “khớp với mẫu độc hại” đưa thẳng đầu câu truy vấn rút bỏ liệu Trong chế độ thực thi, chuỗi bị loại bỏ phải trải qua bước “khớp với mẫu độc hại” để đảm bảo SDriver khơng loại bỏ nhầm chuỗi độc hại 3.2.2 Triển khai chế rút bỏ liệu đề xuất 40 Một bảng, gọi bảng anomaly, thêm vào CSDL ssql Bảng bao gồm trường trường “id” Trường “id” chứa mẫu công tiêm nhiễm biết Tùy vào kiểu CSDL ứng dụng web mà mẫu có khác biệt Hình Một số mẫu cơng tiêm nhiễm SQL bảng anomaly Trong trình triển khai nảy sinh vấn đề có nhiều kỹ thuật để lẩn tránh việc phát mã độc hại, cố tình thêm nhiều ký tự khoảng trắng, viết chữ hoa, thường xen kẽ… Do trước tiến hành khớp chuỗi bị loại bỏ với mẫu cơng tiêm nhiễm cần chuẩn hóa chuỗi cách đưa toàn chuỗi chữ thường, loại bỏ khoảng trắng đứng cạnh Ngoài mẫu cơng tiêm nhiễm có sẵn bảng anomaly, mẫu tự động thêm vào trình chạy chế độ thực thi Khi SDriver phát câu truy vấn không khớp với khuôn mẫu hợp lệ câu truy vấn độc hại bị ngăn chặn, đồng thời thêm vào bảng anomaly 3.3 Tóm tắt SDriver để lọt mã độc Vấn đề nằm chế rút bỏ liệu câu truy vấn, SDriver loại bỏ mã độc Các ký tự thông thường hay chuỗi thích coi đặc trưng riêng câu truy vấn, thân chúng mang phong cách lập trình riêng nhà phát triển Khi loại bỏ chuỗi đầu vào nằm cặp ngoặc đơn thay ký tự đặc biệt Tác dụng điều xác định vị trí số lượng chuỗi bị xóa bỏ Bất kỳ khác biệt vị trí, số lượng chuỗi bị xóa bỏ câu truy vấn gửi từ ứng dụng web với khuôn mẫu hợp lệ coi câu truy vấn độc hại, chế độ thực thi SDriver Các chuỗi bị loại bỏ phải lọc để đảm bảo không loại bỏ nhầm chuỗi độc hại Một bảng gọi anomaly chứa mẫu công tiêm nhiễm thêm vào CSDL ssql 41 CHƯƠNG KẾT QUẢ THỰC NGHIỆM ĐÁNH GIÁ 4.1 Mô thực nghiệm SDriver với chế rút bỏ liệu Sau SDriver với chế gọi tắt SDriver đề xuất Môi trường mô thực nghiệm SDriver đề xuất sau:  Ứng dụng web sử dụng để thực nghiệm xây dựng dựa tảng JSP Servlet  Sử dụng eclipse để làm môi trường chạy ứng dụng web  Trình điều khiển kết nối JBDC  CSDL cho ứng dụng web SDriver MySQL CSDL ứng dụng web data_JDBC, CSDL cho SDriver ssql Đặt chế độ hoạt động SDriver huấn luyện Chuyển dòng file mode.txt thành “training mode” Lần lượt thực thi câu truy vấn cách chạy chức ứng dụng web Tiến hành quan sát câu truy vấn rút bỏ liệu Khi toàn câu truy vấn có khn mẫu hợp lệ tương ứng CSDL ssql dừng chế độ huấn luyện Chuyển chế độ hoạt động SDriver sang thực thi Chuyển dòng file mode.txt thành “production mode” Lần lượt thực thi câu truy vấn đầu vào hợp lệ Tiến hành quan sát kết Lần lượt thử nghiệm kỹ thuật công vượt qua SDriver Quan sát kết Dưới chi tiết trình chạy mô thực nghiệm hoạt động SDriver với chế rút bỏ liệu Ở chế độ huấn luyện: Lần lượt thực thi câu truy vấn để huấn luyện cho SDriver Hình Một kết SDriver hoạt động chế độ huấn luyện với chế rút bỏ liệu Với chế rút bỏ liệu mới, chuỗi cặp ngoặc đơn khơng bị xóa bỏ hồn tồn, thay vào “’?’” Do kẻ cơng khơng thể thoải mái 42 chèn cặp dấu ngoặc đơn vào đầu vào Trong hình 3.5, câu truy vấn chưa có khn mẫu hợp lệ tương ứng ssql, nên SDriver tiến hành chèn thêm khuôn mẫu, dạng giá trị MD5, vào ssql Trong trường hợp, câu truy vấn có khn mẫu hợp lệ tương ứng ssql, SDriver đưa thông “SDriver: I nothing báo trùng lặp không cần thiết phải làm thêm: Duplicate entry This 912713a938e72f594123c7d838be9c91 exists” Ở chế độ thực thi: Khi có đầy đủ khn mẫu hợp lệ tất câu truy vấn ứng dụng web, chuyển SDriver sang chế độ thực thi, thay đổi dòng file mode.txt thành “production mode” Với đầu vào bình thường (hợp lệ) SDriver đưa thơng báo “NO NEED TO WORRY!” chuyển tiếp câu truy vấn cho trình điều khiển kết nối để thực thi Hình Kết SDriver khơng phát truy vấn bất thường Thử nghiệm số kỹ thuật công tiêm nhiễm SQL vượt qua SDriver mục 3.1: Kỹ thuật công Tautologies: Nhập “admin” vào trường User name form Login, trường Password chèn chuỗi độc hại “/*' OR 1=1 OR 'a'='*/” Kết sau: Hình Tấn cơng Tautologies bị phát ngăn chặn 43 Như hình 3.7, SDriver phát ngăn chặn thành công công tiêm nhiễm SQL Kẻ công chèn chuỗi độc hại vào trường Password, sau rút bỏ liệu vị trí số lượng chuỗi bị xóa bỏ khác biệt so với câu truy vấn hợp lệ, đồng thời thừa thêm đoạn mã SQL Chuỗi độc hại chèn vào không bị xóa bỏ phiên SDriver trước SDriver đưa cảnh báo “SDriver 666: ATTACKING!!! This e8cac4e880585d3f10265b4df516c2b does not exists!!! SDriver 562: NO RESULTS YOU ARE ATTACKING! ” Kỹ thuật cơng Chú thích cuối dòng: Chuỗi độc hại “ admin' ” chèn vào trường User name from Login, trường Password nhập “and PASSWORD= '” Kết sau: Hình 4 Tấn cơng thích cuối dòng bị phát ngăn chặn Tương tự công Tautologies, kỹ thuật cơng thích cuối dòng bị SDriver phát ngăn chặn thành công Kỹ thuật công Union: Chuỗi độc hại “abc/*’ union select * from USER_ACCOUNT union select * from USER_ACCOUNT WHERE ‘a’=’*/” chèn vào trường User name form Login, trường Password nhập tùy ý Kết sau: 44 Hình Tấn công truy vấn Union bị phát ngăn chặn Như hình 3.9, ta thấy tồn chuỗi mã độc chèn vào khơng bị xóa bỏ trước, tạo nên bất thường câu truy vấn rút bỏ liệu Cuộc công bị SDriver phát ngăn chặn Kỹ thuật công truy vấn Piggy-Backed: Chuỗi độc hại “admin/*'; SHUTDOWN;-'*/” chèn vào trường User name, trường Password nhập tùy ý Kết sau: Hình Tấn công truy vấn Piggy-Backed bị phát ngăn chặn Tương tự công trên, công truy vấn Piggy-Backed vượt qua SDriver bị ngăn chặn 45 Trên số ví dụ kỹ thuật công tiêm nhiễm SQL Tuy nhiên để đánh giá xác hoạt động SDriver với chế rút bỏ liệu cần đánh giá hai khía cạnh chi phí hoạt động độ xác 4.2 Đánh giá hoạt động SDriver đề xuất Hoạt động SDriver cũ đánh giá theo hai khía cạnh chi phí hoạt động độ xác Do để so sánh hoạt động SDriver đề xuất với SDriver cũ cần đánh giá hoạt động SDriver đề xuất theo hai khía cạnh Ngoài phương pháp đánh giá hoạt động SDriver cũ sử dụng để đánh giá hoạt động SDriver đề xuất 4.2.1 Đánh giá chi phí hoạt động Chi phí hoạt động SDriver đánh giá dựa tiêu chí chi phí triển khai hiệu hệ thống Về chi phí triển khai, SDriver trình điều khiển trung gian chèn vào ứng dụng web trình điều khiển kết nối Do vậy, lượng mã nguồn thay đổi ít, thay đổi lại chuỗi kết nối tới CSDL Thứ việc huấn luyện cho SDriver cần theo kịch thích hợp để chạy ứng dụng web, đảm bảo toàn câu truy vấn ứng dụng web có khn mẫu hợp lệ tương ứng Trong q trình huấn luyện sử dụng cơng cụ kiểm thử tự động để trình huấn luyện SDriver trở nên đơn giản Vậy, SDriver khơng đòi hỏi phải chỉnh sửa lại nhiều mã nguồn ứng dụng web, nhiên cần có thời gian để huấn luyện cho SDriver Vì chế độ huấn luyện, SDriver chạy với giả định tất câu truy vấn bình thường nên chế độ huấn luyện cần chạy môi trường không trực tuyến (offline) để tránh khả bị lọt câu truy vấn độc hại chạy trực tuyến (online) Về tiêu chí hiệu hệ thống, hiệu SDriver cũ kiểm thử hệ thống sau so sánh với Hệ thống sử dụng để thử nghiệm là:  Cấu hình máy tính: Bộ vi xử lý Intel Core i3 2.67Ghz, Ram 3GB  Môi trường: Java SE Develop Kit 8, Windows 32bit  CSDL: MySQL version 5.7 Bảng Thời gian thực thi truy vấn phiên SDriver Chế độ Huấn luyện Thực thi SDriver cũ (ms) 15.9375 3.8125 SDriver đề xuất (ms) 15.5625 4.3125 Tỷ lệ mới/cũ (%) 97.64706 113.1148 46 Bảng 4.1 thể thời gian thực thi câu truy vấn, đơn vị mili giây (ms), SDriver cũ SDriver đề xuất hai chế độ huấn luyện thực thi Cột “Tỷ lệ mới/cũ” thể so sánh tỷ lệ thời gian thực thi câu truy vấn SDriver đề xuất với SDriver cũ Trong chế độ huấn luyện, thời gian thực thi câu truy vấn SDriver đề xuất 97,65% so với SDriver cũ Điều chế rút bỏ liệu lược bỏ bớt thành phần xóa bỏ khỏi câu truy vấn tập trung vào xóa bỏ chuỗi nhập liệu đầu vào Trong chế độ thực thi, thời gian thực thi câu truy vấn SDriver đề xuất lại nhỉnh hơn, 113,11 % so với SDriver cũ Điều khơng nằm ngồi dự liệu SDriver đề xuất, chuỗi nhập liệu khơng bị loại bỏ rút bỏ liệu mà phải trải qua lần sàng lọc Ngồi ta thấy với SDriver đề xuất, thời gian thực thi câu truy vấn chế độ huấn luyện lại cao nhiều so với chế độ thực thi Dù chế độ huấn luyện chuỗi bị loại bỏ trải qua bước khớp với mẫu công tiêm nhiễm Nguyên nhân chế độ huấn luyện câu truy vấn sau rút bỏ liệu để tạo khuôn mẫu hợp lệ phải chèn thêm vào bảng “signatures” CSDL ssql 4.2.2 Đánh giá độ xác Để đánh giá độ xác SDriver với chế rút bỏ liệu có hai cách thức thực là: sử dụng công cụ kiểm thử đánh giá dựa ứng dụng web thực tế Kết đánh giá độ xác SDriver đề xuất so sánh với SDriver cũ Do trình đánh giá chạy thực nghiệm SDriver cũ SDriver đề xuất, sau so sánh kết thu Sử dụng cơng cụ kiểm thử để đánh giá độ xác: Bộ công cụ kiểm thử sử dụng để đánh giá độ xác SDriver đề xuất sqlmap, tải trang web https://sqlmap.org Sqlmap công cụ kiểm thử công tiêm nhiễm SQL cho ứng dụng web, mạnh mẽ đa Sqlmap hỗ trợ kiểm thử nhiều loại công tiêm nhiễm SQL khác nhau, hỗ trợ kiểm thử nhiều loại CSDL khác Tuy nhiên sqlmap khơng hỗ trợ tự động dò quét toàn ứng dụng web mà phải truyền tham số cho Hai phương thức truyền liệu phổ biến ứng dụng web GET POST Đối với phương thức, ta cần truyền tham số thích hợp cho sqlmap để kiểm thử Đối với phương thức GET, truyền tham số trực tiếp đường link url ứng dụng web Ví dụ kiểm thử cơng tiêm nhiễm SQL qua tham số “Code”, với SDriver cũ, SDriver đề xuất thực tương tự: 47 Hình Kiểm thử công tiêm nhiễm SQL với tham số code theo phương thức GET Theo hình trên, đoạn mã url truyền vào sqlmap để kiểm thử “http://localhost:8080/simplewebapp_old/editProduct?code=” Ngoài tham số “ dbs” truyền vào sqlmap với ý nghĩa cố gắng lấy danh sách CSDL máy chủ Sqlmap tự động tiêm nhiễm thơng qua tham số “code” Như hình có chuỗi mã độc sqlmap cố gắng tiêm nhiễm “AND 6084=6084 AND 'jQSY'='jQSY”, SDriver phát ngăn chặn Đối với phương thức POST trước hết cần phải lấy tham số POST ứng dụng web Để làm điều cần sử dụng công cụ Burp Suite, phiên Free Edition Sau lấy thông tin phương thức POST, hình thơng tin POST trang login, lưu thơng tin dạng file text, ví dụ post.txt, để sử dụng 48 Hình Ví dụ thơng tin phương thức POST trang login Khi có thơng tin phương thức POST tiến hành kiểm thử tham số, ví dụ “userName” “password” Cũng giống với phương thức GET, tiến hành kiểm thử công tiêm nhiễm với tham số “password” với phương thức POST, sqlmap tiến hành tự động tiêm nhiễm mã độc hại, hình ví dụ Mã độc hại “UNION ALL SELECT NULL, NULL, NULL,NULL,NULL,CONCAT(CONCAT ('qbvqq','tPGmtjQVRlTUhAXXcZoqrccTNrKmrpmXcVBcEBsA'),'qpbvq')-KBkR” tiêm vào tham số “password” SDriver phát ngăn chặn 49 Hình Kiểm thử công tiêm nhiễm SQL với tham số password theo phương thức POST Trên hai ví dụ cách thức sử dụng công cụ sqlmap để kiểm thử khả phát ngăn chặn công tiêm nhiễm SDriver cũ SDriver đề xuất Tiến hành sử dụng sqlmap để thăm dò lỗ hổng từ tham số khác ứng dụng web Kết thu SDriver cũ SDriver đề xuất phát ngăn chặn thành công tất chuỗi độc hại sinh từ sqlmap Đánh giá qua ứng dụng web thực tế: Ứng dụng web thực tế sử dụng để đánh giá ba ứng dụng web có mã nguồn mở, tải trang web http://www.codewithc.com SDriver cũ SDriver đề xuất triển khai ba ứng dụng web Một danh sách chuỗi mã độc, thuộc nhiều kỹ thuật công tiêm nhiễm khác nhau, sử dụng để cố gắng tiêm nhiễm vào tham số ứng dụng web Bảng 4.2 thể kết phát ngăn chặn công tiêm nhiễm SQL SDriver cũ SDriver đề xuất Cột “tấn công tiêm nhiễm SQL” thể số công thực Cột “ngăn chặn” thể số công mà SDriver ngăn chặn thành công, cột “tỷ lệ” tỷ lệ % ngăn chặn thành công 50 Bảng Kết ngăn chặn công tiêm nhiễm SQL Ứng dụng web Tấn công tiêm nhiễm SQL 110 130 151 SDriver cũ Ngăn chặn Tỷ lệ (%) 91,8% 95,4% 96% SDriver đề xuất Ngăn chặn Tỷ lệ (%) 110 100% 130 100% 151 100% EMusic 101 Book store 124 Document 145 Manager System Trong trình kiểm thử hoạt động SDriver ứng dụng web, có nhiều loại tham số khác khơng phải loại tham số thích hợp để thử nghiệm cơng tiêm nhiễm Ví dụ tham số “search” ứng dụng “Document Manager System”, có hai câu truy vấn thực thi “select * from documentload where status !='deleted' and author='user1'” “select * from documentshared where status !='deleted' and sharedto='user1'” Trong hai câu truy vấn khơng có tham số “search”, thay vào ứng dụng web truy vấn lấy tồn danh sách “document” có liên quan đến user sau so sánh danh sách với chuỗi truyền vào tham số search Với tham số kiểu cơng tiêm nhiễm SQL vơ nghĩa khơng thực tác động đến câu truy vấn Kết SDriver không phát không đưa cảnh báo Do cơng tiêm nhiễm thử nghiệm vào kiểu tham số khơng tính vào bảng kết 51 KẾT LUẬN Kết đạt được: Sau thời gian tìm hiểu thực đề tài: “Chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh” Nội dung luận văn đạt kết sau:     Hiểu tổng quan công tiêm nhiễm SQL, cách thức công phương pháp ngăn chặn Hiểu chế hoạt động kỹ thuật chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh - SDriver, áp dụng thực mô hoạt động SDriver Tìm vấn đề tồn SDriver Đưa đề xuất cải tiến  Chạy mô SDriver với đề xuất cải tiến đưa đánh giá Nhìn chung, luân văn đạt mục tiêu nghiên cứu đề Tuy nhiên luận văn cần phải đưa đánh giá có tính thuyết phục hơn, mở rộng ứng dụng web, mở rộng số lượng câu truy vấn, thực thi câu truy vấn có độ phức tạp cao… Hướng phát triển tiếp theo: Nội dung luận văn phát triển theo hướng sau:  Tiếp tục nghiên cứu cải tiến hiệu kỹ thuật  Nghiên cứu để triển khai nhiều tảng khác ... Đề xuất cải tiến chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh Đưa phương pháp cải tiến chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh Chương 4: Kết thực... thức Tấn công tiêm nhiễm SQL, khái niệm Tấn công tiêm nhiễm SQL, cách thức Tấn công tiêm nhiễm SQL phương pháp ngăn chặn Tấn cơng tiêm nhiễm SQL Từ nhận thấy: Tấn công tiêm nhiễm SQL dạng công tiêm. .. chống công tiêm nhiễm SQL sử dụng khuôn mẫu hợp lệ theo bối cảnh, SDriver Dr Dimitris Mitropoulos Prof Diomidis Spinellis đề xuất kỹ thuật chống công tiêm nhiễm SQL khuôn mẫu hợp lệ theo bối cảnh

Ngày đăng: 20/06/2020, 12:01

Từ khóa liên quan

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

Tài liệu liên quan