Ý nghĩa bảo mật của việc khôi phục bản sao lưu từ một nguồn không xác định?


31

Kịch bản : Bạn đã trao một bản sao lưu cơ sở dữ liệu và được yêu cầu khôi phục nó đến một máy chủ (đã lưu trữ các cơ sở dữ liệu khác), nhưng không được cung cấp thông tin hữu ích về những gì bản sao lưu chứa hoặc liệu nguồn đó có đáng tin cậy hay không.

Câu hỏi 1 : Ý nghĩa tiềm năng của việc khôi phục bản sao lưu có thể gây hại là gì?

Câu hỏi 2 : Bạn có thể làm gì để bảo vệ máy chủ / dữ liệu trong các cơ sở dữ liệu khác khỏi tác động của việc khôi phục bản sao lưu có khả năng gây độc? RESTORE VERIFYONLYdường như là một bước đầu tiên tốt Câu trả lời cuối cùng có lẽ là 'khôi phục cơ sở dữ liệu trong máy ảo sandbox không có quyền truy cập vào thế giới bên ngoài', nhưng hãy giả sử rằng tùy chọn đó không còn nữa. Những gì khác nên được thực hiện trong tình huống này?


1
Ngay cả khi giả định rằng khôi phục chỉ là dữ liệu (không có thủ tục được lưu trữ, hoặc một số như vậy), có rất nhiều ác ý có thể xảy ra. Giả sử bản sao lưu dành cho ứng dụng web chứa bảng người dùng, với mức cấp phép tương ứng, bản sao lưu độc hại có thể cấp quyền truy cập cho người dùng không nên có chúng và ai biết họ có thể làm gì từ đó.
Nói dối Ryan

Rất lạ không ai đề cập đến rủi ro tiềm tàng của các thủ tục hoặc chức năng CLR. (không còn bị tắt theo mặc định)
ALZDBA

Câu trả lời:


21

Cơ sở dữ liệu có thể chứa mã độc, có thể là quy trình sẽ thay đổi mật khẩu để đăng nhập "sa" hoặc xóa mọi cơ sở dữ liệu. Tuy nhiên, cách duy nhất mà tôi có thể thấy gây ra sự cố là cho một cá nhân khôi phục cơ sở dữ liệu và sau đó thực hiện thủ công bất kỳ mã nào trong cơ sở dữ liệu đó. Nó sẽ không thực hiện theo bất kỳ cách tự động.

Không có cài đặt nào có thể được áp dụng trong cơ sở dữ liệu để SQL Server tự động thực thi một số mã trong cơ sở dữ liệu khi khôi phục nó vào máy chủ. Nếu có, tôi hy vọng Microsoft sẽ mất chứng nhận Tiêu chí chung cho sản phẩm. Đó là một lỗi rất lớn đã cho phép trong một DBMS đối với tôi.


Nếu Nhà môi giới dịch vụ được bật lại như một phần của khôi phục (sử dụng WITH ENABLE_BROKERet al), thì mã có thể chạy "tự động". Rõ ràng người phục hồi sẽ không muốn sử dụng bất kỳ tùy chọn nào trong số đó nếu bảo mật là vấn đề đáng lo ngại, nhưng nó có khả năng bị chôn vùi trong ứng dụng của nhà cung cấp bên thứ 3 nơi người dùng có thể không nhìn thấy.
Jon Seigel

Loại mã nào có thể được thực thi thông qua Nhà môi giới dịch vụ? Tôi không bao giờ sử dụng nó hoặc thiết lập nó.
Shawn Melton


2
Cũng có thể làm một RESTORE TUYỆT VỜI để xem liệu cơ sở dữ liệu có được kích hoạt ngăn chặn hay không. Nếu vậy, và ngăn chặn được kích hoạt trên máy chủ, người dùng sẽ có thể truy cập nó mà không cần bạn cấp cho họ quyền truy cập máy chủ. Tất nhiên, đây là phiên bản SQL 2012 hoặc mới hơn. nếu ngăn chặn không được kích hoạt trên máy chủ và cơ sở dữ liệu trong bản sao lưu đã được bật, việc khôi phục sẽ thất bại, do đó, chủ yếu chỉ là vấn đề nếu nó được kích hoạt trên máy chủ.
Robert L Davis

1
@JonSeigel Tôi không nghĩ rằng những người đó sẽ tự động bắn. SOMETHING phải đặt một tin nhắn vào hàng đợi bằng cách gửi nó đến một dịch vụ, do đó phải có một số tương tác trong cơ sở dữ liệu đó để chèn một bản ghi hoặc thực hiện một thủ tục hoặc một cái gì đó. Hàng đợi của nhà môi giới không chỉ tiếp tục thực hiện quy trình kích hoạt mà không có bất kỳ tương tác nào, họ xem các tin nhắn để hiển thị trong hàng đợi.
JNK

