Tải bản đầy đủ (.pdf) (105 trang)

Khắc phục khuyết điểm kỹ thuật pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.24 MB, 105 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA

TRẦN THN QUẾ NGUYỆT

ĐỀ TÀI LUẬN VĂN THẠC SĨ

KHẮC PHỤC KHUYẾT ĐIỂM KỸ THUẬT PENTESTING
TRONG VIỆC PHÁT HIỆN LỖ HỔNG
BẢO MẬT CƠ SỞ DỮ LIỆU
Chuyên ngành: Khoa học máy tính

LUẬN VĂN THẠC SĨ

TP. HỒ CHÍ MINH, tháng 8 năm 2010


CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI
TRƯỜNG ĐẠI HỌC BÁCH KHOA
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
Cán bộ hướng dẫn khoa học: TS. Đặng Trần Khánh
Cán bộ chấm nhận xét 1: TS. Trần Văn Hoài
Cán bộ chấm nhận xét 2: TS. Nguyễn Đức Cường
Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp.HCM ngày 1
tháng 09 năm 2010
Thành phần hội đồng đánh giá luận văn thạc sĩ gồm:
1. TS. Thoại Nam
2. TS. Đặng Trần Khánh
3. TS. Trần Văn Hoài
4. TS. Nguyễn Đức Cường
Xác nhận của chủ tịch hội đồng đánh giá luận văn và bộ môn quản lý chuyên ngành sau


khi luận văn đã được sửa chữa (nếu có).
Chủ tịch hội đồng đánh giá luận văn

Bộ môn quản lý chuyên ngành


TRƯỜNG ĐẠI HỌC BÁCH KHOA
PHÒNG ĐÀO TẠO SĐH

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc

Tp. HCM, ngày 19 tháng 08 năm 2010
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: TRẦN THN QUẾ NGUYỆT
Ngày tháng năm sinh: 05/10/1985
Chuyên ngành: Khoa học Máy tính

Phái: Nữ
Nơi sinh: Tp.HCM
MSHV: 00708697

I- TÊN ĐỀ TÀI: KHẮC PHỤC KHUYẾT ĐIỂM KỸ THUẬT PENETRATION
TESTING (PENTESTING) TRONG VIỆC PHÁT HIỆN LỖ HỔNG BẢO MẬT CƠ SỞ
DỮ LIỆU
II- NHIỆM VỤ VÀ NỘI DUNG:
- Tìm hiểu về kỹ thuật penetration testing, áp dụng trong việc phát hiện lỗ hổng bảo
mật cơ sở dữ liệu
-


Phân tích và đánh giá những khuyết điểm của kỹ thuật penetration testing trong
việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

-

Nghiên cứu và đề xuất mơ hình phát hiển lỗ hổng bảo mật cơ sở dữ liệu an toàn.
Hiện thực và thử nghiệm.

III- NGÀY GIAO NHIỆM VỤ:
IV- NGÀY HOÀN THÀNH NHIỆM VỤ:
V- CÁN BỘ HƯỚNG DẪN: TS. ĐẶNG TRẦN KHÁNH
CÁN BỘ HƯỚNG DẪN

CHỦ NHIỆM BỘ MÔN
QUẢN LÝ CHUYÊN NGÀNH

KHOA QUẢN LÝ
CHUYÊN NGÀNH


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

LỜI CẢM ƠN
Tôi xin chân thành cảm ơn sự giúp đỡ và hướng dẫn của TS. Đặng Trần Khánh trong suốt
thời gian quan. Đồng thời, tôi cũng xin chân thành cảm ơn các anh em và đồng nghiệp
trong nhóm ASIS Lab đã tạo điều kiện cho tơi hồn thành cơng việc nghiên cứu này.
Bên cạnh đó, tơi khơng thể nào qn được sự giúp đỡ chân thành và nhiệt tình nhất mà
GS. Pierre Kuonen và TS. Houda Chabbi Drissi đã dành cho tôi trong suốt 5 tháng thực
tập tại trường HES-SO, Thuỵ Sĩ.


Trần Thị Quế Nguyệt

i


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

TÓM TẮT LUẬN VĂN
Kỹ thuật penetration testing (pentesting) là một kỹ thuật giả lập tấn công nhằm phát hiện
các lỗ hổng bảo mật trong các hệ thống. Ngày nay, kỹ thuật này được sử dụng phổ biến
trong các cơng cụ dị tìm và phát hiện chính xác các lỗ hổng bảo mật. Tuy nhiên, đây là
một kỹ thuật có thể giả lập các loại tấn cơng và giả lập bất kì người dùng nào trong hệ
thống nên đã mang lại nhiều mối đe doạ và nguy hiểm cho hệ thống nếu không được sử
dụng một cách an toàn.
Đề tài sẽ tập trung vào việc nghiên cứu kỹ thuật pentesting trong việc phát hiện lỗ hổng
bảo mật cho cơ sở dữ liệu, tìm hiểu và phân tích những khuyết điểm cũng như những
mối nguy hiểm mà phương pháp này mang lại. Hơn nữa, làm thế nào để xây dựng một
giải pháp tổng thể phát hiện các lỗ hổng bảo mật cơ sở dữ liệu, bảo đảm sự an toàn và tin
tưởng cho người sử dụng là mục tiêu của luận văn này.
Nội dung của cuốn luận văn được trình bày như sau:
Chương 1: giới thiệu về đề tài, giới hạn và mục tiêu của đề tại. Đồng thời
chương này cũng trình bày kế hoạch thực hiện luận văn
Chương 2: trình bày tổng quan về bảo mật cơ sơ dữ liệu, bao gồm những khái
niệm căn bản trong bảo mật, các kiểu tấn công vào cơ sở dữ liệu, các loại lỗ
hổng bảo mật cơ sở dữ liệu
Chương 3: trình bày kỹ thuật pentesting
Chương 4: phân tích đề tài, đưa ra các khuyết điểm và rủi ro của kỹ thuật
pentesting, cũng như trình bày giải pháp đề nghị
Chương 5: trình bày phương pháp luận, một mơ hình tổng qt khi sử dụng kỹ
thuật pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

Chương 6: đưa ra mơ hình hiện thực chi tiết, phân tích và thiết kế bản mẫu
Chương 7: demo
Chương 8: kết luận và đánh giá.
Phụ lục: danh mục các bài báo từ kết quả nghiên cứu này

Trần Thị Quế Nguyệt

ii


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

