Наслідки безпеки відновлення резервної копії з невідомого джерела?


31

Сценарій : Вам передають резервну копію бази даних і пропонують відновити її на сервері (там уже розміщені інші бази даних), але не надається корисної інформації про те, що містить резервна копія, чи варто довіряти джерелу.

Запитання 1 : Які можливі наслідки відновлення резервної копії, яка може бути шкідливою?

Питання 2 : Що ви можете зробити, щоб захистити ваш сервер / дані в інших базах даних від впливу відновлення потенційно-шкідливої ​​резервної копії? RESTORE VERIFYONLYздавалося б, хорошим першим кроком. Кінцева відповідь - це, мабуть, «відновити базу даних у VM з пісочницею, не маючи доступу до зовнішнього світу», але припустимо, що цей варіант відсутній. Що ще слід зробити в цій ситуації?


1
Навіть якщо припустити, що відновлення є лише даними (немає збережених процедур або таких подібних), може трапитися багато шкідливості. Припустимо, резервна копія призначена для веб-програми, яка містить таблицю користувачів, з відповідними рівнями дозволів, шкідливе резервне копіювання може надати доступ користувачам, які їх не мають, і хто знає, що вони могли зробити з цього.
Лежати Райан

Дуже дивно, що ніхто не згадував потенційний ризик процедур чи функцій CLR. (за замовчуванням більше не вимкнено)
ALZDBA

Відповіді:


21

База даних може містити шкідливий код, можливо, процедуру, яка збирається змінити пароль для входу "sa" або видалити кожну базу даних. Однак єдиний спосіб я бачу, що викликає проблему, - це людина відновити базу даних, а потім виконати вручну будь-який код у цій базі даних. Він не виконується автоматизованим чином.

Немає параметрів, які можна застосувати в базі даних, щоб сервер SQL автоматично виконував деякий біт коду в базі даних після відновлення на сервері. Якби це було, я би сподівався, що Microsoft втратить сертифікацію спільних критеріїв для продукту. Це велика помилка, яка дозволила мені в СУБД.


Якщо Service Broker повторно ввімкнено як частина відновлення (використовуючи WITH ENABLE_BROKERet al), код може запускатися "автоматично". Очевидно, що реставратор не захоче використовувати жоден із цих варіантів, якщо безпека викликає побоювання, але потенційно він може бути похований у сторонній програмі постачальника, де користувач може його не бачити.
Джон Сейгель

Який код можна виконати через Service Broker? Я ніколи його не використовую і не налаштовую.
Шон Мелтон

Активація збережених процедур. technet.microsoft.com/en-us/library/…
Джон Сейгель

2
Можливо, також зробіть ПОНЯТТЯ НАРОДНО, щоб побачити, чи включена база даних. Якщо так, і на сервері включено обмеження, користувачі зможуть отримати доступ до нього, не надаючи їм доступ до сервера. Це, звичайно, для SQL 2012 чи новіших. якщо вмикання на сервері не ввімкнено, а база даних в резервній копії включена, відновлення не вдасться, тому в основному викликає занепокоєння, якщо воно включено на сервері.
Роберт Л Девіс

1
@JonSeigel Я не думаю, що вони будуть стріляти автоматично. ДРУКОВИЙ повинен поставити повідомлення в чергу, відправивши його в службу, тому повинна бути деяка взаємодія всередині цієї бази даних, щоб вставити запис або запустити процедуру чи щось. Черги брокерів не просто продовжують запускати процедури активації без будь-якої взаємодії, вони стежать за появою повідомлень у черзі.
JNK

11

Ви можете зробити кілька заходів щодо профілактики.

  1. Переконайтесь, що ніхто, окрім одного системного адміністратора, не має доступу до відновленої бази даних.
  2. Поверніть db в єдиний користувальницький режим після відновлення.
  3. Перевірте код у всіх збережених процедурах та функціях та тригерах всередині цієї бази даних.
  4. Виконайте dbcc checkdb, щоб переконатися, що немає проблем з цілісністю.
  5. Перевірте користувачів, які раніше мали доступ до бази даних та видаліть їх.
  6. Почніть дозволяти доступ, дуже обмежений певними перевіреними вами об'єктами.

Як сказав Шон, код не виконуватиметься сам, якщо якась збережена процедура, яка, здається, vbalid, має виконати ще один шкідливий код. Це причина перевірки коду всередині кожного з них, перш ніж перевести його в багатокористувацький режим.


10

Я доїжджаю сюди, але можу придумати хоча б один небезпечний сценарій: якщо ви відновите базу даних, яка має файл , ці файли тепер за замовчуванням знаходяться у вашій мережі (а саме на вашому SQL Server). Ви могли відновити вірус.

Це само по собі нічого не зробить, звичайно - вірус не раптом стає чутливим - але якщо ваші користувачі спробують отримати доступ до файлу, вони можуть бути заражені. (Гей, я сказав, що я досягаю.) Я розглядаю сценарій, коли зовнішній хакер хоче отримати зловмисне програмне забезпечення у двері, а потім він надсилає електронному письмові Бобу в бухгалтерію, кажучи: "Ось файл: \ sqlserver \ filetableshare \ myvirus.exe "- в цей момент він пройшов повз ваших брандмауерів без виявлення, і ми тепер перейшли до ваших внутрішніх антивірусних та анти-шкідливих програм.