11

Có một số bước phòng ngừa mà bạn có thể làm.

  1. Hãy chắc chắn rằng không ai ngoài một sysadmin có quyền truy cập vào cơ sở dữ liệu được khôi phục.
  2. Đặt db ở chế độ người dùng đơn sau khi quá trình khôi phục hoàn tất.
  3. Kiểm tra mã bên trong tất cả các thủ tục và chức năng được lưu trữ và kích hoạt bên trong cơ sở dữ liệu này.
  4. Thực hiện một dbdb checkdb để đảm bảo không có vấn đề toàn vẹn.
  5. Kiểm tra người dùng đã từng có quyền truy cập vào cơ sở dữ liệu và xóa tất cả họ.
  6. Bắt đầu cho phép truy cập, rất hạn chế đối với các đối tượng cụ thể do bạn kiểm tra.

Giống như Shawn đã nói, mã sẽ không tự thực thi trừ khi một số thủ tục được lưu trữ có vẻ như vbalid có một mã thực thi mã độc khác. Đây là lý do kiểm tra mã bên trong mỗi một trong số chúng trước khi đặt chế độ nhiều người dùng.


10

Tôi đang đến đây, nhưng tôi có thể nghĩ ra ít nhất một kịch bản nguy hiểm: nếu bạn khôi phục cơ sở dữ liệu có thể lưu được , các tệp đó hiện có trên mạng của bạn theo mặc định (và cụ thể là trên Máy chủ SQL của bạn). Bạn có thể khôi phục virus.

Điều đó tự nó sẽ không làm bất cứ điều gì, tất nhiên - virus không đột nhiên trở nên hữu dụng - nhưng nếu người dùng của bạn sau đó cố gắng truy cập tệp, họ có thể bị nhiễm. . myvirus.exe "- tại thời điểm đó, nó đã đi qua tường lửa của bạn mà không bị phát hiện và giờ chúng tôi đã chuyển sang các công cụ chống phần mềm chống vi-rút và chống phần mềm độc hại nội bộ của bạn.


2
Bạn cũng có thể diễn đạt điều này dưới dạng 'cơ sở dữ liệu chứa các hướng dẫn cách làm cho cá nhân của chúng tôi phải được đọc và áp dụng'. Nếu họ làm theo cách độc hại, họ sẽ phóng tên lửa vào Moscow. Đó sẽ là bảng varar ina thông thường ... Ditto nếu bạn khôi phục nhị phân và mời nhân viên chạy nó với xác nhận nguồn gốc, bạn đã có nó.
Remus Rusanu

@RemusRusanu phóng tên lửa vào Moscow, hahaha, thật tuyệt!
Brent Ozar

Yêu quan điểm kỹ thuật xã hội. Một email được nhắm mục tiêu với tệp .bak có thể rất hấp dẫn tùy thuộc vào mục tiêu.
Max Vernon

7

RESTORE XÁC MINH dường như là một bước đầu tiên tốt. Câu trả lời cuối cùng có lẽ là 'khôi phục cơ sở dữ liệu trong máy ảo sandbox không có quyền truy cập vào thế giới bên ngoài', nhưng hãy giả sử rằng tùy chọn đó không còn nữa. Những gì khác nên được thực hiện trong tình huống này?

Khôi phục xác minh tính toàn vẹn của cơ sở dữ liệu, SILL KHÔNG cho bạn biết liệu sao lưu có chứa mã độc hay không RESTORE XÁC MINH không cố gắng xác minh cấu trúc của dữ liệu có trong các khối sao lưu. Nó rất khác với việc nếu sao lưu đến từ bên trong công ty nơi bạn làm việc có thể độc hại nhưng nếu nó đến từ một bên thứ ba nào đó, bạn cần phải cẩn thận như Shawn đã chỉ.

Tài liệu Microsoft Online nói rằng

• Vì mục đích bảo mật, chúng tôi khuyên bạn không nên đính kèm hoặc khôi phục cơ sở dữ liệu từ các nguồn không xác định hoặc không đáng tin cậy. Các cơ sở dữ liệu như vậy có thể chứa mã độc hại có thể thực thi mã Transact-SQL ngoài ý muốn hoặc gây ra lỗi bằng cách sửa đổi lược đồ hoặc cấu trúc cơ sở dữ liệu vật lý. Trước khi bạn sử dụng cơ sở dữ liệu từ một nguồn không xác định hoặc không tin cậy, hãy chạy DBCC CHECKDB trên cơ sở dữ liệu trên máy chủ không sản xuất và cũng kiểm tra mã, như các thủ tục được lưu trữ hoặc mã do người dùng xác định khác, trong cơ sở dữ liệu.