MỤC LỤC
LỜI CẢM ƠN ........................................................................................... i
TÓM TẮT LUẬN VĂN ..........................................................................ii
MỤC LỤC .............................................................................................. iii
MỤC LỤC HÌNH ................................................................................... vi
Chương 1: Giới thiệu đề tài .................................................................... 1
1.1 Đặt vấn đề .................................................................................................................. 1
1.2 Giới thiệu đề tài .......................................................................................................... 2
1.2.1 Tên đề tài ............................................................................................................. 2
1.2.2 Giới hạn đề tài ...................................................................................................... 2
1.2.3 Mục đích đề tài .................................................................................................... 2
1.2.4 Ý nghĩa khoa học và thực tiễn của đề tài ............................................................. 3

Chương 2: Tổng quan về bảo mật cơ sở dữ liệu .................................. 5
2.1 Các yêu cầu cơ bản trong bảo mật cơ sở dữ liệu ....................................................... 5
2.1.1 Tính bí mật (Confidentiality hay Secrecy) .......................................................... 5
2.1.2 Tính tồn vẹn (Integrity) ...................................................................................... 6
2.1.3 Tính sẵn sàng (Availability) ................................................................................ 6

2.1.4 Tính chống thối thác (Non-repudiation) ............................................................ 7
2.2 Các kiểu tấn cơng vào cơ sở dữ liệu .......................................................................... 7
2.2.1 Tổng quan về phân loại tấn công cơ sở dữ liệu ................................................... 7
2.2.2 Unauthorized access .......................................................................................... 10
2.2.3 SQL Injection ..................................................................................................... 13
2.2.4 Trì hỗn dịch vụ (Denial of service) .................................................................. 15
2.2.5 Khai thác các dịch vụ và chức năng thừa của hệ cơ sở dữ liệu ......................... 15
2.2.6 Hướng tới các lỗ hổng cơ sở dữ liệu đã công bố bản vá ................................... 15
2.3 Các lỗ hổng bảo mật cơ sở dữ liệu ........................................................................... 16
2.3.1 Định nghĩa lỗ hổng bảo mật............................................................................... 16
2.3.2 Phân loại lỗ hổng bảo mật ................................................................................. 16

Chương 3: Kỹ thuật pentesting ............................................................ 20
3.1 Giới thiệu.................................................................................................................. 20
Trần Thị Quế Nguyệt

iii


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

3.2 Các bước trong pentesting........................................................................................ 20
3.3 Phân loại pentesting ................................................................................................. 21
3.4 Minh họa pentesting ................................................................................................. 23
3.5 Ưu điểm và khuyết điểm .......................................................................................... 25

Chương 4: Phân tích đề tài .................................................................. 26
4.1 Các vấn đề bảo mật khi sử dụng kỹ thuật pentesting trong việc phát hiện các lỗ
hổng bảo mật CSDL ....................................................................................................... 26
4.1.1 Tính tin cậy (Confidentiality) ............................................................................ 26

4.1.2 Tính nguyên vẹn (Integrity) ............................................................................... 26
4.1.3 Tính sẵn sàng (Availability) .............................................................................. 27
4.1.4 Khả năng chống thoái thác (Non-repudiation) .................................................. 27
4.2 Giải pháp đề nghị ..................................................................................................... 28

Chương 5: Phương pháp luận sử dụng Penetration Testing trong
bảo mật cơ sở dữ liệu ............................................................................ 30
5.1 Phân tách nhiệm vụ (separation of duties) ............................................................... 30
5.2 Phương pháp luận tổng quát.................................................................................... 32
5.3 Các chính sách yêu cầu ............................................................................................ 35

Chương 6: Phân tích và thiết kế bản mẫu .......................................... 37
6.1 Kiến trúc tổng quan .................................................................................................. 37
6.2 Kiến trúc chi tiết ....................................................................................................... 40
6.2.1 Phần đặc tả quá trình pentesting ........................................................................ 40
6.2.2 Phần thực thi pentesting ..................................................................................... 43
6.2.3 Phần hiển thị trực quan ...................................................................................... 48
6.3 Các lược đồ phân tích và thiết kế ............................................................................. 48
6.3.1 Lược đồ Usecase ................................................................................................ 48
6.3.2 Lược đồ tuần tự .................................................................................................. 58
6.3.3 Lược đồ class thiết kế ........................................................................................ 64
6.3.4 Sơ đồ ERD ......................................................................................................... 66

Chương 7: Demo.................................................................................... 67
7.1 Form login ................................................................................................................ 67
7.2 Form thiết lập luật scanning ..................................................................................... 68
7.3 Form thiết lập luật verifying .................................................................................... 69
Trần Thị Quế Nguyệt

iv



Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

7.4 Form thiết lập chính sách monitor ........................................................................... 70
7.5 Form chọn danh sách lỗ hổng để quét...................................................................... 71
7.6 Form mô tả quá trình qt lỗ hổng ........................................................................... 72
7.7 Form mơ tả q trình quét lỗ hổng bị xâm phạm luật .............................................. 75

Chương 8: Đánh giá đề tài và tổng kết ............................................... 76
8.1 Đánh giá đề tài ......................................................................................................... 76
8.2 Tổng kết ................................................................................................................... 77
8.2.1 Ưu điểm ............................................................................................................. 77
8.2.2 Khuyết điểm ....................................................................................................... 77

Tài liệu tham khảo................................................................................. 79
Danh mục các bài báo ........................................................................... 81
1. Towards a side –effect free Database Penetration Testing, tại hội nghị MIST 2010,
Morioka, Nhật Bản, đăng trên tạp chí JoWua tháng 6, 2010 ......................................... 81
2. A Holistic Solution to Verify and Monitor Penetration Test Processes in Detection of
Database Security Flaws, tại hội nghị ACOMP 2010 (03/2010), TP.Hồ Chí Minh, Việt
Nam ................................................................................................................................ 81
3. Problems Of Using Penetration Testing For Detecting Database Security Flaws, tại
hội thảo Khoa học và Công nghệ lần 11 (10/2009), tại trường Đại học Bách Khoa
TP.HCM ......................................................................................................................... 81
4. Detecting, Monitoring and Preventing Database Security Breaches in Housing-Based
Outsourcing Model, trình bày tại hội nghị HPSC 2009, Hà Nội, Việt Nam Phụ lục .... 81
Phụ lục ............................................................................................................................ 82
Bài báo “Towards a side –effect free Database Penetration Testing” tại hội nghị MIST
2010, Morioka, Nhật Bản, đăng tại tạp chí JoWua, tháng 6/2010 ................................. 82


Trần Thị Quế Nguyệt

v


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

MỤC LỤC HÌNH
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình

Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình

