NGUYỄN NGỌC THANH
BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI
LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN
CÔNG NGHỆ THÔNG TIN
MỘT SỐ PHƯƠNG PHÁP PHÁT HIỆN TẤN CÔNG SQL
INJECTION DỰA TRÊN KỸ THUẬT HỌC MÁY
NGUYỄN NGỌC THANH
2015 - 2017
HÀ NỘI - 2017
i
BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI
LUẬN VĂN THẠC SỸ
MỘT SỐ PHƯƠNG PHÁP PHÁT HIỆN TẤN CÔNG SQL
INJECTION DỰA TRÊN KỸ THUẬT HỌC MÁY
NGUYỄN NGỌC THANH
CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 60.48.02.018
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN
HÀ NỘI - 2017
ii
LỜI CAM ĐOAN
Tôi xin cam đoan mọi kết quả của đề tài: “Một số phương pháp phát hiện tấn
công SQL Injection dựa trên kỹ thuật học máy” là công trình nghiên cứu của cá nhân
tôi và chưa từng được công bố trong bất cứ công trình khoa học nào khác cho tới thời
điểm này.
Hà Nội, Ngày
tháng
Tác giả luận văn
Nguyễn Ngọc Thanh
iii
năm 2017
LỜI CẢM ƠN
Luận văn thạc sĩ kỹ thuật chuyên ngành công nghệ thông tin với đề tài “Một số
phương pháp phát hiện tấn công SQL Injection dựa trên kỹ thuật học máy” là kết quả
của quá trình cố gắng không ngừng của bản thân và được sự giúp đỡ, động viên khích
lệ của các thầy, bạn bè đồng nghiệp và người thân. Qua trang viết này tác giả xin gửi
lời cảm ơn tới những người đã giúp đỡ tôi trong thời gian học tập - nghiên cứu khoa
học vừa qua.
Tôi xin tỏ lòng kính trọng và biết ơn sâu sắc đối với thầy giáo PGS.TS Đoàn
Văn Ban đã trực tiếp tận tình hướng dẫn cũng như cung cấp tài liệu thông tin khoa học
cần thiết cho luận văn này.
Xin chân thành cảm ơn Lãnh đạo trường Viện Đại học Mở Hà Nội đã tạo điều
kiện cho tôi hoàn thành tốt công việc nghiên cứu khoa học của mình.
Cuối cùng tôi xin chân thành cảm ơn đồng nghiệp, đơn vị công tác đã giúp đỡ
tôi trong quá trình học tập và thực hiện Luận văn.
TÁC GIẢ
Nguyễn Ngọc Thanh
iv
MỤC LỤC
MỤC LỤC ........................................................................................................................ v
DANH SÁCH CÁC BẢNG BIỂU............................................................................... viii
DANH MỤC CÁC HÌNH VẼ.........................................................................................ix
MỞ ĐẦU .......................................................................................................................... 2
CHƯƠNG 1: TỔNG QUAN VỀ TẤN CÔNG SQL INJECTION VÀ KỸ THUẬT
KHAI PHÁ DỮ LIỆU ...................................................................................................... 5
1.1. Các tấn công cơ sở dữ liệu .................................................................................... 5
1.1.1. Lạm dụng quyền vượt mức (Excessive privileges) ....................................... 5
1.1.2. Lạm dụng quyền hợp pháp (Privilege abuse) ................................................ 6
1.1.3. Nâng cấp quyền bất hợp pháp (Unauthorized Privilege elevation)............... 6
1.1.4. Lợi dụng các điểm yếu nền tảng (Platform vulnerabilities) .......................... 6
1.1.5. Tấn công SQL Injection ................................................................................ 7
1.1.6. Lợi dụng dấu vết kiểm toán yếu (Weak audit) .............................................. 8
1.1.7. Tấn công từ chối dịch vụ (DoS) .................................................................... 8
1.1.8. Lợi dụng các điểm yếu trong giao thức giao tiếp cơ sở dữ liệu (Database
protocol vulnerabilities)........................................................................................... 9
1.1.9. Lợi dụng sự xác thực yếu (Weak authentication).......................................... 9
1.1.10. Lợi dụng sự sơ hở của dữ liệu dự phòng (Exposure of backup data) .............. 10
1.2. Các tấn công SQL Injection ................................................................................ 10
1.2.1. Khái niệm tấn công SQL Injection .............................................................. 10
1.2.2. Các dạng tấn công bằng SQL Injection ....................................................... 12
1.2.3. Phòng chống SQL Injection ........................................................................ 19
1.3. Tổng quan về kỹ thuật khai phá dữ liệu và kỹ thuật học máy.................................... 22
1.3.1. Quá trình khai phá dữ liệu ........................................................................... 23
1.3.2. Các bài toàn thông dụng trong khai phá dữ liệu.......................................... 25
1.3.3. Sự tương đồng và khác biệt giữa khai phá dữ liệu và học máy................... 25
1.3.4. Các ứng dụng của khai phá dữ liệu ............................................................. 26
1.3.5. Ứng dụng lý thuyết Bayes trong phân lớp................................................... 27
v
1.4. Kết luận chương .................................................................................................. 30
CHƯƠNG 2: MỘT SỐ PHƯƠNG PHÁP PHÁT HIỆN TẤN CÔNG SQL INJECTION
DỰA TRÊN HỌC MÁY ................................................................................................ 31
2.1. Phương pháp phát hiện dựa trên phân lớp .......................................................... 31
2.2. Phương pháp phát hiện dựa trên luật kết hợp ..................................................... 35
2.3. So sánh các phương pháp phát hiện tấn công ..................................................... 45
2.4. Kết luận chương .................................................................................................. 46
CHƯƠNG 3: XÂY DỰNG MÔ HÌNH BÀI TOÁN THỰC NGHIỆM SỬ DỤNG KỸ
THUẬT HỌC MÁY ĐỂ PHÁT HIỆN TẤN CÔNG SQL INJECTION ...................... 47
3.1. Mục đích của thực nghiệm.................................................................................. 47
3.2. Các bước thực hiện ............................................................................................. 47
3.3. Công cụ sử dụng ................................................................................................. 47
3.4. Mô hình hệ thống mô phỏng và thu thập dữ liệu ................................................ 48
3.4.1. Mô hình hệ thống mô phỏng ....................................................................... 48
3.4.2. Xây dựng ứng dụng web ............................................................................. 48
3.4.3. Thu thập dữ liệu thực nghiệm...................................................................... 49
3.5. Sử dụng chương trình tiền xử lý ......................................................................... 49
3.6. Xây dựng thực nghiệm phát hiện tấn công dựa trên khai phá dữ liệu ...................... 51
3.6.1. Xây dựng bộ phân lớp ................................................................................. 51
3.6.2. Kết quả bộ phân lớp..................................................................................... 52
3.6.3. Phân tích và đánh giá kết quả ...................................................................... 55
3.4. Kết luận chương .................................................................................................. 57
KẾT LUẬN .................................................................................................................... 58
DANH MỤC TÀI LIỆU THAM KHẢO ....................................................................... 60
vi
DANH MỤC CÁC TỪ VIẾT TẮT
STT
Từ viết tắt
Tiếng Anh
Tiếng Việt
1
SQL
Structured Query Language
Ngôn ngữ truy vấn mang tính cấu trúc
2
IPS
Intrusion Prevention System
Hệ thống ngăn chặn tấn công
3
DoS
Denial of Service
Tấn công từ chối dịch vụ
vii
DANH SÁCH CÁC BẢNG BIỂU
Bảng 2.1 - Ví dụ xây dựng các bộ ba ............................................................................. 33
Bảng 2.2 - Ví dụ về các giao dịch cho thuật toán khai phá chuỗi .................................. 41
Bảng 2.3 - Lược đồ cơ sở dữ liệu ngân hàng ................................................................. 42
Bảng 2.4 - Bảng trọng số cho các thuộc tính được sử dụng trong cơ sở dữ liệu ngân
hàng ................................................................................................................................ 42
Bảng 2.5 - Các chuỗi khai phá được với giá trị độ hỗ trợ tối thiểu là 25% ................... 42
Bảng 2.6 - Các chuỗi đọc và các chuỗi ghi .................................................................... 43
Bảng 2.7 - Các luật phụ thuộc đọc và ghi ...................................................................... 44
Bảng 2.8 - So sánh các kỹ thuật phát hiện tấn công....................................................... 45
Bảng 3.1 - Thống kê kết quả của mô hình huấn luyện c-triplet ..................................... 53
Bảng 3.2 - Thống kê kết quả của mô hình huấn luyện m-triplet ................................... 53
Bảng 3.3 - Thống kê kết quả của mô hình huấn luyện f-triplet ..................................... 54
Bảng 3.4 - Thống kê False negatives/positive ............................................................... 56
Bảng 3.5 - Thống kê Recall/Precision ........................................................................... 57
viii
DANH MỤC CÁC HÌNH VẼ
Hình 2.1 - Quá trình phát hiện tấn công ......................................................................... 34
Hình 2.2 - Các thành phần trong kỹ thuật phát hiện tấn công cơ sở dữ liệu dựa trên luật
kết hợp ............................................................................................................................ 37
Hình 3.1 - Mô hình hệ thống mô phỏng tấn công ứng dụng web và thu thập dữ liệu ... 48
Hình 3.2 - Định dạng dữ liệu đã được tiền xử lý theo định dạng *.arff của Weka ........ 51
Hình 3.3 - Xây dựng mô hình phát hiện tấn công với Weka sử dụng thuật toán Naive
Bayes .............................................................................................................................. 52
Hình 3.4 - Thống kê Precision và Recall trong trường hợp 1 ........................................ 56
Hình 3.5 - Thống kê Precision và Recall trong trường hợp 2 ........................................ 56
ix
MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay, vấn đề bảo mật an ninh hệ thống mạng là một phần rất quan trọng trong
các công ty, tập đoàn, các tổ chức cơ quan, chính phủ trong cuộc sống xã hội hiện đại.
Vấn đề an ninh và bảo mật là chìa khóa tất yếu thành công trong các lĩnh vực kinh tế,
chính trị, quốc phòng an ninh góp phần thúc đẩy sự phát triển toàn cầu nhanh chóng, liên
kết khoảng cách địa lý, không gian, thời gian các nơi trên thế giới với nhau mà vẫn đảm
bảo được an toàn.
Sự phát triển vượt bậc của công nghệ web đã đem lại rất nhiều thuận lợi cho người
sử dụng cũng như các nhà phát triển.Nhưng cùng với sự phát triển này thì các ứng dụng
web cũng trở thành mục tiêu ưa thích của những kẻ tấn công. Các hình thức tấn công rất
đa dạng như thay đổi nội dung của trang web, tấn công từ chối dịch vụ khiến cho việc
truy cập trang web không thể thực hiện hoặc rất khó thực hiện, chiếm quyền điều khiển
trang web… Mục tiêu của những kể tấn công cũng rất khác nhau, có thể tấn công xuất
phát từ thiện chí, nhằm tìm ra những điểm yếu và thông báo cho nhà quản trị hệ thống,
nghiêm trọng hơn là tấn công để phục vụ cho các mục đích xấu như tống tiền, ăn cắp dữ
liệu, phá huỷ dữ liệu… Trong các hình thức tấn công thì tấn công bằng cách chèn mã
lệnh (injection) là rất phổ biến.Tấn công website bằng kỹ thuật SQL Injecion từ lâu đã là
mối quan tâm bảo mật hàng đầu của các nhà phát triển web và chủ sở hữu của website.
Giờ đây, các cuộc tấn công này ngày càng trở nên tinh vi và khó phát hiện, ngăn chặn
hơn.
SQL Injection là kiểu tấn công có mục tiêu rất cụ thể và thường là mục tiêu đơn lẻ
cho mỗi một vụ tấn công. Chính vì thế mà những vụ tấn công như thế này thường không
gây được sự chú ý rộng rãi như virus hay sâu máy tính.Âm thầm như thế nhưng thiệt hại
của những vụ tấn công này lại rất lớn. Nếu như một máy chủ cơ sở dữ liệu bị tin tặc
chiếm quyền kiểm soát thì sẽ có một khối lượng rất lớn thông tin cá nhân, thông tin tài
chính của người dùng sẽ rơi vào tay chúng. Và nếu thành công thì có thể nói nguồn thông
tin mà tin tặc thu được còn nhiều hơn rất nhiều so với tấn công phishing. Tin tặc không
2
phải mất công giả mạo để lừa người sử dụng cung cấp thông tin cá nhân.Tỉ lệ thành công
của các vụ tấn công SQL Injection thương rất cao.
Xuất phát từ thực tế nêu trên, luận văn hướng tới nghiên cứu các kiến thức tổng
quan về những tấn công cơ vào cơ sở dữ liệu, đặc biệt là các kiểu tấn công SQL
Injection.Sau khi đã nắm được một số kiến thức cơ bản, luận văn tìm hiểu các cách thức
phòng chống và phát hiện những tấn công vào cơ sở dữ liệu, tấn công SQL Injection
thông qua phương pháp học máy.Cuối cùng, là thực nghiệm kiểm chứng các phân tích để
thấy được hiệu quả của phương pháp học máy trong phát hiện các tấn công vào cơ sở dữ
liệu cũng như là SQL Injection.
2. Mục đích nghiên cứu
Nghiên cứu ứng dụng của kỹ thuật học máy trong phát hiện tấn công SQL
Injection thông qua các dữ liệu được trích xuất từ câu lệnh SQL, xây dựng và đánh giá
thử nghiệm.
3. Đối tượng và phạm vi nghiên cứu
Các tấn công vào cơ sở dữ liệu, tấn công SQL Injection, kỹ thuật học máy giúp
phát hiện các tấn công vào cơ sở dữ liệu, tấn công SQL Injection.
4. Phương pháp nghiên cứu
- Phân tích, tổng hợp tài liệu trong nước và nước ngoài về các tấn công vào cơ sở
dữ liệu, tấn công SQL Injection, kỹ thuật học máy;
- Xây dựng tập dữ liệu cho mô hình phát hiện tấn công vào cơ sở dữ liệu;
- Xây dựng và đánh giá mô hình thử nghiệm.
5. Bố cục của luận văn
Mở đầu:
Chương 1: Tổng quan về tấn công SQL Injection và kỹ thuật khai phá dữ liệu
3
Chương 2: Một số phương pháp phát hiện tấn công SQL Injection dựa trên kỹ
thuật học máy
Chương 3: Xây dựng mô hình bài toán thực nghiệm sử dụng kỹ thuật học máy để
phát hiện tấn công SQL Injection
Kết luận
Tài liệu tham khảo
4
CHƯƠNG 1. TỔNG QUAN VỀ TẤN CÔNG SQL INJECTION VÀ KỸ
THUẬT KHAI PHÁ DỮ LIỆU
1.1. Các tấn công cơ sở dữ liệu
Sự phát triển lớn mạnh của công nghệ thông tin trong những năm qua đã dẫn đến
việc sử dụng rộng rãi các hệ thống máy tính trong hầu hết các tổ chức cá nhân và công
cộng, chẳng hạn như: ngân hàng, trường học, tổ chức dịch vụ và sản xuất, bệnh viện, thư
viện, trong các cơ quan nhà nước,… Cùng với sự phát triển đó, các phương pháp nhằm
đảm bảo an toàn thông tin cũng ngày càng phải được hoàn thiện, nâng cao.
Một trong những vấn đề nóng trong công tác đảm bảo an toàn thông tin hiện nay là
bảo đảm an toàn cho những cơ sở dữ liệu phục vụ việc khai thác và sử dụng các ứng dụng
công nghệ thông tin đang ngày càng phát triển rộng rãi.
Do lưu giữ những thông tin quan trọng nên cơ sở dữ liệu luôn nằm trong tầm
ngắm của nhiều tin tặc. Trong phần này sẽ giới thiệu sơ lược về một số dạng tấn công
phổ biến ảnh hưởng đến an toàn cơ sở dữ liệu cũng như là cách thức để phòng chống lại
các kiểu tấn công này [1].
1.1.1. Lạm dụng quyền vượt mức (Excessive privileges)
Khi người dùng (hay ứng dụng) được gán các đặc quyền truy nhập cơ sở dữ
liệu vượt quá các yêu cầu trong chức năng công việc của họ, thì những đặc quyền này
có thể bị lạm dụng cho các mục đích xấu. Ví dụ, một người phụ trách cơ sở dữ liệu
của trường đại học với công việc là thay đổi các thông tin liên lạc của sinh viên, người
này có thể lạm dụng quyền của mình với quyền cập nhật cơ sở dữ liệu để sửa đổi điểm
của sinh viên (trái phép).
Một lý do đơn giản là những quản trị viên cơ sở dữ liệu vì bận rộn với công việc
quản trị của mình nên không có thời gian để định nghĩa và cập nhật cơ chế kiểm soát
quyền truy nhập mịn cho mỗi người dùng. Kết quả là một số lượng lớn người dùng được
gán các đặc quyền truy nhập mặc định vượt xa so với yêu cầu công việc của họ.
5
Giải pháp cho hiểm họa cơ sở dữ liệu này, đó là sử dụng cơ chế kiểm soát truy
nhập mức truy vấn (Query-level). Cơ chế này sẽ hạn chế các đặc quyền cơ sở dữ liệu
bằng những toán tử SQL (SELECT, UPDATE,…) và dữ liệu được yêu cầu một cách tối
thiểu.
1.1.2. Lạm dụng quyền hợp pháp (Privilege abuse)
Người dùng lạm dụng các đặc quyền hợp pháp của mình để thực hiện những mục
đích không hợp pháp.
Giải pháp cho hiểm họa này chính là kiểm soát truy nhập cơ sở dữ liệu cần áp
dụng cho không chỉ các truy vấn cụ thể như được mô tả ở trên, mà còn áp dụng cho bối
cảnh xung quanh truy nhập cơ sở dữ liệu. Bằng cách bắt buộc tuân thủ chính sách cho các
ứng dụng khách, thời gian trong ngày, vị trí,… thì có thể nhận dạng được những người
dùng đang sử dụng các quyền truy nhập hợp pháp của mình với hành động mờ ám, đáng
nghi.
1.1.3. Nâng cấp quyền bất hợp pháp (Unauthorized Privilege elevation)
Kẻ tấn công có thể dựa trên các điểm yếu trong phần mềm cơ sở dữ liệu để biến
các đặc quyền truy nhập của một người dùng bình thường thành quyền truy nhập của
một người quản trị.Những điểm yếu này có thể tìm thấy trong các thủ tục được lưu,
trong các hàm được xây dựng bên trong, trong việc thực thi giao thức, thậm chí trong
các câu lệnh SQL.
Hiểm họa này có thể bị ngăn chặn bằng việc kết hợp các hệ thống ngăn chặn tấn
công (IPS) và kiểm soát truy nhập mức truy vấn.IPS sẽ kiểm tra lưu lượng cơ sở dữ liệu
để nhận ra các mẫu phù hợp với những điểm yếu đã biết.Chẳng hạn, với một hàm có
điểm yếu đã biết, thì một IPS có thể chặn tất cả các truy nhập tới hàm đó, hoặc (nếu có
thể) chỉ chặn những truy nhập (của các tấn công) tới hàm này.
1.1.4. Lợi dụng các điểm yếu nền tảng (Platform vulnerabilities)
Các điểm yếu trong hệ điều hành bên dưới (Windows 2000, UNIX, …) và các
điểm yếu trong các dịch vụ được cài đặt trên một máy chủ cơ sở dữ liệu có thể dẫn tới
6
truy nhập bất hợp pháp, sự sửa đổi dữ liệu hay từ chối dịch vụ. Chẳng hạn, sâu Blaster lợi
dụng một điểm yếu của Windows 2000 để tạo ra các điều kiện cho tấn công từ chối dịch
vụ.
Để bảo vệ các tài nguyên cơ sở dữ liệu tránh khỏi các tấn công nền tảng, cần thiết
phải kết hợp giữa việc cập nhật (các bản vá) phần mềm thường xuyên và sử dụng hệ
thống ngăn chặn tấn công (IPS).Các nhà cung cấp luôn đưa ra những bản vá cho các điểm
yếu trong nền tảng cơ sở dữ liệu. Tuy nhiên, các doanh nghiệp cập nhật và thực thi các
phần mềm này theo định kỳ. Khi đó, giữa các chu kỳ cập nhật này, cơ sở dữ liệu không
được bảo vệ. Thêm vào đó, vấn đề tương thích đôi khi không cho phép các cập nhật phần
mềm này được hoàn chỉnh.Để giải quyết những vấn đề này, cần phải sử dụng IPS.Như
mô tả ở trên, IPS kiểm tra lưu lượng cơ sở dữ liệu và xác định được những tấn công nhắm
vào các điểm yếu đã biết.
1.1.5. Tấn công SQL Injection
Trong một tấn công SQL Injection, kẻ tấn công thường chèn ( hay “tiêm”) các
mệnh đề cơ sở dữ liệu bất hợp pháp vào một nguồn dữ liệu SQL dễ bị tổn thương.
Thường nguồn dữ liệu đích bao gồm các thủ tục được lưu và các tham số đầu vào của
ứng dụng Web.Các nguồn này bị tiêm vào những mệnh đề bất hợp pháp, sau đó chúng
được truyền tới cơ sở dữ liệu và được xử lý tại đây. Với SQL Injection, kẻ tấn công có
thể đạt được truy nhập không giới hạn tới toàn bộ cơ sở dữ liệu.
Có thể sử dụng kết hợp ba kỹ thuật để chống SQL Injection một cách hiệu quả là:
IPS, kiểm soát truy nhập mức truy vấn và sự tương quan sự kiện. IPS có thể xác định các
thủ tục được lưu chứa điểm yếu hoặc những chuỗi SQL injection. Các nhà quản trị an
toàn nếu chỉ tin cậy vào một mình IPS sẽ luôn nhận được hàng loạt các cảnh báo là SQL
injection “có thể đang tồn tại”. Bằng cách tương quan một dấu hiệu của SQL injection
với một tấn công vào kiểm soát truy nhập mức truy vấn thì có thể xác định được tấn công
với độ chính xác cao. [9,10,11,12]
7
1.1.6. Lợi dụng dấu vết kiểm toán yếu (Weak audit)
Đối với bất kỳ hoạt động nào liên quan đến cơ sở dữ liệu, cần thiết phải ghi lại
một cách tự động tất cả các giao dịch cơ sở dữ liệu nhạy cảm và/hoặc các giao dịch bất
thường.Khi chính sách kiểm toán cơ sở dữ liệu yếu sẽ dẫn đến những rủi ro nghiêm trọng
cho tổ chức với nhiều mức độ khác nhau.
Các cơ chế kiểm toán là tuyến hàng rào bảo vệ cơ sở dữ liệu cuối cùng.Nếu kẻ tấn
công có thể phá vỡ các hàng rào khác thì cơ chế kiểm toán dữ liệu vẫn có thể xác định sự
tồn tại của một tấn công sau những hành động của kẻ tấn công trước đó. Những vết kiểm
toán thu được tiếp tục có thể dùng để xác định người dùng nào vừa thực hiện các hành
động này, đồng thời qua vết kiểm toán có thể thực hiện phục hồi lại hệ thống.
Cơ chế kiểm toán yếu đồng nghĩa với việc hệ thống không thể ghi lại đầy đủ
những hành động của người dùng, dẫn đến việc không thể phát hiện và ngăn chặn kịp
thời những hành động tấn công của người dùng hoặc một nhóm người dùng. Do vậy,
kiểm toán là cơ chế quan trọng mà mọi hệ thống cần có và cần thiết phải có cơ chế kiểm
toán mạnh đảm bảo an toàn thông tin hay an toàn cơ sở dữ liệu cho mọi hệ thống.
1.1.7. Tấn công từ chối dịch vụ (DoS)
Tấn công từ chối dịch vụ là một loại tấn công trong đó các truy nhập của người
dùng hợp pháp vào các ứng dụng mạng hay vào dữ liệu sẽ bị từ chối. Các điều kiện từ
chối dịch vụ có thể được tạo ra qua nhiều kỹ thuật (nhiều trong số đó liên quan đến các
điểm yếu nền tảng).Ví dụ, tấn công DoS có thể dựa trên điểm yếu nền tảng cơ sở dữ liệu
để phá hủy một máy chủ. Ngoài ra còn có một số kỹ thuật DoS phổ biến khác như: sửa
đổi dữ liệu, làm lụt mạng (network flooding), và làm quá tải tài nguyên máy chủ (bộ nhớ,
CPU,…). Trong đó, làm quá tải tài nguyên là một kỹ thuật phổ biến trong môi trường cơ
sở dữ liệu.
Để ngăn chặn tấn công này, cần yêu cầu bảo vệ ở nhiều mức khác nhau, như: mức
mạng, mức ứng dụng và mức cơ sở dữ liệu. Trong đó, một số kỹ thuật bảo vệ mức cơ sở
8
dữ liệu để chống tấn công DOS bao gồm: kiểm soát tốc độ kết nối, kiểm soát giao thức,
kiểm soát truy nhập truy vấn, và kiểm soát thời gian phản hồi.
1.1.8. Lợi dụng các điểm yếu trong giao thức giao tiếp cơ sở dữ liệu (Database
protocol vulnerabilities)
Các nhà cung cấp cơ sở dữ liệu phát hiện ra một số lượng ngày càng tăng các điểm
yếu an toàn trong các giao thức giao tiếp cơ sở dữ liệu. Chẳng hạn 4 trong 7 điểm yếu về
giao thức trong IBM DB2 đã được xác định và sửa chữa, 11 trong số 23 điểm yếu cơ sở
dữ liệu liên quan đến giao thức đã được xác định trong Oracle gần đây. Sâu SQL
Slammer2 cũng khai thác điểm yếu trong giao thức của Microsoft SQL Server để gây ra
tấn công từ chối dịch vụ.Ngoài ra, các hoạt động của giao thức không hề được lưu lại
trong các vết kiểm toán cho nên càng gây khó khăn cho việc phát hiện lỗi và phát hiện
các tấn công.
Có thể giải quyết tấn công này bằng công nghệ phê duyệt giao thức.Công nghệ
này sẽ phân tích lưu lượng cơ sở dữ liệu cơ bản và so sánh nó với lưu lượng thông
thường.Trong trường hợp lưu lượng hiện tại không phù hợp với lưu lượng cơ sở dữ liệu
như mong đợi thì hệ thống sẽ phát ra cảnh báo, thậm chí là chặn luôn hành động đang
thực hiện.
1.1.9. Lợi dụng sự xác thực yếu (Weak authentication)
Trong một hệ thống chứa lược đồ xác thực yếu, kẻ tấn công dễ dàng có thể chiếm
lấy định danh của những người dùng cơ sở dữ liệu hợp pháp bằng cách lấy cắp thẻ đăng
nhập của họ.Kẻ tấn công có thể sử dụng nhiều chiến lược khác nhau để lấy được thẻ đăng
nhập của người dùng hợp pháp.
Để phòng chống loại tấn công này, chúng ta cần thực hiện một số cơ chế:
- Xác thực mạnh: Để ngăn chặn kẻ tấn công lợi dụng xác thực yếu, hệ thống cần
sử dụng các chính sách và công nghệ xác thực mạnh nhất. Nên sử dụng cơ chế xác thực
hai nhân tố (như: token, chứng chỉ, sinh trắc,…). Tuy nhiên, các cơ chế xác thực hai nhân
tố thường có chi phí đắt và khó sử dụng hơn nên trong thực tế chúng được sử dụng không
9
nhiều. Với trường hợp này, cần sử dụng chính sách xác thực mạnh cho
username/password (như: độ dài tối thiểu, đa dạng ký tự, khó đoán,…).
- Tích hợp danh bạ: Để các cơ chế xác thực mạnh được sử dụng rộng rãi và dễ
dàng, nên tích hợp chúng với cơ sở danh bạ của doanh nghiệp. Cơ sở danh bạ cho phép
một người dùng có thể sử dụng một tập thẻ đăng nhập cho nhiều cơ cở dữ liệu và ứng
dụng.Từ đó làm cho hệ thống xác thực hai nhân tố được sử dụng hiệu quả hơn và người
dùng có thể dễ dàng ghi nhớ việc cần phải thay đổi mật khẩu thường xuyên.
1.1.10. Lợi dụng sự sơ hở của dữ liệu dự phòng (Exposure of backup data)
Chúng ta thấy rằng, trong công tác sao lưu, dự phòng cơ sở dữ liệu, người thực
hiện thường lơ là không bảo vệ các phương tiện lưu trữ cơ sở dữ liệu dự phòng một cách
đầy đủ.Kết quả là, có rất nhiều băng đĩa sao lưu cơ sở dữ liệu và các đĩa cứng của nhiều
hệ thống bị đánh cắp.
Ngăn chặn sơ hở dữ liệu dự phòng bằng cách các bản sao cơ sở dữ liệu cần thiết
phải được mã hóa và lưu giữ cẩn thận.
1.2. Các tấn công SQL Injection
Cho đến nay, SQL Injection vẫn là phương thức thông dụng nhất của tin tặc khi
tấn công một website vì cơ sở dữ liệu được xem là trái tim của website. Số lượng website
bị tin tặc “nắm giữ” lên đến vài trăm ngàn và thường được dùng để phát tán mã độc,
malware hay lừa đảo trực tuyến (phishing) khi khách hàng truy cập, truy xuất vào
website. Trong phần này sẽ đi sâu vào phân tích các dạng của tấn công SQL Injection.
1.2.1. Khái niệm tấn công SQL Injection
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của
việc kiểm tra dữ liệu đầu vào 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 trả về để tiêm vào (inject) và thi hành các câu lệnh SQL bất hợp pháp.
SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert,
update, v.v. trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang
chạy. SQL injection thường được biết đến như là một vật trung gian tấn công trên các
10
ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như Sql Server,
MySql, Oracle, DB2, Sysbase, … [1,9,10,11,12]
Các mối đe doạ chính từ tấn công SQL Injection:
- Mạo danh (Snoofing identity): Những kẻ tấn công sẽ mạo danh một email hoặc
một trang web của một tổ chức để đánh lừa người dùng.
- Thay đổi giá (Changing prices): Một trong số những vấn đề của SQL Injection là
nó có thể thay đổi dữ liệu. Ở đây, những kẻ tấn công sẽ thay đổi giá cả một trang mua
sắm trực tuyến để có thể mua sản phẩm đó với giá rẻ hơn.
- Xáo trộn các bản ghi cơ sở dữ liệu (Tamper with database records): Cơ sở dữ
liệu chính sẽ hoàn toàn bị hư hại; thậm chí còn có khả năng đã bị thay thế hoàn toàn hoặc
thậm chí bị xóa hết dữ liệu.
- Leo thang đặc quyền (Escalation of privileges): Một khi hệ thống bị tấn công, kẻ
tấn công sẽ tìm kiếm đặc quyền truy cập cao nhất của các thành viên quản trị để có thể
chiếm quyền truy cập vào hệ thống cũng như vào mạng nội bộ.
- Từ chối các dịch vụ từ máy chủ (Denial-of-service on the server): Từ chối dịch
vụ từ máy chủ là một dạng tấn công mà người dùng không thể truy cập vào hệ thống.
Ngày càng nhiều yêu cầu được gửi đến máy chủ mà không thể xử lý nó.Điều này dẫn đến
tạm ngưng dịch vụ của máy chủ.
- Lộ tất cả thông tin dữ liệu của hệ thống (Complete disclosure of all the data on
the system): Một khi một hệ thống bị tấn công các dữ liệu quan trọng và bí mật như: số
thẻ tín dụng, chi tiết nhân viên về hồ sơ và tài chính,…v.v sẽ bị tiết lộ.
- Phá hủy dữ liệu (Destruction of data): Những kẻ tấn công sau khi chiếm hoàn toàn
quyền hệ thống sẽ phá hủy hoàn toàn dữ liệu, kết quả làm tổn thất rất lớn cho công ty.
- Tránh các giao dịch quan trọng của hệ thống (Voiding system's critical
transaction): Những kẻ tấn công có thể vận hành hệ thống tránh tất cả các giao dịch.
11
- Thay đổi hồ sơ (Modifying the records): Kẻ tấn công có thể sửa đổi các dữ liệu
trong cơ sở dữ liệu của công ty, gây ra trở ngại lớn cho hệ thống quản lý cơ sở dữ liệu
công ty.
1.2.2. Các dạng tấn công bằng SQL Injection
a)
Tautology
Các cuộc tấn công này hoạt động bằng cách thêm vào mệnh đề WHERE của câu
lệnh truy vấn một tuyên bố luôn đúng. Với dạng tấn công này kẻ tấn công có thể dễ dàng
vượt qua các trang đăng nập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở
dữ liệu của ứng dụng web.
Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ
thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng
nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng
nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp.
Xét đoạn code php sau:
$uname=$_POST['uname'];
$passwrd=$_POST['passwrd'];
$query="select username,pass from users where username='$uname'
and password='$passwrd'";
$result=mysql_query($query);
Thử tài khoản đăng nhập và mật khẩu bằng: 'or ''=', thì câu truy vấn sẽ thành như
sau:
select username,pass from users where username='' or ''='' and password='' or ''=''
Do mệnh đề luôn đúng nên dễ dàng đăng nhập tài khoản.
b)
Illegal/Logically Incorrect Query
Trong loại tấn công này, những kẻ tấn công sẽ cố gắng thu thập đầy đủ các thông
tin về cấu trúc back-end của cơ sở dữ liệu một trang web. Những kẻ tấn công sẽ gửi một
12
- Xem thêm -