Thông thường, tấn công CSDL có thể phân loại thành tấn công bên trong và tấn công bên ngoài. Phát hiện tấn công bên trong thường khó hơn rất nhiều so với tấn công bên ngoài, vì tấn công bên trong được thực hiện bởi những người có các đặc quyền truy cập vào hệ thống nhưng lại thực hiện hành vi độc hại. Do đó, phát hiện tấn công bên trong là một thách thức đối với các IDS nói chung, đặc biệt là IDS về CSDL.
Các kỹ thuật phát hiện xâm nhập CSDL
Có hai kỹ thuật phát hiện xâm nhập CSDL gồm: kỹ thuật phát hiện dựa vào mẫu và kỹ thuật khai phá dữ liệu.
Với kỹ thuật phát hiện dựa vào mẫu, IDS sẽ mô tả đặc điểm của các cách thức xâm nhập vào hệ thống đã biết. Mỗi kiểu xâm nhập được mô tả như một mẫu và được lưu trong hệ thống. Hệ thống phát hiện sẽ thực hiện so khớp điển hình, để liên tục so sánh hành động của hệ thống hiện tại với một tập các kịch bản xâm nhập, nhằm tìm ra kịch bản đang được tiến hành. Cách tiếp cận này sẽ chỉ phát hiện ra các kiểu tấn công đã biết. Vấn đề của cách tiếp cận này là không có khả năng phát hiện tấn công mới, không có mẫu trong CSDL.
Kỹ thuật khai phá dữ liệu dựa trên định nghĩa và mô tả đặc điểm của các hành vi có thể chấp nhận của hệ thống, phân biệt với các hành vi không mong muốn, hoặc bất thường và tìm ra các thay đổi, hành vi bất hợp pháp, vì thế, phương pháp này có khả năng phát hiện các tấn công mới. Tuy nhiên, ranh giới giữa hành vi hợp lệ và hành vi bất thường, thường khó xác định hơn so với việc xác định ranh giới giữa dạng thức chấp nhận được và dạng thức bất thường của đoạn mã, vì dữ liệu lưu trữ đã được định nghĩa rõ ràng (chỉ cần một bit khác nhau là có thể phát hiện).
Dưới đây sẽ giới thiệu một IDS - dựa trên kỹ thuật khai phá dữ liệu, được đề xuất cho hệ thống CSDL.
Kiến trúc hệ thống phát hiện xâm nhập CSDL
Người dùng ứng dụng CSDL gửi các truy vấn “thô” thông qua IDS CSDL, để kiểm tra giao dịch trực tuyến của người dùng đó có được phép hay không. Nếu giao dịch được ủy quyền, IDS CSDL sẽ cho phép giao dịch kết nối vào hệ quản trị CSDL (Hình 1)
Hình 1: Kiến trúc IDS CSDL
IDS CSDL bao gồm 3 mô-đun chính: thuật toán tạo hồ sơ tự động - bộ tạo hồ sơ, thuật toán phân tích truy vấn SQL - bộ trích chọn đặc trưng và thuật toán phát hiện giao dịch độc hại tự động - công cụ phát hiện của hệ thống.
Nhật ký kiểm toán ngoại tuyến của hệ thống lưu trữ dữ liệu của các giao dịch được ủy quyền. Các thông tin này được trích xuất từ tệp nhật ký, nhờ cơ chế kiểm toán của DBMS. Tệp nhật ký này lưu thông tin về các giao dịch hợp pháp, hay các giao dịch được uỷ quyền. Bộ tạo hồ sơ sẽ lấy dữ liệu nhật ký kiểm toán ngoại tuyến (bảng 1) làm đầu vào và tạo hồ sơ giao dịch. Các hồ sơ giao dịch này được coi là hồ sơ được ủy quyền và được lưu trữ tại hệ thống, sau đó được sử dụng tại giai đoạn phát hiện.
Bảng 1: Bảng nhật ký kiểm toán ngoại tuyến (đầu vào cho pha huấn luyện)
Thuật toán tạo hồ sơ
Đọc các bản ghi trong bảng kiểm toán;
Sắp xếp bảng kiểm toán theo session ID và sequence no;
Với mỗi session ID của bảng kiểm toán thực hiện
{
while (session ID hiện tại chứa các hành động) do
{
print sequence no, command type và target object của hành động;
sequence no = sequence no + 1;
}
session ID = session ID + 1;
}
Bất kỳ người dùng ứng dụng CSDL nào muốn thực hiện giao dịch trong DBMS sẽ gửi các truy vấn thô đến Bộ trích chọn đặc trưng, tại đây sẽ trích xuất các đặc trưng cần thiết như: kiểu lệnh (command type), đối tượng đích (target object) từ các truy vấn thô trực tuyến được gửi bởi người dùng và lưu trữ nó trong bảng vết kiểm toán trực tuyến.
Thuật toán phân tích cú pháp câu truy vấn SQL
Nạp truy vấn SQL dưới dạng chuỗi;
cmd_type = ;
tar_obj = ;
Quét truy vấn SQL từng từ cách nhau bởi khoảng trống;
If (từ đầu tiên = SELECT) then
cmd_type = SELECT;
Tìm từ FROM;
tar_obj = từ sau từ FROM;
Elseif (từ đầu tiên = INSERT) then
cmd_type = INSERT;
Tìm từ INTO;
tar_obj = từ sau từ INTO;
Elseif (từ đầu tiên = DELETE) then
cmd_type = DELETE;
Tìm từ FROM;
tar_obj = từ sau từ FROM;
Elseif (từ đầu tiên = UPDATE) then
cmd_type = UPDATE;
tar_ obj = từ sau từ UPDATE;
Endif
Lưu giá trị của biến cmd_type và tar_obj trong bảng ONLINE_AUDIT;
Công cụ phát hiện sẽ tạo ra hồ sơ giao dịch cho dữ liệu được lưu trữ trong vết kiểm toán trực tuyến. Hồ sơ này sẽ được so sánh với hồ sơ giao dịch được ủy quyền. Nếu hồ sơ giao dịch trực tuyến phù hợp với hồ sơ giao dịch được ủy quyền, công cụ phát hiện sẽ cho phép giao dịch tiếp tục thực hiện trên DBMS. Nếu hồ sơ giao dịch trực tuyến không khớp với hồ sơ giao dịch được ủy quyền, công cụ phát hiện sẽ không cho phép giao dịch tiếp tục thực hiện trên DBMS, bị đánh dấu là một giao dịch độc hại và hệ thống đưa ra cảnh báo.
Thuật toán phát hiện giao dịch độc hại
Đọc các bản ghi từ bảng ONLINE_AUDIT;
Online_cnt = 0;
While (bảng ONLINE_AUDIT chứa các bản ghi)
{
onlile_cnt = online_cnt + 1;
}
Đọc các bản ghi từ bảng OFFLINE_AUDIT theo sessionID;
offline_cnt = 0;
Với mỗi sessionID của bảng ONLINE_AUDIT
{
while (sessionID hiện tại có chứa các hành động)
{
ofline_cnt = offline_cnt + 1;
}
if (online_cnt == offline_cnt)
{
While (bảng ONLINE_AUDIT chứa các bản ghi)
{
So sánh kiểu lệnh và đối tượng đích của bảng ONLINE_AUDIT với bảng OFFLINE_AUDIT cho sessionID hiện tại;
}
if (kiểu câu lệnh và đối tượng đích của cả hai bảng phù hợp với sessionID hiện tại) then
{
flag = 1;
Goto endtran;
}
else
flag = 0;
}
sessionID = sessionID + 1;
}
endtran:
if (flag = 1) then
Giao dịch hợp lệ;
else
Giao dịch độc hại;
Kết luận
Phát hiện xâm nhập là lớp phòng vệ thứ hai, khi các kỹ thuật ngăn chặn trước đó đã bị vượt qua và có một xâm nhập tiềm năng tác động vào hệ thống. Các IDS thiết kế cho mạng và hệ điều hành là không đủ để bảo vệ CSDL khỏi các mối đe dọa nội bộ, trong khi đây là vấn đề quan trọng đối với an toàn CSDL.
Các mối đe dọa này do chính những người dùng hợp pháp của hệ thống (có quyền truy cập vào dữ liệu và tài nguyên) gây ra. Vì thế, việc phát hiện và ngăn chặn sẽ khó khăn hơn rất nhiều so với các mối đe dọa khác. Để đảm bảo an toàn cho CSDL, ứng dụng IDS cho hệ quản trị CSDL là rất cần thiết. Đây là hướng nghiên cứu đang được quan tâm nhiều trên thế giới.