2.1: Các tính chất của bảo mật cơ sở dữ liệu ............................................................. 5
2.2: Phân loại lỗ hổng bảo mật cơ sở dữ liệu .......................................................... 17
3.1: Các bước pentesting ......................................................................................... 20
3.2: Phân loại pentesting.......................................................................................... 22
5.1: Phương pháp luận Penetration Testing............................................................. 33
6.1: Kiến trúc tổng quát ........................................................................................... 38
6.2: Chi tiết lớp Penetration Testing Engine ........................................................... 40
6.3: Phần thực thi pentesting ................................................................................... 44
6.4: Module script generator.................................................................................... 45
6.5: Chèn code ghi nhận thông tin kết nối ............................................................... 47
6. 6: UC Pentester .................................................................................................... 49
6.7: UC Policy_user................................................................................................. 51
6.8: UC Testing_user ............................................................................................... 54
6.9: Lược đồ trình tự cho quá trình đặc tả ............................................................... 58
6.10: Lược đồ trình tự cho quá trình định nghĩa rule báo động .............................. 60
6.11: Lược đồ tuần tự cho quá trình quét lỗ hổng ................................................... 62
6.12: Lược đồ trình tự cho quá trình khôi phục....................................................... 63
6.13: Sơ đồ class thiết kế ......................................................................................... 65

6.14: Sơ đồ ERD ...................................................................................................... 66
7.1: Form login ........................................................................................................ 67
7.2: Thanh menu chức năng .................................................................................... 67
7.3: Form thiết lập luật scanning ............................................................................. 68
7.4: Form thiết lập luật verifying ............................................................................. 69
7.5: Form thiết lập chính sách monitor .................................................................... 70
7.6: Form danh sách lỗ hổng ................................................................................... 71
7.7: Quá trình quét lỗ hổng ...................................................................................... 72
7.8: Code bảo vệ truy xuất đối tượng bên ngoài ..................................................... 73
7.9: Sự ngăn cản truy xuất bên ngoài ...................................................................... 73
7.10: Phát hiện sự truy xuất đồng thời..................................................................... 74
7.11: Session đã bị huỷ ............................................................................................ 74
7.12: Luật scanning báo động .................................................................................. 75
7.13: Luật verifying báo động ................................................................................. 75

Trần Thị Quế Nguyệt

vi


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

Chương 1: Giới thiệu đề tài
1.1 Đặt vấn đề
Trong những năm gần đây, sự phát triển nhanh chóng của ngành cơng nghệ thông tin
đã kéo theo việc sử dụng rộng rãi máy tính trong tất cả các lĩnh vực, từ những máy tính
gia đình đến những hệ thống máy tính lớn trong các doanh nghiệp, ngân hàng, bệnh viện
... Điều này cũng có nghĩa là ngày càng có nhiều dữ liệu được lưu trữ và quản lý bởi các
hệ thống máy tính.
Những dữ liệu trong các hệ thống máy tính này ảnh hưởng hầu hết đến mọi khía cạnh

của đời sống của con người. Nó đặc biệt quan trọng trong các lĩnh vực nhạy cảm như
chính trị, kinh tế. Ví dụ như những tài liệu quân sự của một quốc gia, danh sách về khách
hàng của một doanh nghiệp, thông tin cá nhân của một người … Dữ liệu càng quan trọng
thì càng có giá trị và càng hấp dẫn những hacker (kẻ tấn cơng). Do đó việc bảo mật
những thơng tin này là một yêu cầu rất quan trọng.
Ngày nay, khoa học máy tính phát triển đã hỗ trợ rất nhiều cho việc bảo vệ những dữ
liệu quý giá. Tuy nhiên, nó cũng đồng thời được các hacker lợi dụng để tấn công vào các
hệ cơ sở dữ liệu hiệu quả và nhanh chóng hơn. Vì thế, việc bảo vệ dữ liệu không chỉ nhờ
những kỹ thuật mới nhất mà quan trọng hơn là nhờ vào sự quản lý hiệu quả của con
người. Hệ cơ sở dữ liệu an toàn nhất chính là hệ cơ sở dữ liệu mà người quản trị hệ thống
hiểu rõ về nó nhất. Việc biết được các lỗ hổng bảo mật của hệ cơ sở dữ liệu sẽ giúp cho
người quản trị hệ thống có thể ngăn chặn, khắc phục và bảo vệ hệ thống một cách tốt
nhất.
Có rất nhiều kỹ thuật được sử dụng để phát hiện lỗ hổng bảo mật trong hệ cở sở dữ
liệu trong đó pentesting [3, 4, 5, 6] là một kỹ thuật được sử dụng để đánh giá hệ thống
bảo mật cở sở dữ liệu bẳng cách giả lập tấn công vào hệ thống. Nếu như việc tấn công
thành công điều này có nghĩa là chắc chắn tồn tại lỗ hổng tương ứng trong hệ cơ sở dữ
liệu. Do đó kỹ thuật này được sử dụng phổ biến trong việc kiểm tra tình trạng sức khỏe
của hệ cơ sở dữ liệu bởi tính đơn giản, hiệu quả và chắc chắn sự tồn tại lỗ hổng của nó.

Trần Thị Quế Nguyệt

1


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

Tuy nhiên, đây là một kỹ thuật giả lập tấn công cho nên kỹ thuật này đã để lại một số
những nguy hiểm không nhỏ đối với hệ thống nếu không được kiểm sốt tốt. Việc giả lập
tấn cơng địi hỏi hệ thống phải được giữ nguyên vẹn như trước khi tấn công. Hơn nữa,

việc sử dụng các công cụ automated pentesting [2] sinh ra nhiều mối đe dọa khác như
tính lây lan hoặc phát sinh các lỗ hổng do các script phát hiện, tính an tồn của hệ cơ sở
dữ liệu khi bị thu thập thông tin cho việc quét lỗ hổng... Do đó, đề tài này sẽ đi sâu vào
nghiên cứu kỹ thuật pentesting và đưa ra một framework để kiểm soát và khắc phục
những khuyết điểm khi sử dụng pentesting trong việc phát hiện các lỗ hổng bảo mật cơ sở
dữ liệu.
1.2 Giới thiệu đề tài
1.2.1 Tên đề tài
Khắc phục khuyết điểm pentesting trong việc tìm kiếm lỗ hổng bảo mật cơ sở dữ liệu.
1.2.2 Giới hạn đề tài
Đề tài chỉ nghiên cứu về kỹ thuật pentesting trong việc tìm kiếm lỗ hổng bảo mật cơ
sở dữ liệu và đưa ra giải pháp cũng như một framework để bảo đảm sự an toàn cho hệ cơ
sở dữ liệu khi sử dụng kỹ thuật pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ
liệu. Đề tài không mở rộng cho việc nghiên cứu kỹ thuật pentesting trong network, web
application, software hay hệ điều hành.
1.2.3 Mục đích đề tài
Kỹ thuật pentesting được sử dụng rất phổ biến trong việc phát hiện các lỗ hổng bảo
mật cơ sở dữ liệu. Tuy nhiên kỹ thuật này đã để lại một số khuyết điểm và có thể làm ảnh
hưởng ngược trở lại tới tính bảo mật của hệ cơ sở dữ liệu đang sử dụng. Do đó, mục đích
của đề tài nghiên cứu này là đưa ra giải pháp và xây dựng một framework để bảo đảm
tính an tồn, khắc phục các hiệu ứng lề cho hệ cơ sở dữ liệu đang sử dụng kỹ thuật
pentesting để phát hiện các lỗ hổng bảo mật. Mục tiêu xa hơn của đề tài là tích hợp tính
năng này vào các hệ thống automated pentesting.

