120 Trong những trƣờng hợp cần thiết, có thể sử dụng tƣờng lửa, hoặc proxy cho cơ sở dữ
liệu để lọc các truy vấn độc hại, nhƣ mơ hình GreenSQL proxy trên Hình 5.20. Cũng có
thể sử dụng tƣờng lửa ứng dụng web để lọc các yêu cầu gửi đến ứng dụng web, trƣớc khi
chúng đƣợc gửi đến cơ sở dữ liệu, nhƣ minh họa trên Hình 5.21.
5.4.1.2. Trojan trên cơ sở dữ liệu
a.Các dạng trojan trên cơ sở dữ liệu
Trojan là các phần mềm chứa mã độc, thƣờng giả danh những chƣơng trình có ích,
nhằm lừa ngƣời dùng kích hoạt chúng. Trojan thƣờng đƣợc sử dụng để thực thi gián tiếp các tác vụ, mà tác giả của chúng không thể thực hiện trực tiếp do khơng có quyền truy nhập. Trojan thƣờng khai thác cơ chế điều khiển truy nhập tùy quyền (DAC) để thay đổi quyền truy nhập, cho phép tin tặc truy nhập các đối tƣợng mà chủ thể không hay biết.
Các trojan cơ sở dữ liệu thƣờng là các đoạn mã độc SQL đƣợc nhúng vào các thủ tục
cơ sở dữ liệu, đƣợc chia thành 4 dạng:
1. Một tấn công thực hiện cả việc chèn mã và gọi thực hiện trojan;
2. Một tấn công sử dụng một ngƣời dùng hoặc tiến trình thực hiện việc chèn mã trojan và sau đó gọi thực hiện trojan nhằm trích xuất thơng tin hoặc thực hiện một
hành động nào đó trong cơ sở dữ liệu;
3. Một tấn công thực hiện việc chèn mã trojan và sau đó sử dụng một ngƣời dùng
hoặc một tiến trình khác gọi thực hiện trojan;
4. Một tấn công sử dụng một ngƣời dùng hoặc tiến trình này thực hiện việc chèn mã trojan và sau đó sử dụng một ngƣời dùng hoặc một tiến trình khác gọi thực hiện trojan.
Sau đây là 2 trƣờng hợp ví dụ về mã trojan đƣợc chèn vào thủ tục cơ sở dữ liệu và đƣợc gọi thực hiện. Trong trƣờng hợp thứ nhất, tin tặc sử dụng 1 ngƣời dùng hoặc 1 tiến
trình nào đó để chèn mã SQL trojan vào thủ tục. Theo đó, một lập trình viên ít kinh nghiệm lấy 1 đoạn mã thủ tục trên mạng hoặc từ các nguồn không rõ ràng và đƣa vào cơ
sở dữ liệu mà không hiểu rõ đoạn mã đó thực hiện những cơng việc gì. Khi thủ tục đƣợc gọi, trojan đƣợc kích hoạt.
Trong trƣờng hợp thứ hai, trojan đƣợc gọi thực hiện sử dụng 1 ngƣời dùng hoặc 1 tiến trình nào đó. Theo đó, một thủ tục cơ sở dữ liệu đƣợc cài đặt chạy định kỳ vào cuối tháng để tính lƣơng cho tất cả nhân viên trong công ty. Tin tặc nắm đƣợc điều này có thể tìm cách chèn mã trojan vào thủ tục này và nó sẽđƣợc kích hoạt khi thủ tục đƣợc chạy.
b.Các biện pháp phòng chống
Để phòng chống trojan trên cơ sở dữ liệu hiệu quả cần kết hợp 2 biện pháp: (1) kiểm soát việc tạo và sửa các thủ tục và (2) giám sát việc thực hiện các thủ tục trên cơ sở dữ
liệu. Trong kiểm soát việc tạo và sửa các thủ tục, nội dung đầu tiên là hạn chế, hoặc cấm
ngƣời dùng thao tác dữ liệu tạo, hoặc sửa các thủ tục, hàm cơ sở dữ liệu trong môi trƣờng máy chủ sản xuất (production server). Cần đảm bảo rằng các thủ tục, hàm cần đƣợc tạo, sửa và kiểm thử kỹ trong môi trƣờng máy chủ phát triển (development server) và triển khai trên chủ sản xuất sử dụng ngƣời dùng quản trị. Ngồi ra, khơng sử dụng mã SQL từ
121 các nguồn không rõ ràng và đặc biệt là mã SQL từ mạng Internet mà không đƣợc kiểm tra kỹ. Kèm theo, cần ghi log và lƣu phiên bản của mã nguồn các thủ tục và hàm.
Giám sát việc thực hiện các thủ tục, hàm trên cơ sở dữ liệu là việc cần thiết nhằm phát hiện các bất thƣờng, hoặc các hành vi nguy hiểm đối với cơ sở dữ liệu. Đặc biệt, cần ghi log và giám sát chặt chẽ việc thực hiện các thủ tục quan trọng, có độ phức tạp cao, các thủ tục đƣợc chạy định kỳ hoặc đƣợc kích hoạt bởi triger. Một vấn đề bổ sung là cần cấm, hoặc hạn chế quyền thực hiện các thủ tục mở rộng hoặc thủ tục hệ thống – là những thủ tục chứa những đoạn mã có thể can thiệp sâu vào cơ sở dữ liệu, máy chủcơ sở dữ liệu và hệđiều hành.
5.4.2. Top 10 lỗ hổng cơ sở dữ liệu trên thực tế
Top 10 lỗ hổng cơ sở dữ liệu trên thực tế là những lỗ hổng bảo thƣờng gặp và đã bị
khai thác, hoặc có nhiều khảnăng bị khai thác để thực hiện các cuộc tấn công vào cơ sở
dữ liệu trên thực tế. Danh sách các lỗ hổng này bao gồm:
1. Default and Weak Passwords (Các mật khẩu yếu hoặc ngầm định) 2. SQL Injection in the DBMS (Lỗi chèn mã SQL)
3. Excessive User & Group Privileges (Đặc quyền quá mức cho ngƣời dùng hoặc
nhóm ngƣời dùng)
4. Unnecessary Enabled DBMS Features (Cho phép các tính năng khơng sử dụng trong DBMS)
5. Broken Configuration Management (Quản lý cấu hình lỗi) 6. Buffer Overflows (Lỗi tràn bộđệm)
7. Privilege Escalation (Leo thang đặc quyền)
8. Denial of Service (Tấn công từ chối dịch vụ)
9. Unpatched Database (Cơ sở dữ liệu không đƣợc vá) 10.Unencrypted Data (Dữ liệu khơng mã hóa)
Phần thiếp theo của mục này mơ tả chi tiết các lỗ hổng kể trên.
Các mật khẩu yếu hoặc ngầm định
122 Nhiều hệ quản trị cơ sở dữ liệu, đặc biệt là các các phiên bản cũ sử dụng tài khoản quản trị với mật khẩu ngầm định đơn giản hoặc rỗng. Chẳng hạn, Microsoft SQL Server (phiên bản 2000 và cũ hơn) sử dụng ngƣời dùng quản trị hệ thống – sa với mật khẩu rỗng. Tƣơng tự, hệ quản trị cơ sở dữ liệu MySQL sử dụng ngƣời dùng quản trị hệ thống –
root với mật khẩu rỗng. Trong quá trình cài đặt, nhiều tài khoản sử dụng mật khẩu giống
tên truy nhập hoặc rất dễđốn, nhƣ minh họa trên Hình 5.22.
Lỗi chèn mã SQL
Nhƣ đã đề cập trong mục 2.3, lỗi chèn mã SQL có thể giúp tin tặc vƣợt qua các khâu xác thực ngƣời dùng, chèn, sửa đổi, hoặc xóa dữ liệu, đánh cắp các thơng tin trong cơ sở
dữ liệu và chiếm quyền điều khiển hệ thống máy chủ cơ sở dữ liệu.
Đặc quyền quá mức cho người dùng hoặc nhóm người dùng
Nhiều ngƣời dùng, nhóm ngƣời dùng đƣợc cấp quyền truy nhập cao quá mức cần thiết
để thực hiện công việc đƣợc giao dẫn tới lạm dụng quyền, hoặc bị tin tặc khai thác. Trên thực tế, nhiều ngƣời dùng cơ sở dữ liệu đƣợc tạo chỉ để truy nhập dữ liệu nhƣng lại đƣợc cấp quyền quản trị, hoặc là chủ sở hữu cơ sở dữ liệu. Điều này xảy ra chủ yếu do ý thức của ngƣời quản trị và có thể gây ra hậu quả rất lớn nếu bị khai thác.
Một trƣờng hợp điển hình đã xảy ra trên thực tế là tấn công khai thác lỗi DBMS JVM EXP PERMS trên Oracle 11g R1: vai trò ban đầu là Public - khơng có tài khoản và khơng có quyền truy nhập, nhƣ minh họa trên Hình 5.23.
Hình 5.23.Lạm dụng đặc quyền – thời điểm bắt đầu
123
Bƣớc tiếp theo là thiết lập chính sách điều khiển truy nhập cho máy ảo Java (JVM),
nhƣ biểu diễn trên Hình 5.24. Do lỗi trong thành phần điều khiển truy nhập của JVM, Public có thể nhập tồn bộ quyền truy nhập của JVM và có tồn quyền truy nhập vào hệ điều hành, nhƣ biểu diễn trên Hình 5.25. Nguyên nhân của lỗi này là đặc quyền cấp cho
máy ảo JVM quá mức và có thể bị lạm dụng.
Hình 5.25.Lạm dụng đặc quyền – giành quyền truy nhập tối đa vào hệđiều hành
Cho phép các tính năng khơng sử dụng trong DBMS
Việc cho phép chạy các tính năng khơng sử dụng trong trong hệ quản trịcơ sở dữ liệu mang lại nhiều rủi ro do điều này làm tăng bề mặt tấn công, giúp tin tặc có nhiều lựa chọn tấn cơng cơ sở dữ liệu. Đặc biệt, một số tính năng khơng cần thiết, nhƣng lại có khả
năng truy nhập sâu vào cơ sở dữ liệu và hệ thống, nhƣ siêu thủ tục xp_cmdshell trong
SQL Server và Sysbase (Hình 5.26).
Hình 5.26.Ví dụ vềcho phép các tính năng khơng sử dụng trong DBMS Quản lý cấu hình lỗi
Cấu hình cơ sở dữ liệu, hoặc hệ quản trị cơ sở dữ liệu bị lỗi là một trong các nguyên nhân chính dẫn đến các cuộc tấn cơng khai thác. Hình 5.27 nêu một số ví dụ minh họa về
cấu hình DBMS có lỗi. Chẳng hạn, trong hệ quản trịcơ sở dữ liệu IBM DB2, tham số cấu
hình TRUST_ALLCLNTS đƣợc đặt ngầm định là YES – có nghĩa là tất cả các máy khách kết nối đến đều đƣợc xem là tin cậy.
124
Hình 5.27.Một số ví dụ về cấu hình DBMS có lỗi Lỗi tràn bộđệm Lỗi tràn bộđệm
Lỗi tràn bộđệm là lỗi thƣờng gặp trong các mô đun phần mềm của các hệ quản trị cơ
sở dữ liệu. Lỗi tràn bộ đệm có thể làm máy chủ ngừng hoạt động, hoặc giúp tin tặc tải và thực hiện mã độc trên hệ thống nạn nhân. Điển hình là sâu Slammer khai thác lỗi tràn bộ đệm trên hệ quản trị cơ sở dữ liệu Microsoft SQL 2000 cho phép thực thi mã từxa để lây lan sâu.
Leo thang đặc quyền
Lỗi leo thang đặc quyền có thể giúp ngƣời dùng với quyền truy nhập thấp giành đƣợc quyền truy nhập cao hơn, chẳng hạn từ ngƣời dùng bình thƣờng có thể trở thành DBO (Database Owner), hoặc DBA (Database Admin).
Hình 5.28.Khai thác lỗi leo thang đặc quyền –trước khi khai thác
Để minh họa cho trƣờng hợp khai thác lỗi leo thang đặc quyền, chúng ta xem xét kịch bản khai thác lỗi này trong mô đun MDSYS.RESET_INPROG_INDEX của Oracle11g R2. Kịch bản khai thác nhƣ sau:
- Tạo 1 thủ tục myproc chứa mã cấp quyền cho ngƣời dùng hiện tại thành DBA; - Tạo hàm myfn chứa mã để tạo 1 trigger trong system schema. Trigger chứa lệnh
125 - Tiến hành khai thác lỗi trong mô đun MDSYS.RESET_INPROG_INDEX, yêu cầu
MDSYS thực hiện myfn để tạo trigger;
- Sử dụng ngƣời dùng có quyền PUBLIC để chạy 1 lệnh SQL để kích hoạt việc thực hiện trigger đã tạo. Hệ thống sẽ thực hiện trigger và trigger sẽ gọi thực hiện
myproc cấp quyền DBA cho ngƣời dùng.
Hình 5.29. Khai thác lỗi leo thang đặc quyền – sau khi khai thác thành cơng
Hình 5.28 là màn hình ngƣời dùng thơng thƣờng đăng nhập và Hình 5.29 là màn hình cung cấp thông tin ngƣời dùng trên đã đƣợc cấp quyền DBA sau khi khai thác thành công lỗleo thang đặc quyền trong mô đun MDSYS.RESET_INPROG_INDEX.
Tấn công từ chối dịch vụ
Nhƣ đã đề cập trong mục 5.4.1.1, tấn công từ chối dịch vụ trực tiếp vào cơ sở dữ liệu không phổ biến nhƣ dạng tấn công này vào hạ tầng mạng và các dịch vụ mạng khác. Tuy nhiên, tấn công từ chối dịch vụ có thể đƣợc thực hiện gián tiếp vào cơ sở dữ liệu thông qua việc khai thác các lỗi trong các mô đun của hệ quản trị cơ sở dữ liệu. Chẳng hạn, sâu Slammer khai thác lỗi tràn bộ đệm để tấn công DoS và lây lan đến 75.000 máy chủ
Microsoft SQL 2000 trong 10 phút, hoặc lỗi trong Tivoli DB2 monitoring agent của hệ
quản trị cơ sở dữ liệu IBM DB2 LUW 9.7 cho phép tin tặc tấn công DoS vào cơ sở dữ liệu.
Cơ sở dữ liệu không được vá
Hệ quản trị cơ sở dữ liệu và các mô đun kèm theo nếu không đƣợc vá, cập nhật phù hợp sẽ chịu nhiều rủi ro từ các tấn công khai thác các lỗ hổng bảo mật đã biết do các mã khai thác các lỗi đã biết và hƣớng dẫn sử dụng chi tiết xuất hiện rất nhanh trên mạng Internet. Do vậy, cần có cơ chế cập nhật, vá lỗi phù hợp.
Dữ liệu khơng mã hóa
Các dữ liệu nhạy cảm tại chỗ hoặc trên đƣờng truyền không đƣợc mã hóa có thể bị
126 hóa dữ liệu kiểu trong suốt (TDE). Với dữ liệu trên đƣờng truyền, có thể sử dụng các giao thức bảo mật, nhƣ SSL/TLS, Kerberos, hoặc Oracle ASO.
5.5.Câu hỏi ôn tập
1) Mô tả các mơ hình ngƣời dùng, máy khách truy nhập cơ sở dữ liệu. 2) Mô tảcác đối tƣợng chính trong cơ sở dữ liệu.
3) Bảo mật cơ sở dữ liệu là gì? Nêu các yêu cầu bảo mật cơ sở dữ liệu. 4) Mô tả các yếu tố liên quan đến bảo mật cơ sở dữ liệu.
5) Mô tả Top 10 mối đe dọa đối với bảo mật cơ sở dữ liệu, theo Imperva 2015.
6) Vẽ mơ hình bảo mật cơ sở dữ liệu tổng quát và nêu tên các lớp bảo mật cơ sở dữ liệu. 7) Mô tả nội dung chi tiết các lớp bảo mật cơ sở dữ liệu.
8) Mô tả các dạng tấn công từ chối dịch vụ lên cơ sở dữ liệu và các biện pháp phịng
chống.
9) Trojan là gì? Nêu các phƣơng pháp mã trojan đƣợc nhúng vào cơ sở dữ liệu.
127
CHƢƠNG 6. CÁC CƠ CHẾ BẢO MẬT CƠ SỞ DỮ LIỆU
Chương 6 đề cập các cơ chế bảo mật cơ sở dữ liệu, bao gồm xác thực & trao quyền
người dùng, bảo mật các đối tượng trong cơ sở dữ liệu, sử dụng mã hóa và một số biện pháp bảo mật cơ sở dữ liệu khác. Trong phần tiếp theo, chương trình bày về mơ hình bảo mật của 3 hệ quản trị cơ sở dữ liệu, bao gồm Microsoft SQL Server, MySQL và Oracle. Phần cuối chương giới thiệu vấn đề kiểm tra và đánh giá bảo mật hệ thống cơ sở dữ liệu.
6.1.Xác thực và trao quyền trong cơ sở dữ liệu
6.1.1. Xác thực và trao quyền trong cơ sở dữ liệu
6.1.1.1. Giới thiệu
Vềcơ bản, nội dung của xác thực và trao quyền trong cơ sở dữ liệu cũng tƣơng tựnhƣ
nội dung xác thực và trao quyền trong ứng dụng web đã đƣợc đề cập tại Mục 3.2.1.1.
Tƣơng tựnhƣ đối với ứng dụng web, xác thực sử dụng tên ngƣời dùng (username) và mật khẩu (password) là phƣơng pháp chủ yếu trong xác thực ngƣời dùng cơ sở dữ liệu. Xác thực là thành phần cơ sở của mơ hình bảo mật tổng quát, nhƣ biểu diễn trên Hình 6.1.
Hình 6.1.Mơ hình bảo mật ứng dụng tổng quát
Hầu hết các hệ quản trị cơ sở dữ liệu hỗ trợ lựa chọn phƣơng pháp xác thực phù hợp trong sốcác phƣơng pháp xác thực sẵn có:
- Khơng xác thực, hoặc tin tƣởng máy khách (No authentication / Trusted client) - Xác thực dựa trên hệđiều hành
- Xác thực dựa trên hệ quản trịcơ sở dữ liệu
- Xác thực hỗn hợp (hệđiều hành hoặc hệ quản trịcơ sở dữ liệu).
Nhìn chung, khơng nên sử dụng các phƣơng pháp khơng xác thực, hoặc tin tưởng máy khách do chúng có độ rủi ro cao. Nên sử dụng phƣơng pháp xác thực dựa trên hệ điều hành do hệđiều hành có cơ chế quản lý thông tin ngƣời dùng tƣơng đối tốt và cơ chế xác thực mạnh.
128
6.1.1.2. Các phương pháp xác thực của một số DBMS
Trong mục này chúng ta xem xét các phƣơng pháp xác thực ngƣời dùng của 3 hệ quản trị phổ biến, bao gồm IBM DB2, Microsoft SQL Server và Oracle Server. IBM DB2 phiên bản DB2 UDB 8.2 là hệ quản trị cơ sở dữ liệu hỗ trợ nhiều phƣơng pháp xác thực nhất, bao gồm:
- SERVER_ENCYPT: Xác thực thực hiện trên máy chủ và máy khách phải cung cấp tên ngƣời dùng và mật khẩu;
- KERBEROS: Sử dụng giao thức KERBEROS để xác thực máy khách. KERBEROS cho phép một máy khách xác thực và trao đổi khóa với một máy chủ
dịch vụ nhờ sự hỗ trợ của máy chủ KERBEROS;
- KRB_SERVER_ENCRYPT: Cho phép lựa chọn phƣơng pháp xác thực sử dụng KERBEROS hoặc SERVER_ENCYPT;
- DATA_ENCRYPT: Tƣơng tự SERVER_ENCYPT, nhƣng dữ liệu trao đổi trong cả phiên làm việc đƣợc mã hóa;
- DATA_ENCRYPT_CMP: Xác thực tƣơng tự SERVER_ENCYPT và truyền thông trong phiên làm việc đƣợc mã hóa nếu máy khách hỗ trợ và khơng đƣợc mã hóa nếu máy khách khơng hỗ trợ;
- GSSPLUGIN: Phƣơng pháp xác thực mở rộng, cho phép sử dụng bất kỳ một