SQL Injection là một hình thức tấn công trong đó truy vẫn SQL của ứng dụng đã bj chèn thêm các tham số đầu vào không an toàn do người dùng nhập vào, từ đó mã lệnh được gửi tới CSDL để ph
Trang 1Báo cáo môn học:
Trang 2Nội dung
Phần 1: Sự cần thiết của mã hóa cho cơ sở dữ liệu
Phần 2: Phương pháp tấn công SQL Injection
Phần 3: Biện pháp mã hóa, bảo vệ CSDL
Trang 3Phần 1: Sự cần thiết của mã hóa CSDL
1 Sự cần thiết.
- Chúng ta đều biết rằng việc mã hóa dữ liệu làm ảnh hưởng đến hiệu năng của hệ thống, vậy việc
mã hóa dữ liệu có thực sự cần thiết?
- Thực ra với những hệ thống mà dữ liệu ít tính nhạy cảm thì việc mã hóa là không thực sự cần thiết vì ảnh hưởng của nó tới hiệu năng của hệ thống Tuy nhiên, đối với những hệ thống quan trọng thì việc bảo mật lại là sự đảm bảo tốn ít đầu tư nhất, tránh để lại những hậu quả nặng nề (Ví dụ như các lĩnh vực về ANQP, hay giao dịch nhân hàng,….)
3
Trang 4Phần 1: Sự cần thiết của mã hóa CSDL (2)
2 Những khó khăn của bảo mật CSDL.
- Thông tin trong CSDL cần được sử dụng chung, vậy nên việc dùng khoá riêng cho từng người sử dụng là không thích hợp Bởi vậy bài toán đặt ra là: Lược đồ phân phối khoá như thế nào để có thể vừa đáp ứng được nhu cầu bí mật, vừa tạo điều kiện để dữ liệu có thể khai thác bởi nhiều người cùng một lúc? Khoá sẽ thay đổi theo từng bản ghi (record) hay là chung cho mọi bản ghi?
- Việc mã hoá phải đáp ứng được yêu cầu của bài toán khai thác dữ liệu, tức là đảm bảo thực hiện được các câu lệnh lọc dữ liệu (SELECT FROM WHERE ) Như vậy các tệp index, các trường khoá (key field) cần phải được xử lý rất đặc biệt
Trang 5Phần 1: Sự cần thiết của mã hóa CSDL (3)
3 Những khía cạnh có thể bảo mật.
- Hiện nay, phần lớn các cơ chế bảo mật được dành cho những người thiết kế ra hệ quản trị CSDL (tức là các hãng phần mềm lớn như Oracle, Microsoft, ) chứ không phải từ góc độ những người khai thác Cũng có thể các hãng sản xuất hệ quản trị CSDL có để ngỏ khả năng cho người sử dụng tích hợp mật mã vào, nhưng cách thức thực hiện như thế nào thì không được công bố rộng rãi Tuy vậy, cũng có thể giải quyết bài toán bảo mật CSDL bằng một số cách sau :
Mô hình xác thực bằng Cisco
Secure
5
Trang 6Phần 1: Sự cần thiết của mã hóa CSDL (4)
3 Những khía cạnh có thể bảo mật.
Mô hình sử dụng tầng kiểm soát Proxy
Trang 7Phần 1: Sự cần thiết của mã hóa CSDL (5)
e-7
Trang 8Phần 1: Sự cần thiết của mã hóa CSDL (6)
3 Những khía cạnh có thể bảo mật.
- Việc cập nhật và khai thác dữ liệu trong mạng LAN cũng cần thiết, nhưng cũng có thể thực hiện được nhờ các biện pháp nghiệp vụ Giải quyết vấn đề bảo mật trên đường truyền cần phải đặc biệt quan tâm đối với việc lặp dữ liệu (Replication) giữa các Server (mô hình phân tán) Việc giải quyết bài toán này phụ thuộc vào hệ quản trị CSDL và đòi hỏi chúng ta phải hiểu rõ cơ chế lặp dữ liệu của từng hệ CSDL Một giải pháp có thể thực hiện được với SQL Server nhưng lại không áp dụng được cho Oracle và ngược lại
Mô hình mã hóa dữ liệu trên đường
truyền
Trang 9Phần 2: Phương pháp tấn công SQL Injection
1 Khái niệm.
2 SQL Injection và vấn đề an ninh CSDL.
3 Các phương pháp tấn công chủ yếu
9
Trang 10Phần 2: Phương pháp tấn công SQL Injection
1 Khái niệm
- SQL Injection là một hình thức tấn công trong đó truy vẫn SQL của ứng dụng đã bj chèn thêm các tham số đầu vào không an toàn do người dùng nhập vào, từ đó mã lệnh được gửi tới CSDL để phân tích cú pháp và thực thi
- Khi ứng dụng web thất bại trong việc lọc các tham số đầu vào, ngay cả khi dùng hình thức tham số hóa thì kẻ tấn công có thể dễ dàng điều chỉnh quá trình xây dựng truy vấn SQL Một khi kẻ tấn công có thể sửa câu truy vấn SQL thì những truy vấn SQL anh ta muốn sẽ được thực thi với quyền của người sở hữu ứng dụng.
Trang 11Phần 2: Phương pháp tấn công SQL Injection
- SQL Injection là một dạng tấn công dễ thực hiện, hầu hết mọi thao tác người tấn công cần được thực hiện với một trình duyệt web, có thể kèm theo một ứng dụng proxy server Chính vì đơn giản như vậy cho nên bất cứ ai cũng có thể học cách tiến hành một cuộc tấn công, lỗi bắt nguồn từ mã nguồn của ứng dụng web chứ không phải phía CSDL, chính vì thế bất cứ thành phần nào của ứng dụng làm người dùng
có thể tương tác được để điều khiển nội dung (VD như các form, URL, cookie, ) đều có thể được sử dụng để tiến hành chèn truy vấn có hại.
11
Trang 12Phần 2: Phương pháp tấn công SQL Injection
2 SQL Injection và vấn đề an ninh CSDL.
- Nhận xét về lỗi SQL Injection:
- Là 1 trong những lỗi bảo mật phổ biến nhất
- Xác suất gặp phải lỗ hổng bảo mật loại này trong 1 trang web là khá cao
- Được sử dụng nhiều, lý do một phần bởi tính đơn giản, không đòi hỏi nhiều công cụ hỗ trợ
- Thời gian khắc phục các điểm yếu này thường khá lâu, do đó hậu quả thường nặng nề hơn
Trang 13Phần 2: Phương pháp tấn công SQL Injection
Trên thực tế, các cuộc tấn công SQL Injection thường nhắm đến các CSDL mang tính thương mại, VD các trang web thương mại điện tử Thông thường, các cuộc tấn công này sẽ tiến hành việc sửa đổi nội dung của CSDL đối tượng và chèn các loại mã JavaScript độc Bản chất điểm yếu SQL Injection là xuất hiện từ quá trình xử lý dữ liệu đầu vào của người dùng bên trong mã nguồn, do chính thời gian bảo trì mã nguồn thường kéo dài nên các lỗi SQL Inject ion thường chậm được khắc phục triệt để.
13
Trang 14Phần 2: Phương pháp tấn công SQL Injection
3 Các phương pháp tấn công phổ biến
- Tấn công khai thác dữ liệu thông qua toán tử UNION.
- Khai thác thông qua các câu lệnh điều khiển.
- Blind SQL Injection – Phương thức tấn công nâng cao
- Vấn đề qua mặt các bộ lọc tham số đầu vào.
- Một số phương pháp qua mặt bộ lọc của tường trang web
Trang 15Phần 3: Phương pháp bảo mật dữ liệu
1. Xây dựng tầng CSDL trung gian.
2. Sử dụng các cơ chế có sẵn trong CSDL.
3. Giới thiệu mã hóa dữ liệu trong SQL server.
4. Bảo mật truyền dữ liệu
15
Trang 16Phần 3: Phương pháp bảo mật dữ liệu
Trang 17Phần 3: Phương pháp bảo mật dữ liệu (2)
- Giải pháp đơn giản nhất bảo vệ dữ liệu trong CSDL ở mức độ tập tin, chống lại sự truy cập trái phép vào các tập tin CSDL là hình thức mã hóa Tuy nhiên, mã hóa dữ liệu ở mức độ này là giải pháp mang tính “được ăn cả, ngã về không”, giải pháp này không cung cấp mức độ bảo mật truy cập đến CSDL ở mức độ bảng (table), cột (column) và dòng (row) Một điểm yếu nữa của giải pháp này là bất cứ ai với quyền truy xuất CSDL đều có thể truy cập vào tất cả dữ liệu trong CSDL Điều này phát sinh một nguy cơ nghiêm trọng, cho phép các đối tượng với quyền quản trị (admin) truy cập tất cả các dữ liệu nhạy cảm Thêm vào đó, giải pháp này bị hạn chế vì không cho phép phân quyền khác nhau cho người sử dụng CSDL
17
Trang 18Phần 3: Phương pháp bảo mật dữ liệu (3)
- Giải pháp thứ hai: mã hóa ở mức ứng dụng
- Mã hóa dữ liệu trước khi truyền dữ liệu vào CSDL.
- Ứng dụng hỗ trợ quản lý khóa và quyền truy cập
- Truy vấn dữ liệu đến CSDL sẽ trả kết quả dữ liệu ở dạng mã hóa và dữ liệu này sẽ được giải mã bởi ứng dụng.
- Giải quyết: phân tách quyền an ninh và hỗ trợ các chính sách an ninh dựa trên vai trò (Role Based Access Control – RBAC)
- Cần sự thay đổi toàn diện kiến trúc của ứng dụng, đến mức viết lại ứng dụng Đây là một vấn đề đáng kể cho các công ty có nhiều ứng dụng chạy trên nhiều nền CSDL khác nhau
Trang 19Phần 3: Phương pháp bảo mật dữ liệu (4)
- Yêu cầu giải pháp bảo mật CSDL:
1 Hỗ trợ mã hóa tại các mức dữ liệu cấp bảng, cột, hàng
2 Hỗ trợ chính sách an ninh phân quyền truy cập đến mức dữ liệu cột, hỗ trợ RBAC
3 Cơ chế mã hóa không ảnh hưởng đến các ứng dụng hiện tại
19
Trang 20Phần 3: Phương pháp bảo mật dữ liệu (5)
1 Xây dựng tầng CSDL trung gian.
- Một CSDL trung gian (proxy) được xây
dựng giữa ứng dụng và CSDL gốc (Sơ đồ 1)
CSDL trung gian này mã hóa dữ liệu trước
khi cập nhật vào CSDL gốc, giải mã dữ liệu
trước khi cung cấp cho ứng dụng, cung cấp
thêm các chức năng quản lý khóa, xác thực
người dùng và cấp phép truy cập
Trang 21Phần 3: Phương pháp bảo mật dữ liệu (6)
1. Xây dựng tầng CSDL trung gian.
-. Giải pháp này cho phép tạo thêm nhiều chức năng về bảo mật cho CSDL Tuy nhiên, mô hình CSDL trung gian đòi hỏi xây dựng một ứng dụng CSDL tái tạo tất cả các chức năng của CSDL gốc
21
Trang 22Phần 3: Phương pháp bảo mật dữ liệu (7)
2 Sử dụng các cơ chế có sẵn trong CSDL.
- Mô hình này giải quyết các vấn đề mã hóa cột dựa trên các cơ chế sau:
- Các hàm Stored Procedure trong CSDL cho chức năng mã hóa và giải mã
- Sử dụng cơ chế View trong CSDL tạo các bảng ảo, thay thế các bảng thật đã được mã hóa.
- Cơ chế “instead of” trigger được sử dụng nhằm tự động hóa quá trình mã hóa từ View đến bảng gốc
Trang 23Phần 3: Phương pháp bảo mật dữ liệu (8)
- Dữ liệu trong các bảng gốc
sẽ được mã hóa, tên của
bảng gốc được thay đổi
Một bảng ảo (View) được
tạo ra mang tên của bảng
gốc, ứng dụng sẽ truy cập
đến bảng ảo này
23
Trang 24Phần 3: Phương pháp bảo mật dữ liệu (9)
- Các truy xuất dữ liệu đến bảng gốc sẽ được thay thế bằng truy xuất đến bảng ảo
- Bảng ảo được tạo ra để mô phỏng dữ liệu trong bảng gốc Khi thực thi lệnh “select”, dữ liệu sẽ được giải mã cho bảng ảo từ bảng gốc (đã được mã hóa) Khi thực thi lệnh “Insert, Update”,
“instead of” trigger sẽ được thi hành và mã hóa dữ liệu xuống bảng gốc
Trang 25Phần 3: Phương pháp bảo mật dữ liệu (10)
- Quản lý phân quyền truy cập đến các cột sẽ được quản lý ở các bảng ảo Ngoài các quyền cơ bản
do CSDL cung cấp, hai quyền truy cập mới được định nghĩa:
- Người sử dụng chỉ được quyền đọc dữ liệu ở dạng mã hóa (ciphertext) Quyền này phù hợp với những đối tượng cần quản lý CSDL mà không cần đọc nội dung dữ liệu.
- Người sử dụng được quyền đọc dữ liệu ở dạng giải mã (plaintext)
25
Trang 26Phần 3: Phương pháp bảo mật dữ liệu (11)
- Ưu điểm đơn giản, dễ phát triển
- Tuy nhiên, do các giới hạn về cơ chế view, trigger và cách thức quản trị dữ liệu, giải pháp này có những hạn chế sau:
- Những cột index không thể được mã hóa, do đó hạn chế các ứng dụng cần hỗ trợ index.
- Dữ liệu mã hóa có kích thước lớn so với dữ liệu gốc Sự chênh lệch này không đáng kể đối với các dữ liệu chữ (text), nhưng rất đáng kể đối với các dữ liệu số và dạng nhị phân Ví dụ, dữ liệu số 1 byte sẽ bị tăng lên 2 byte sau khi mã hóa.
- Tốc độ truy cập CSDL giảm do quá trình thực thi tầng mã hóa
Trang 27Phần 3: Phương pháp bảo mật dữ liệu (12)
3 Giới thiệu mã hóa dữ liệu trong SQL server.
3.1 Khả năng mã hóa
o Mã hóa dữ liệu trong suốt (Transparent Data Encryption - TDE)
• Sql server 2008,2012; phiên bản Enterprise.
• TDE cho phép chúng ta mã hóa toàn bộ một cơ sở dữ liệu.
• TDE là hoàn toàn trong suốt, không cần sửa đổi mã lệnh để thực hiện.
o Mã hóa mức cột (Column-level):
• Có từ sql server 2005 trong mọi phiên bản.
• Yêu cầu kiểu dữ liệu mã hóa là varbinary
• Dữ liệu có thể được mã hóa bằng cách sử dụng mật khẩu, khóa bất đối xứng, khóa đối xứng, hoặc
chứng chỉ.
27
Trang 28Phần 3: Phương pháp bảo mật dữ liệu (12)
3 Giới thiệu mã hóa dữ liệu trong SQL server.
3.1 Khả năng mã hóa
o Mã hóa và giải mã dữ liệu với NET Framework
• Có ở tất cả các phiên bản của SQL Server.
• Cần viết code ứng dụng để thực hiện mã hóa bằng cách gọi cách hàm mã hóa và giải mã trong NET Framework.
• Mã hóa đối xứng hoặc bất đối xứng.
o Mã hóa hệ thống tập tin (Encrypting File Systems - EFS)
• Giới thiệu trong Windows 2000.
• Windows Server hỗ trợ EFS để mã hóa dữ liệu vào file và cấp độ thư mục, mã hóa dựa vào smartcard.
• Tập tin cơ sở dữ liệu được mã hóa dưới danh tính của các tài khoản đang chạy SQL Server
Trang 29Phần 3: Phương pháp bảo mật dữ liệu (12)
3 Giới thiệu mã hóa dữ liệu trong SQL server.
3.2 Quản lý khóa
o SQL Server chia ra làm nhiều loại khóa
• Service Master Key - SMK(mã hóa thông tin nhạy cảm )
• Database Master Key – DMK (khóa đối xứng)
• Khóa bất đối xứng
• Khóa đối xứng
• Chứng chỉ số
29
Trang 30Phần 3: Phương pháp bảo mật dữ liệu (12)
3 Giới thiệu mã hóa dữ liệu trong SQL server.
3.2 Quản lý khóa
o Phân cấp khóa trong SQL Server 2012:
Trang 31Phần 3: Phương pháp bảo mật dữ liệu (12)
4 Bảo mật truyền dữ liệu
o Phân cấp khóa trong SQL Server 2012:
• Bảo mật hướng theo đường truyền (Link Oriented Security): Thông tin được mã hóa để bảo vệ dựa
trên đường truyền giữa hai nút và không quan tâm đến nguồn và đích của thông tin đó Các cặp thiết bị mật mã được đặt ở hai đầu của đường truyền
• Bảo mật dựa trên hai điểm đầu và cuối (End to End Security): Mã hóa đường truyền từ máy tính
nguồn đến máy tính đích Thông tin được mã hóa ngay khi mới được tạo ra tại máy nguồn và
chỉ được giải mã khi tới máy đích Phương pháp này làm cho dữ liệu người dùng an toàn nhưng không chống được tấn công phân tích tình huống, vì trong các gói tin chỉ phần dữ liệu người sử dụng được mã hóa còn các dữ liệu đầu gói (dữ liệu điều khiển) thì không
31