Trần Thị Quế Nguyệt

2


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu


1.2.4 Ý nghĩa khoa học và thực tiễn của đề tài
Bảo mật hệ cơ sở dữ liệu là một việc rất quan trọng vì dữ liệu vơ cùng q giá đối với
các tổ chức, công ty, … Việc sử dụng các kỹ thuật, các công cụ để phát hiện các lỗ hổng
bảo mật đang tồn tại trong hệ cơ sở dữ liệu là một trách nhiệm không thể bỏ qua của các
quản trị cơ sở dữ liệu. Trong đó, pentesting là một kỹ thuật sử dụng rộng rãi nhất và cũng
được triển khai thành các cơng cụ dị tìm lỗ hổng tự động. Tuy nhiên, việc sử dụng các
công cụ, các kỹ thuật như pentesting để giả lập tấn công vào hệ thống có bảo đảm tính tin
cậy và an tồn cho hệ thống hay khơng vẫn cịn là một hướng nghiên cứu mở. Pentesting
đã được sử dụng rộng rãi trong các lĩnh vực khác như network pentesting, wireless
pentesting, physical security pentesting, software pentesting, application pentesting.
Nhưng việc áp dụng kỹ thuật này trong lĩnh vực bảo mật cơ sở dữ liệu còn chưa được
khai thác hết cũng như chưa được quan tâm đến những hiệu ứng lề hay các rủi ro mà nó
có thể gây ra cho hệ cơ sở dữ liệu. Do đó, đề tài này có ý nghĩa về mặt khoa học và thực
tiễn như sau:
Ý nghĩa khoa học:
-

Nghiên cứu kỹ thuật pentesting trong lĩnh vực phát hiện các lỗ hổng bảo mật
cơ sở dữ liệu

-

Phân tích và nhận diện những khuyết điểm và nguy hiểm khi sử dụng kỹ thuật
pentesting

-

Đưa ra một hệ phương pháp (methodology) về vấn đề sử dụng an toàn kỹ thuật
pentesting để phát hiện lỗ hổng bảo mật cơ sở dữ liệu, tạo cơ sở cho việc phát

triển một hệ thống quét lỗ hổng sử dụng kỹ thuật này một cách an toàn cho hệ
cơ sở dữ liệu người dùng

Ý nghĩa thực tiễn:
-

Khắc phục, hỗ trợ kỹ thuật pentesting, tăng độ tin cậy khi sử dụng kỹ thuật
pentesting để phát hiện lỗ hổng bảo mật cơ sở dữ liệu, cũng như tăng độ tin cậy
cho người dùng khi sử dụng các sản phNm quét lỗ hổng cơ sở dữ liệu dùng kỹ
thuật pentesting nếu có áp dụng các giải pháp được đề nghị trong hệ phương
pháp mà đề tài đưa ra

Trần Thị Quế Nguyệt

3


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

-

Tăng tính an toàn cho hệ cơ sở dữ liệu khi sử dụng các cơng cụ dị tìm lỗ hổng
bằng kỹ thuật pentesting. Vì vậy, các tổ chức có thể qt lỗ hổng và quan sát
quá trình quét trực tiếp trên hệ cơ sở dữ thực của họ, giảm chi phí tạo bản sao
và tăng tính “thực” khi dị tìm lỗ hổng

-

Đưa ra một bản mẫu sử dụng kỹ thuật pentesting an toàn để phát hiện lỗ hổng
bảo mật cơ sở dữ liệu cho Oracle, và áp dụng một số phương pháp đề nghị


Trần Thị Quế Nguyệt

4


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

Chương 2: Tổng quan về bảo mật cơ sở dữ liệu
Chương này sẽ trình bày một cách tổng quan về bảo mật cơ sở dữ liệu, bao gồm các
yêu cầu cơ bản trong bảo mật cơ sở dữ liệu, các kiểu tấn công, và các lỗ hổng bảo mật cơ
sở dữ liệu.
2.1 Các yêu cầu cơ bản trong bảo mật cơ sở dữ liệu
Bảo mật thông tin trong cơ sở dữ liệu liên quan đến việc đảm bảo dữ liệu an toàn ở ba
khía cạnh sau: tính bí mật (confidentiality hay secrecy), tính tồn vẹn (integrity) và tính
sẵn sàng (availability). Tuy nhiên, cịn một khía cạnh khác cần phải quan tâm khi hiện
thực một hệ thống bảo mật cơ sở dữ liệu, đó chính là tính chống thối thác (nonrepudiation). Do đó, các yêu cầu bảo mật cơ sở dữ liệu bao gồm cả bốn tính chất trên.
Hình 2.1 sẽ chỉ rõ các tính chất của bảo mật cơ sở dữ liệu.

Database
security

Hình 2.1: Các tính chất của bảo mật cơ sở dữ liệu

2.1.1 Tính bí mật (Confidentiality hay Secrecy)
Bảo đảm tính bí mật cho dữ liệu là việc bảo vệ dữ liệu khơng bị xem bởi những người
khơng có quyền. Đây là một tính chất quan trọng trong bảo mật dữ liệu.
Ví dụ, trong hệ thống ngân hàng, tính bí mật được thể hiện ở việc một người chỉ có
thể xem thơng tin tài khoản của mình mà khơng được biết thơng tin tài khoản của người
khác.

Cơ chế để đảm bảo tính bí mật của dữ liệu là cơ chế điều khiển truy cập (access
control mechanism). Điều khiển truy cập được dùng để giới hạn việc truy cập của người
dùng vào dữ liệu của hệ thống. Các cách để điều khiển truy cập là mã hóa (cryptography)
và thNm định quyền và quyền hạn (Authentication and Authorization).

Trần Thị Quế Nguyệt

5


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