7

Câu hỏi tập trung chủ yếu vào một bản sao lưu có chứa phần mềm độc hại, nhưng cũng có thể có hành vi không mong muốn và có khả năng gây hại từ chính hoạt động khôi phục.

Trước đây tôi đã vô tình phát hiện ra rằng có thể làm sập SQL Server bằng cách khôi phục tệp sao lưu bị hỏng khiến SQL Server cố đọc qua phần cuối của tệp sao lưu và gặp sự cố. Tôi không chắc chắn phiên bản nào dễ bị ảnh hưởng hoặc chính xác những gì được yêu cầu để tái tạo vấn đề. Tôi đã ghi lại một số chi tiết hạn chế ở đây khi tôi gặp phải vấn đề này vài năm trước.


Điểm tốt. Tôi không nhất thiết phải tập trung vào "sao lưu hợp lệ có chứa phần mềm độc hại", đánh sập máy chủ SQL bằng cách sao lưu không hợp lệ cũng là một câu trả lời hoàn toàn phù hợp với "điều gì có thể sai?"
Simon Righarts

5

Rủi ro gì khi khôi phục cơ sở dữ liệu chưa biết từ một nguồn không xác định? Không ai.

Rủi ro gì khi để một ứng dụng không xác định kết nối bằng tài khoản sysadmin để kết nối với cơ sở dữ liệu đó và bắt đầu chạy mã? RẤT NHIỀU! Nếu tài khoản ứng dụng chỉ có quyền trong cơ sở dữ liệu và không có quyền truy cập cấp máy chủ thì không có gì thực sự có thể làm được ngoài cơ sở dữ liệu. Điều này về cơ bản bắt nguồn từ việc thiết lập khung bảo mật thích hợp trên máy chủ để bắt đầu.


2

Bạn đã trao một bản sao lưu cơ sở dữ liệu và được yêu cầu khôi phục nó đến một máy chủ (đã lưu trữ các cơ sở dữ liệu khác), nhưng không được cung cấp thông tin hữu ích nào về những gì bản sao lưu chứa hoặc liệu nguồn đó có đáng tin cậy hay không.

Tốt đẹp. Bạn yêu cầu một tuyên bố bằng văn bản có chữ ký từ bất cứ ai đang bảo bạn làm điều này mà họ chấp nhận chịu trách nhiệm hoàn toàn về hậu quả. Nếu họ không muốn làm điều đó, bạn nên kiểm tra cài đặt trong hộp cát sau khi kiểm tra tệp sao lưu (nếu có thể) và kiểm tra kỹ tất cả các bảng, quy trình, v.v. Nếu bất cứ điều gì có mùi buồn cười tại bất kỳ thời điểm nào, đừng đặt nó vào hệ thống sản xuất. Thậm chí sau đó, bạn nên nói rõ với sếp và cấp trên của mình rằng bạn không bao giờ tin tưởng vào bản sao lưu và chỉ thực hiện việc này theo đơn đặt hàng trực tiếp.

Nếu họ sẽ không ký một tuyên bố như vậy, hãy báo cho (các) cấp trên của họ trước khi làm bất cứ điều gì. Là một chuyên gia, nhiệm vụ của bạn là bảo vệ hệ thống của bạn càng nhiều càng tốt, bất kể điều gì mà một cấp trên lờ mờ có thể yêu cầu bạn làm. Bạn có thể bị đuổi việc, nhưng bạn có thể ngẩng cao đầu và biết mình đã làm đúng.


2

Không có nhiều nguy hiểm cho mỗi lần nói, ngoại trừ một số nguy hiểm sâu rộng được đề xuất ở đây. Như đã đề cập, thật khó để có công cụ tự động thực thi trong bản sao lưu cơ sở dữ liệu. Nó cần một số loại cơ chế kích hoạt bên ngoài.

Nhận một máy tính xách tay / máy tính để bàn cũ và một phiên bản đánh giá của phần mềm Cơ sở dữ liệu của bạn (SQLE Express) nếu cấp phép là một vấn đề. Sao chép tệp sao lưu trên máy, rút ​​phích cắm mạng / không dây và thực hiện khôi phục. Sau đó bắt đầu đào. Dành tất cả thời gian bạn cần, bởi vì có nhiều nơi công cụ có thể ẩn, hầu hết trong số chúng đã được bao phủ bởi các bài viết khác trong chủ đề này.

Tính toàn vẹn DBA của bạn và sự phù hợp với môi trường Sản xuất của bạn quan trọng hơn bất kỳ đơn đặt hàng nào được đưa ra bởi cấp trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.