Sử dụng WAF để lọc các yêu cầu HTTP nguy hiểm

Một phần của tài liệu Bài giảng An toàn ứng dụng web và cơ sở dữ liệu (Trang 121)

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 liu

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 mt khu yếu hoc 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.

Li 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 quyn 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.Lm dụng đặc quyn 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.Lm dụng đặc quyn giành quyn truy nhp tối đa vào hệđiều hành

Cho phép các tính năng khơng sử dng 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 vcho phép các tính năng khơng sử dng trong DBMS Qun lý cu hình li

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.Mt s ví d v cu hình DBMS có li Li tràn bđệm Li 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 quyn

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 quyn 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 quyn 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.

Tn công t chi dch 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 liu 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 hi ôn tp

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Ế BO MẬT CƠ SỞ D LIU

Chương 6 đề cập các cơ chế bo mật cơ sở d liu, bao gm xác thc & trao quyn

người dùng, bo mật các đối tượng trong cơ sở d liu, s dng mã hóa và mt s bin pháp bo mật cơ sở d liu khác. Trong phn tiếp theo, chương trình bày về mơ hình bo mt ca 3 h qun tr cơ sở d liu, bao gm Microsoft SQL Server, MySQL và Oracle. Phn cuối chương giới thiu vấn đề kim tra và đánh giá bảo mt h thống cơ sở d liu.

6.1.Xác thc và trao quyền trong cơ sở d liu

6.1.1. Xác thực và trao quyền trong cơ sở dữ liệu

6.1.1.1. Gii thiu

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 bo mt ng dng tng 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 thc, 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 ca mt 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

Một phần của tài liệu Bài giảng An toàn ứng dụng web và cơ sở dữ liệu (Trang 121)

Tải bản đầy đủ (PDF)

(161 trang)