Mã hóa là làm cho dữ liệu trở thành dạng không thể hiểu được, chỉ những người có
quyền mới có khóa để giải mã.
ThNm định quyền và quyền hạn là việc xác định đúng người sử dụng có quyền truy
cập vào cơ sở dữ liệu và xác định đúng quyền của người sử dụng đó. ThNm định quyền
(authentication) là yêu cầu người sử dụng phải cung cấp những bằng chứng (ví dụ như
chữ ký, dấu vân tay, username, password,…) để xác thực mình là người có quyền truy
cập vào hệ thống. Quyền hạn (authorization) liên quan đến việc xác định một người sử
dụng hợp pháp (đã qua được bước authentication) có những quyền nào đối với cơ sở dữ
liệu, các quyền là quyền xem, xóa, chỉnh sửa dữ liệu, và cịn nhiều quyền khác nữa.
2.1.2 Tính tồn vẹn (Integrity)
Bảo đảm tính tồn vẹn cho dữ liệu là ngăn không cho dữ liệu bị sửa đổi, bổ sung hay
xóa bởi những người khơng có quyền.
Ví dụ, trong hệ thống ngân hàng, tính tồn vẹn chính là việc khơng cho phép người sử
dụng có thể tự sửa đổi số tiền trong tài khoản của chính mình.
Cơ chế để đảm bảo cho tính tồn vẹn dữ liệu (Integrity mechanism) được chia làm 2
loại sau: cơ chế ngăn chặn (prevention mechanism) và cơ chế phát hiện (detection
mechanism).
Cơ chế ngăn chặn (prevention mechanism) duy trì tính tồn vẹn bằng cách chặn đứng

(block) mọi hoạt động được cho là bất hợp pháp nhằm thay đổi dữ liệu. Còn cơ chế phát
hiện (detection mechanism) thì khơng cố gắng ngăn chặn những sự thay đổi dữ liệu bất
hợp pháp mà chỉ đơn giản là báo cáo lại với người quản trị hay người dùng là dữ liệu nào
đã có thay đổi và khơng cịn đúng nữa.
2.1.3 Tính sẵn sàng (Availability)
Bảo đảm tính sẵn sàng là đảm bảo cho dữ liệu luôn sẵn sàng đáp ứng nhu cầu sử dụng
của user có quyền hợp pháp.
Ví dụ, trong hệ thống ngân hàng, tính sẵn sàng liên quan đến việc đảm bảo rằng
những khách hàng ln có thể giao dịch vào những thời điểm được quy định trong chính
sách.

Trần Thị Quế Nguyệt

6


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

Một trong những cơ chế thường dùng để giữ tính sẵn sàng là cơ chế dư thừa
(redundance mechanism). Dữ liệu được lưu trữ dư thừa ở nhiều nơi nhằm tăng hiệu quả
phục vụ, cũng như đảm bảo tính sẵn sàng vì khi có lỗi xảy ra ở một nơi thì vẫn cịn những
nơi khác phục vụ.
2.1.4 Tính chống thối thác (Non-repudiation)
Bảo đảm tính chống thối thác (Non-repudiation) là khả năng ngăn chặn việc thoái
thác một hành động đã làm, là khả năng chứng minh được nguồn gốc (ai, khi nào, làm gì)
của những giao tác đã thực hiện.
Ví dụ, trong hệ thống ngân hàng, hệ thống có khả năng cung cấp những chứng cứ
chứng minh được là khách hàng đã thực hiện giao dịch hay chưa.
Cơ chế để đảm bảo tính chống thối thác thì có cơ chế ghi nhận lại (logging/audit
mechanism) và chữ ký điện tử. Cơ chế ghi nhận lại như là một cuốn nhật ký ghi nhận lại

những hành động xảy ra trong hệ thống. Chữ ký điện tử cho phép chứng minh được rằng
người đã ký vào một đối tượng nào đó sẽ khơng phủ nhận được hành động đã ký đó.
Đề tài này với mục đích xây dựng framework bảo đảm tính an tồn cho hệ thống khi
sử dụng kỹ thuật pentesting dựa trên bốn yêu cầu cơ bản trên của hệ thống bảo mật cơ sở
dữ liệu.
2.2 Các kiểu tấn công vào cơ sở dữ liệu
Phạm vi bảo mật cơ sở dữ liệu không chỉ tập trung vào việc bảo vệ các bảng dữ liệu
hay chỉ bản thân cơ sở dữ liệu đó. Điều này sẽ không bảo đảm rằng cơ sở dữ liệu không
bị tổn hại. Bởi vì dù cơ sở dữ liệu được quan tâm nhưng khi nó được đặt trong một mơi
trường khơng an tồn thì cơ sở dữ liệu đó cũng khơng được đảm bảo an tồn. Vì vậy,
trong phần trình bày sau sẽ cho biết cơ sở dữ liệu sẽ bị tấn công và tổn hại như thế nào
thông qua nhiều cách thức khác nhau và điều này cũng phụ thuộc vào những môi trường
mà cơ sở dữ liệu giao tiếp như hệ điều hành, mạng, hay các ứng dụng.
2.2.1 Tổng quan về phân loại tấn công cơ sở dữ liệu
Tấn cơng là một mối đe dọa có chủ tâm và là một hành động được thực hiện với âm
mưu phá vỡ tính an tồn và bảo mật của hệ thống. Hậu quả của hành động tấn cơng đó có
Trần Thị Quế Nguyệt

7


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

thể gây nên sự sụp đổ server cơ sở dữ liệu, hay hiệu chỉnh, đánh cắp, làm sai lệch dữ liệu,
hoặc ảnh hưởng đến tính sẵn sang của dữ liệu, … làm vi phạm bốn tính chất của một hệ
thống bảo mật như đã trình bày ở trên.
Các cách tấn cơng vào hệ thống nói chung, vào cơ sở dữ liệu nói riêng rất đa dạng.
Tuy nhiên, nhìn chung các kiểu tấn cơng vào cơ sở dữ liệu có thể được phân thành 2 loại
chính yếu sau [17]:
-


Loại tấn cơng trực tiếp vào các dữ liệu và tài nguyên, khai thác những điểm
yếu của hệ cơ sở dữ liệu và gây ảnh hưởng trực tiếp đến hệ cơ sở dữ liệu.

-

Loại tấn công gián tiếp vào các dữ liệu và tài nguyên, thông tin được suy diễn
từ dữ liệu hay tài nguyên được phép truy xuất. Tấn công gián tiếp thường được
suy diễn thông qua những câu hỏi/câu truy vấn tới cơ sở dữ liệu hoặc thông
qua các kênh truyền ngầm.