2
Ви також можете висловити це як "база даних містить інструкції щодо персоналу, які потрібно прочитати та застосувати". Якщо вони дотримуються зловмисного способу, вони запускають ракети на Москву. Це була б звичайна таблиця varchar ina ... Дітто, якщо ви відновите двійкові файли та запропонуєте співробітникам запустити її, не перевіряючи походження, ви прийшли до неї.
Рем Русану

@RemusRusanu запустив ракети по Москві, ха-ха-ха, приємно!
Брент Озар

Любіть перспективу соціальної інженерії. Цільове повідомлення з файлом .bak, ймовірно, може бути дуже привабливим, залежно від цілі.
Макс Вернон

7

ВІДКЛЮЧЕННЯ ВЕРІФІОННО здавалося б хорошим першим кроком. Кінцева відповідь, ймовірно, "відновіть базу даних в VM з пісочницею, не маючи доступу до зовнішнього світу", але припустимо, що цей варіант не входить у таблицю. Що ще слід зробити в цій ситуації?

Відновити перевірити лише перевіряє цілісність бази даних, НЕ ВІДКАЄТЕ, чи включає в себе резервна копія шкідливий код чи ні, RESTORE VERIFYONLY не намагається перевірити структуру даних, що містяться в резервних томах. Вкрай малоймовірно, що якщо резервне копіювання зсередини фірми, де ви працюєте, може бути шкідливою, але якщо вона надходить від якоїсь третьої сторони, вам потрібно бути обережним, як вказував Шон.

Документація Microsoft Online говорить про це

• В цілях безпеки рекомендуємо не приєднувати та не відновлювати бази даних з невідомих або недовірених джерел. Такі бази даних можуть містити шкідливий код, який може виконувати ненавмисний код Transact-SQL або викликати помилки, змінюючи схему або фізичну структуру бази даних. Перш ніж використовувати базу даних з невідомого або недовіреного джерела, запустіть DBCC CHECKDB на базі даних на непродукційному сервері, а також вивчіть код, такий як збережені процедури або інший визначений користувачем код, у базі даних.


7

Питання зосереджується здебільшого на резервній копії, що містить зловмисне програмне забезпечення, але також можна отримати небажану та потенційно шкідливу поведінку від самої операції відновлення.

У минулому я випадково виявив, що можна зірвати SQL Server, намагаючись відновити пошкоджений файл резервної копії, який спричиняє спроб SQL Server прочитати минулий кінець файлу резервної копії та вийти з ладу. Я не впевнений, які версії сприйнятливі або саме те, що потрібно для відтворення проблеми. Я задокументував деякі обмежені деталі тут, коли я стикався з цією проблемою кілька років тому.


Влучне зауваження. Я не обов'язково мав на увазі "правильну резервну копію, яка містить зловмисне програмне забезпечення", аварія SQL-сервера за допомогою недійсної резервної копії - це також цілком відповідна відповідь на те, "що може піти не так?"
Саймон Рігхартс

5

Який ризик є відновлення невідомої бази даних з невідомого джерела? Немає.

Який ризик є в тому, щоб дозволити невідомому додатку підключитися за допомогою облікового запису sysadmin для підключення до цієї бази даних та запуску коду? ЛОТИ! Якщо обліковий запис програми має права лише в межах бази даних і немає доступу на рівні сервера, то нічого, що дійсно не може зробити поза межами бази даних. Це, в основному, зводиться до того, щоб на сервері встановити належну настройку системи безпеки.


2

Вам передають резервну копію бази даних і пропонують відновити її на сервері (там уже розміщені інші бази даних), але не надається корисної інформації про те, що містить резервна копія, чи варто довіряти джерелу.

Приємно. Ви вимагаєте підписаного письмового повідомлення від того, хто вам скаже, щоб це зробити, щоб вони несли повну відповідальність за наслідки. Якщо вони цього не хочуть, слід перевірити встановлення в пісочниці після вивчення файлу резервної копії (якщо це можливо) та ретельно вивчити всі таблиці, процедури тощо. Якщо в будь-який момент щось не пахне смішно, не ставте його виробнича система. Вже тоді ви повинні дати зрозуміти (своєму начальнику та його начальству), що ви ніколи не довіряли резервному копіюванню і робите це лише за прямими наказами.

Якщо вони не підписуватимуть таку заяву, попередити свого начальника, перш ніж щось робити. Як професіонал, ваш обов’язок максимально захищати вашу систему, незалежно від того, що може наказувати вам якийсь недотепний начальник. Вас можуть звільнити, але ви можете високо підняти голову і знати, що ви зробили правильно.


2

Тут немає багато небезпек, крім деяких далекосяжних, запропонованих тут. Як уже згадувалося, важко мати автоматичне виконання речей у самій резервній копії бази даних. Потрібен якийсь зовнішній механізм спрацювання.

Отримайте старий ноутбук / робочий стіл та оціночну версію програмного забезпечення Бази даних (SQLExpress), якщо проблема з ліцензуванням. Скопіюйте файл резервного копіювання на апарат, відключіть мережу / бездротовий зв'язок і виконайте відновлення. Потім починайте копати. Знайдіть весь час, який вам потрібен, тому що є багато місць, які речі можуть приховати, більшість із них уже охоплені іншими публікаціями в цій темі.

Ваша цілісність DBA та доброзичливість вашого виробничого середовища важливіші, ніж будь-яке замовлення, яке дав начальник.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.