Trong loại đầu tiên người ta thường chia làm 2 loại nữa. Loại tấn công bằng cách sử
dụng các kỹ thuật phổ biến như Brute Force, SQL Injection, hay Denial of service [17,
18, 19]. SQL Injection là một kỹ thuật tiêm vào các câu SQL những đoạn mã độc hại để
thực hiện mưu đồ của mình. Denial of service là một kiểu tấn cơng ngăn chặn hay làm trì
hỗn một dịch vụ nào đó từ người yêu cầu. Brute Force là một cách tấn công vào một hệ
thống bảo mật với một số lượng lớn các lần thử ví dụ như thử một số lượng các pasword
để dị tìm ra password. Một hình thức tấn cơng nữa là đánh cắp các thiết bị phần cứng
chứa dữ liệu.Ví dụ, chứa một bảng backup dữ liệu trên máy laptop và một người nào đó
đánh cắp máy laptop.
Loại cịn lại tấn cơng vào cơ sở dữ liệu đơn giản hơn do chính cơ sở dữ liệu đó khơng
được thiết lập các cấu hình, chính sách an tồn. Ví dụ như các tài khoản mặc định vẫn
chưa được thiết lập lại, hay các thông số cấu hình nhạy cảm vẫn được giữ giá trị mặc
định. Các admin khơng am hiểu tốt về cấu hình hệ cơ sở dữ liệu của mình, cũng như
khơng theo dõi các lỗ hổng do nhà cung cấp công bố và cập nhật các bản vá kịp thời.
Nhìn ở một khía cạnh khác, các cách tấn cơng cũng có thể phân loại theo hướng tấn
công, tấn công từ bên trong (internal) và tấn cơng từ bên ngồi (external) [17, 20].

Trần Thị Quế Nguyệt


8


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

-

Tấn công từ bên trong 80% được thực hiện từ những người trong cơng ty có
chủ ý xấu đã lợi dùng quyền hoặc nắm được những điểm yếu của hệ thống để
phá hoại. Đa số những người này thường làm ở những vị trí nhạy cảm và quan
trọng trong cơng ty như DBA, quản lý, … nhưng sau đó bị sa thải hay xuống
chức. 65% những lỗi do tấn công từ bên trong khơng phát hiện được [21].

-

Tấn cơng từ bên ngồi thường do các hacker bên ngoài thực hiện. Các hacker
này chủ yếu lợi dụng vào những lỗ hổng cơ sở dữ liệu được thơng báo thường
kì của các nhà cung cấp DBMS để lấy cắp dữ liệu hay phá hoại làm ngưng trệ
hệ thống. Các con sâu (worm) hay virus cũng được xếp vào loại tấn cơng từ
bên ngồi.

Ngồi ra người ta cịn chia các cách tấn cơng theo 2 loại active và passive attack [19].
-

Passive attack là loại tấn cơng trong đó người thực hiện khơng có quyền nhưng
vẫn lấy được quyền truy xuất đến dữ liệu quý giá nhưng khơng ảnh hưởng đến
nội dung của nó ví dụ như nghe lén hay theo dõi hệ thống đang thực hiện các
cơng việc và thu thập những thơng tin đó. Việc theo dõi các lưu lượng mạng
(network traffic), việc sử dụng CPU hay disk, việc theo dõi sự truy xuất của hệ
thống cũng là một dạng passive attack. Nhìn chung, loại tấn cơng này khó phát

hiện vì nó khơng ảnh hưởng hay tương tác với hệ thống.

-

Active attack là loại tấn công làm thay đổi hệ thống bằng cách nào đó. Ví dụ
như có thể thêm dữ liệu mới, hiệu chỉnh hay xóa bỏ dữ liệu đang tồn tại trong
cơ sở dữ liệu. Một thao tác đơn giản như hiệu chỉnh lại tín hiệu trả về negative
acknowledgment (NACK) từ database server thành positive acknowledgement
(ACK) cũng đã gây ra nhiều phiền toán cho hệ cơ sở dữ liệu. So với passive
attack, thì active attack dễ dàng phát hiện hơn nếu hệ thống có trang bị những
biện pháp phịng chống và bảo vệ chính xác.

Trong những phần trình bày sau chỉ giới thiệu các tấn công cơ sở dữ liệu phổ biến
trong đó có các cách tấn cơng phổ biến của hacker hiện nay mà Kelly J. H. đã thống kê
năm 2008 [22].

Trần Thị Quế Nguyệt

9


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

2.2.2 Unauthorized access
Truy xuất trái phép là khi một người nào đó không được phép nhưng vẫn lấy được
quyền truy xuất thông qua các cách tấn công như brute force hay một số phương tiện
khác.
• Brute Force Attacks
Đây là một cách tấn công không chỉ giới hạn cho bảo mật cơ sở dữ liệu mà còn cho
các lĩnh vực khác bằng cách sử dụng các phương pháp thử - sai thường được sử dụng để

đốn username, password, số thẻ tín dụng hay khóa mật mã. Ví dụ như để đốn các
password của tài khoản nào đó, hacker sẽ cố thử từng trường hợp có thể. Nói chung, các
hacker có thể sử dụng cách tấn cơng brute force bằng các hình thức sau:
-

Cố gắng login bằng tay bằng cách gõ thử một vài username và password.

-

Kết hợp dựa trên từ điển dữ liệu, các script hay chương trình tự động thử với
hàng ngàn username và password từ file từ điển dữ liệu.

-

Chương trình crack sẽ tự sinh ra random các username hoặc/và các password
bằng cách kết hợp các kí tự chữ và số với nhau hay các cách kết hợp khác.

Brute force có thể được thực hiện dựa trên một số kiến thức biết trước về hệ thống để
tăng thời gian thực hiện hay giảm số lần thử. Ví dụ, password dự đốn có chứa tên
username hoặc có liên quan đến thơng tin của user như nơi sinh, ngày sinh, tên cha mẹ,
tên công ty, hoặc các password mặc định …
Một số biện pháp có thể được dùng để hạn chế tấn cơng brute force như sau:
-

Hạn chế số lần đăng nhập thất bại.

-

Cấm một địa chỉ IP nào đó sau nhiều lần đăng nhập không thành công.


-

Theo dõi log file đối với những lần truy xuất đáng nghi ngờ.

• Lợi dụng các password mặc định
Trong nhiều hệ cơ sở dữ liệu, các password mặc định cho một số username hay
account đã biết vẫn tồn tại mà không được các quản trị cơ sở dữ liệu thay đổi. Những
password mặc định này tồn tại trong hệ thống phụ thuộc vào cấu hình mặc định, version
cài đặt hay những quy định password đến tài khoản user. Lợi dụng những password mặc
định này (các thông tin password mặc định thường được công bố trong các sản phNm, ví
Trần Thị Quế Nguyệt

10


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

dụ như Oracle), các hacker sử dụng một từ điển dữ liệu lưu trữ các password mặc định đó
để dị tìm những tài khoản nào đang sử dụng. Có rất nhiều cơng cụ tiện ích, những đoạn
script để dị tìm những password mặc định và tài khoản tương ứng [12, 13].
• Chứng thực yếu và sự cho phép lỏng lẽo
Chứng thực yếu là vấn đề bảo mật khá rộng ảnh hưởng tới nhiều loại ứng dụng có liên
quan đến chứng thực user không chỉ riêng cơ sở dữ liệu. Chứng thực yếu nghĩa là người
ngồi dễ dàng suy đốn và vượt qua được cách chứng thực đó. Chẳng hạn, một username
và password khơng mạnh và dễ dàng đốn. Ví dụ, một cơng ty nào đó quy định đặt tên
username và password theo một mẫu nào đó. Như vậy tạo điều kiện thuận lợi cho hacker
thực hiện việc tìm ra password nhanh chóng hơn.
Sự cho phép lỏng lẽo nghĩa là khi tài nguyên nào đó sẵn có cho mọi người và thơng
tin có thể lấy được một cách công khai. Điều này cho phép hacker nhiều thuận lợi trong
khi tìm cách tấn cơng vào cơ sở dữ liệu. Một vài hệ cơ sở dữ liệu cho phép truy xuất tới

các bảng dữ liệu nhạy cảm một cách lõng lẻo. Ví dụ như Oracle cho phép quyền truy xuất
tới view ALL_USERS tới đối tượng PUBLIC (nghĩa là user nào cũng được phép xem
thông tin trên bảng đó) [23], như vậy thơng tin username trong cơ sở dữ liệu rất dễ biết
được. Một ví dụ nữa là sự cho phép lỏng lẽo do Microsoft Windows XP khi dịch vụ
simple file sharing được bật lên. Xét trường hợp một user đang chạy XP trên một máy
tính, một database server được cài đặt cục bộ và simple file sharing được bật lện. Khi
simple file sharing được bật lên trên một máy tính, truy xuất được gán cho tài khoản
guest thay vì phải cung cấp một username/password hợp lệ. Trong Windows, nếu một
user là thành viên của nhóm ORA_DBA (một nhóm mặc định sinh ra trong hệ điều hành
khi cài đặt Oracle) vậy thì khi connect đến server như một SYSDBA thì khơng cần phải
cung cấp một password cho user SYS (chứng thực thông qua hệ điều hành – connect as
SYSDBA). Oracle sử dụng hàm AcceptSecurityContext() để kiểm tra quá trình login, nếu
username và password được cung cấp hợp lệ thì hàm sẽ trả về thành cơng. Tuy nhiên, nếu
dịch vụ simple file sharing được bật lên thì tất cả các logon đều thành cơng vì user sẽ
được chứng thực như một user guest. Nhưng Oracle không nhận ra guest và chứng thực

Trần Thị Quế Nguyệt

11


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

user đó với bất kì username nào được cung cấp. Do đó, nếu remote user cung cấp một
username hợp lệ trong nhóm ORA_DBA vậy thì Oracle sẽ chứng thực user đó và đưa cho
họ quyền SYSDBA. Cho nên, một user guest lúc này có quyền truy xuất SYSDBA mà
khơng phải cung cấp một password nào. Tóm lại, tất cả những gì kẻ tấn công cần là biết
được tên của một thành viên trong nhóm ORA_DBA, và họ có thể login với quyền truy
xuất SYSDBA mà khơng cần phải cung cấp password [8].
• Vượt quyền

Vượt quyền là trường hợp khi một user có quyền nào đó nhưng do khai thác các lỗ
hổng hay điểm yếu của cơ sở dữ liệu nên đã đạt được quyền cao hơn. Kẻ tấn công vượt
quyền của họ bằng nhiều cách khác nhau nhưng một kịch bản điển hình là thơng qua
buffer overflow, SQL injection hay thơng qua những môi trường khác như ứng dụng,
mạng, hệ điều hành để vượt quyền cơ sở dữ liệu [7]. Một đặc điểm chính của cách tấn
cơng vượt quyền là kẻ tấn cơng phải có trước một số quyền nào đó mới dùng các phương
tiện để vượt quyền của mình.
Thường những điểm yếu mà kẻ tấn cơng có thể lợi dụng để vượt quyền được cơng bố.
Một ví dụ được tìm thấy trong mySQL là một user có quyền truy xuất đến một database
nào đó nhưng khơng có quyền tạo cơ sở dữ liệu khác. Tuy nhiên điểm yếu ở đây là
mySQL lại cho phép user đó tạo cơ sở dữ liệu khác cùng tên với cơ sở dữ liệu hiện tại
nhưng khác kí tự in hoa/thường [24].
Có rất nhiều trường hợp vượt quyền khác do điểm yếu của chính bên trong hệ quản trị
cơ sở dữ liệu đã được công bố bởi các nhà cung cấp cơ sở dữ liệu như Oracle, mySQL,
SQL Server … Một số khác có thể do cấu hình nhầm (misconfiguration), một user được
gán quyền nhiều hơn quyền mà nó thực sự cần. Lỗi này thường do DBA khơng có đủ
kiến thức cũng như cơng ty khơng có một chính sách bảo mật rõ ràng về ai có thể làm
những gì để gán quyền tối thiểu cho user. Ngồi ra vẫn cịn tồn tại những cách vượt
quyền khác chưa được phát hiện và sửa chữa.

Trần Thị Quế Nguyệt

12


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

2.2.3 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 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 vào" (inject) và thi hành các câu lệnh SQL bất hợp 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ó tồ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. Lỗi này thường xảy
ra trên các ứ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.
Ví dụ,
private void cmdLogin_Click(){

string strQry = "SELECT * FROM Users_Table WHERE UserName=‘ " + txtUser.Text + “
' AND Password=‘ " + txtPassword.Text + “ ‘ ";

}

Khi mà người dùng gõ username hợp lệ Paul và password là “password”, người dùng
được phép vào hệ thống:
Câu query như sau:
Select * FROM Users_Table WHERE UserName= ‘Paul’ AND Password= ‘password’

Mặc dù vậy nếu người dùng gõ vào ô gõ username là: ‘Or 1=1-Câu query trở thành:
SELECT * FROM Users_Table WHERE UserName='' Or 1=1 --' AND Password=''

Vậy thì người dùng được phép vào hệ thống mà không cần biết chính xác password.
Để hạn chế việc tấn cơng bằng SQL Injection, cần phải bảo vệ các câu lệnh SQL bằng
cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request (Request,
Request.QueryString, Request.Form, Request.Cookies, and Request.ServerVariables). Ví
dụ, có thể giới hạn chiều dài của chuỗi nhập liệu, hoặc xây dựng hàm EscapeQuotes để
thay thế các dấu nháy đơn bằng 2 dấu nháy đơn ví dụ như:
<%


Trần Thị Quế Nguyệt

13


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu
Function EscapeQuotes(sInput)
sInput = replace(sInput, " ' ", " ' ' ")
EscapeQuotes = sInput
End Function
%>

Ngồi ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểm như: ;, --,
select, insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía người dùng để hạn chế các tấn
cơng dạng này.
Trong database, SQL Injection thường xuất hiện khi kẻ tấn cơng có quyền thực thi
một procedure hay function nào đó trong cơ sở dữ liệu. Kẻ tấn cơng lợi dụng việc hiện
thực các procedure/function đó bị lỗi, tiêm các đoạn mã độc hại vào tham số truyền. Điều
đó dẫn đến khi thực thi procedure/function đó, đoạn mã độc hại cũng được thực thi và vì
vậy kẻ tấn cơng có thể thực hiện được mưu đồ của mình [7, 8].
Ví dụ, kẻ tấn công tạo một hàm ATTACK_FUNC để thực hiện âm mưu của mình là
gán quyền dba cho Public. Sau đó, dùng SQL Injection để tiêm vào tham số hàm
DBMS_CDC_SUBSCRIBE.ACTIVATE_SUBSCRIPTION

để

thực

thi


hàm

ATTACK_FUNC trên.
CREATE OR REPLACE FUNCTION "NORMAL_USER"."ATTACK_FUNC" return
varchar2
authid current_user as
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE 'GRANT DBA TO Public';
COMMIT;
RETURN '';
END;
/
BEGIN
SYS.DBMS_CDC_SUBSCRIBE.ACTIVATE_SUBSCRIPTION('''||NORMAL_USER.ATT
ACK_FUNC()||''');
END;
/

Như vậy thông qua SQL Injection và một số điều kiện khác, kẻ tấn công đã nâng
quyền của mình thành DBA. Đây là một cách tấn công rất nguy hiểm đối với hệ cơ sở dữ
liệu.

Trần Thị Quế Nguyệt

14


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu


2.2.4 Trì hỗn dịch vụ (Denial of service)
Trì hỗn dịch vụ (DOS) là một cách tấn công cũng khá phổ biến. DOS làm cho hệ
thống bị ngưng trệ và ngừng cung cấp dịch vụ nào đó cho user có yếu cầu. Điều này làm
ảnh hưởng đến tính sẵn sàng của hệ thống. Ví dụ, dịch vụ đặt hàng của cơng ty bị đình trệ
sẽ gây nên sự tổn thất về kinh tế. Một cách phổ biến để tấn công dạng DOS đến một ứng
dụng là gửi liên tục một số lượng lớn các yêu cầu đến server làm hệ thống sử dụng đến
100% tài ngun trong suốt thời gian đó. Và vì vậy database server không sẵn sàng đáp
ứng cho các yêu cầu của các user thực sự [17, 18].
2.2.5 Khai thác các dịch vụ và chức năng thừa của hệ cơ sở dữ liệu
Một trong những thứ đầu tiên mà kẻ tấn cơng ngồi sẽ tìm kiếm đó là nạn nhân có
đang sử dụng listener của cơ sở dữ liệu Oracle hay khơng. Listener nhằm tìm và chuyển
các kết nối mạng tới cơ sở dữ liệu Oracle và vì vậy làm lộ thông tin các user và database
link [7, 8]. Với google hacking, kẻ tấn cơng có thể tìm kiếm và phát hiện ra các dịch vụ
Listener trên các cơ sở dữ liệu mà nó khơng được thiết lập password. Markovich phát
biểu “Tơi đã từng tìm kiếm cách đây khơng lâu và phát hiện ra nhiều thông tin thú vị trên
các trang web trong đó có những trang của chính phủ và đây thực sự là một vấn đế lớn”.
Ngoài ra trong quá trình cài đặt, các DBA cài đặt quá dư thừa các dịch vụ không cần
thiết và không phù hợp với hệ thống của mình, hoặc chưa chỉnh lại các giá trị mặc định
của các tham số cấu hình khởi tạo. Điều đó dẫn đến việc mất kiểm sốt các sơ hở để cho
hacker lợi dụng. Do đó, vấn đề chính ở đây là chỉ cài đặt những tính năng cần thiết.
Markovich nói “Nếu khơng triển khai một tính năng nào đó thì sẽ khơng phải cập nhật
bản vá của nó". Vì vậy, càng cài đặt nhiều tính năng dịch vụ dư thừa càng có nhiều lỗ
hổng cho kẻ tấn công.
2.2.6 Hướng tới các lỗ hổng cơ sở dữ liệu đã công bố bản vá
Tuy các nhà cung cấp hệ quản trị cơ sở dữ liệu không thông báo chi tiết các lỗ hổng
trong các bản vá, nhưng dựa vào các thơng tin có được đó, kẻ tấn cơng cũng dễ dàng phát
hiện được. Nhất là dựa vào các công cụ quét lỗ hổng hiện nay cũng như các website
hacker, phương tiện thông tin đại chúng mà thông tin về các lỗ hổng cũng như cách tấn

Trần Thị Quế Nguyệt


15


Khắc phục khuyết điểm kỹ thuật Pentesting trong việc phát hiện lỗ hổng bảo mật cơ sở dữ liệu

công đã trở thành phổ biến với mọi người. Một vấn đề khác nữa là các công ty thường
không quan tâm đến việc cập nhật các bản vá mới, vì tốn nhiều thời gian và phải tạm shut
down cơ sở dữ liệu trong một khoảng thời gian. Cho nên điều này sẽ tạo điều kiện cho
hacker thực hiện một vài thao tác đơn giản ví dụ như so sánh version của cơ sở dữ liệu
hiện tại với version mới để tìm các lỗ hổng đang tồn tại trong hệ cơ sở dữ liệu và khai
thác chúng.
2.3 Các lỗ hổng bảo mật cơ sở dữ liệu
Trong chương này sẽ trình bày cách phân loại các lỗ hổng bảo mật cơ sở dữ liệu phổ
biến hiện nay. Những lỗ hổng này dễ dàng được khai thác bằng các cách tấn công ở trên
để xâm phạm tính bảo mật của hệ cơ sở dữ liệu.
2.3.1 Định nghĩa lỗ hổng bảo mật
Lỗ hổng bảo mật (security flaw) là tập hợp những điều kiện mà cho phép một kẻ xấu
tấn cơng làm vi phạm những chính sách bảo mật một cách tường minh hoặc ngầm.
2.3.2 Phân loại lỗ hổng bảo mật
Dựa trên các loại lỗ hổng thường gặp, các loại lỗ hổng bảo mật gồm những loại chính
chính sau đây:

Trần Thị Quế Nguyệt

16


×