Механизмы внутренней защиты

Выполнив приведенные выше указания, можно считать, что СУБД достаточно защищена от внешнего нарушителя. Теперь представим ситуацию, что злоумышленник каким-то образом проник в СУБД, например, узнав пароль методами социальной инженерии, или злоумышленник является инсайдером и обладает некими минимальными правами в СУБД. В этом разделе мы рассмотрим вопросы защиты СУБД от внутреннего нарушителя.

Первичная настройка и установка критических обновлений

Первичная настройка

После установки СУБД необходимо настроить основной процесс СУБД на запуск от имени непривилегированного пользователя. Таким образом, у злоумышленника будет меньше шансов получить административный доступ в ОС, даже если он стал администратором в СУБД. В особенности это относится к ОС Windows, в которой основной процесс СУБД по умолчанию запускается с правами local system (рис. 11.3.1-1), а это даже более сильные права, чем администратора.

Запуск службы Oracle с системными правами в ОС Windows

Рис. 11.3.1-1. Запуск службы Oracle с системными правами в ОС Windows

В ОС Wmdows для запуска СУБД необходимо создать отдельную учетную запись с минимальными правами.

????II

Установка обновлений

При установке новой СУБД перед вводом е в эксплуатацию необходимо установить последние критические обновления. В СУБД Oracle обновления выходят с периодичностью 4 раза в год - каждый квартал. Появление новых обновлений можно отслеживать на официальном сайте СУБД по ссылке http://www.oracle.com/ technology /deploy/securitv/alerts.htm. Если вы подписаны на официальные обновления и у вас есть аккаунт на сайте metalink, то сами обновления и подробную информацию по ним можно найти здесь http://metalink.oracle.com.

Установка обновлений является очень важным, но отнюдь не единственным действием по защите СУБД. Как уже говорилось в главе про внутренние уязвимости, одних обновлений недостаточно, так как существует большое количество O-day уязвимостей, от которых не спасают обновления безопасности.

Безопасное назначение привилегий

Как уже отмечалось выше, существует множество привилегий и ролей, обладая которыми злоумышленник может реализовать различные атаки, в том числе и повысить свои привилегии до роли DBA Для того чтобы максимально обезопасить СУБД от внутренних нарушителей, необходимо пользоваться принципом наименьших привилегий при назначении опасных привилегий (см. главу 9) текущим и новым пользователям.

В СУБД Oracle 10g R2, к примеру, в роль RESOURCE входит только минимально необходимый набор привилегий. В отличие от более ранних версий, у роли RESOURCE отсутствует опасная привилегия CREATE VIEW (рис. 11.3.2-1).

Это позволяет уменьшить количество пользователей, которые потенциально могут реализовать уязвимость с представлениями.

Список привилегий, включенных в роль RESOURCE

Рис. 11.3.2-1. Список привилегий, включенных в роль RESOURCE

Кроме того, в СУБД Oracle версии ниже 10g R2 у роли CONNECT присутствует привилегия ALTER SESSION, что потенциально может привести к атаке Lateral SQL Injection. Если у вас версия СУБД ниже, чем 10g R2, то рекомендуется отозвать привилегию ALTER SESSION у роли CONNECT вручную:

REVOKE ALTER SESSION FROM CONNECT;

С учетом угроз, описанных в главе 9, опасными являются также следующие привилегии и роли:

EXECUTE ANY PROCEDURE

GRANT ANY [OBJECT] PRIVILEGE/ROLE

SELECT ANY DICTIONARY

SELECT ANY TABLE

INSERT/UPDATE/DELETE ANY TABLE

ALTER SYSTEM

ALTER USER

ALTER SESSION

ALTER PROFILE

ALTER ANY PROCEDURE

CREATE ANY PROCEDURE

CREATE LIBRARY

CREATE ANY/EXTERNAL JOB

CREATE ANY TRIGGER

CREATE ANY SYNONYM:

CREATE ANY DIRECTORY CREATE ANY VIEW ALTER ANY VIEW ALTER ANY TRIGGER AUDIT SYSTEM:

DROP USER

EXPORT FULL DATABASE / IMPORT FULL DATABASE:

Роли:

JAVASYSPRIV

SELECT_CATALOG_ROLE

EXECUTE_CATALOG_ROLE

К назначению вышеперечисленных привилегий и ролей необходимо относиться с особой осторожностью и назначать их только избранным пользователям. В особенности очень важно не назначать опасные привилегии роли PUBLIC, так как эти привилегии автоматически станут доступны любому пользователю в системе.

Отключение опасных процедур

Кроме опасных привилегий и ролей, которые можно назначить дополнительно, существует еще несколько опасных процедур, по умолчанию доступных на выполнение роли PUBLIC. Эти процедуры позволяют злоумышленнику совершать разнообразные действия, такие как:

  • ? атака на Листенер и получение доступа к ОС;
  • ? получение доступа к файловой системе ОС;
  • ? обход сетевых фильтров;
  • ? помощь в проведении атаки Blind SQL Injection;
  • ? реализация скрытых каналов утечки информации.

К таким процедурам относятся следующие:

  • ? UTL FILE. Процедуры из данного пакета позволяют получить доступ к файловой системе ОС. Что и как можно сделать, используя этот пакет процедур, подробно описано в главе 8. Настоятельно рекомендуется лишить роль PUBLIC привилегий на выполнение данной процедуры. Также никогда не устанавливайте значение константы UTL_FILE_DIR в значение *, так как это дает полный доступ к файловой системе ОС любому пользователю, имеющему доступ к процедурам UTL_FILE.
  • ? UTLHTTP. Процедуры из данного пакета позволяют совершать http-зап- росы, пользуясь средствами СУБД. При помощи этих процедур можно передавать данные по сети в обход сетевых фильтров к системам обнаружения вторжений.

Еще один путь использования пакета UTL_HTTP - это альтернативный способ получения информации в случае, если уязвимая процедура не возвращает результат выполнения. К примеру, злоумышленник обнаружил инъекцию в веб-приложении, которое связано с СУБД Oracle. И веб-приложение устроено таким образом, что информация об ошибке не выводится на экран (blind sql injection). В этом случае необходимую информацию злоумышленник может получить, внедрив UTLHTTP-запрос, отправляющий необходимую информацию на контролируемый им сервер.

? UTLSMTP. Пакет позволяет посылать smtp-запросы, используя процедуры СУБД.

Использование пакета аналогично с UTL HTTP - для передачи данных в обход сетевых фильтров и получения информации в случае Blind SQL- инъекции.

? UTL TCP. Аналогичен предыдущим, но позволяет конструировать любые ТСР-пакеты.

Может использоваться как UTL SMTP и UTL HTTP, а также для управления Листенером из консоли СУБД, что потенциально может привести к захвату управления сервером.

Привилегии на выполнение перечисленных выше пакетов рекомендуется отозвать у роли PUBLIC. Это можно сделать при помощи утилиты Enterprise Manager Console (рис. 11.3.2-2) или воспользовавшись следующими командами:

REVOKE EXECUTE ON "SYS"."UTL_FILE" FROM "PUBLIC";

REVOKE EXECUTE ON "SYS"."UTL_TCP" FROM "PUBLIC";

REVOKE EXECUTE ON "SYS"."UTL_HTTP" FROM "PUBLIC";

REVOKE EXECUTE ON "SYS"."UTL_SMTP" FROM "PUBLIC";

Рекомендуется также ограничивать доступ на выполнение пакетов с уязвимыми процедурами в случае, если критические обновления еще не вышли или есть проблемы с их установкой, а информация об уязвимости уже доступна. Большинство уязвимых процедур не часто используются в реальной жизни. Таким об-

Отзыв прав на выполнение опасных процедур у роли PUBLIC при помощи утилиты Enterprise Manager Console

Рис. 11.3.2-2. Отзыв прав на выполнение опасных процедур у роли PUBLIC при помощи утилиты Enterprise Manager Console

разом, ограничив к ним доступ хотя бы для роли PUBLIC, мы получим приемлемую защиту на то время, пока не выйдут официальные обновления.

Защита от доступа к системным таблицам

По умолчанию пользователи с привилегией SELECT ANY DICTIONARY/ TABLE могут получать данные из таблиц, хранящих критическую информацию, - таких как SYS.USERS. Для того чтобы это предотвратить, была создана опция Data Dictionary Protection, для задействования которой необходимо добавить следующую строку в конфигурационный файл initdb[SID].ora:

07_DICTI0NARY_ACCESSIBLE = FALSE,

после чего перезагрузить СУБД. В результате приведенных выше действий доступ к критичным таблицам будет возможен, только если у пользователя есть привилегия SELECT ANY DICTIONARY, а таких пользователей уже меньше.

В СУБД Oracle 1 lg опция Data Dictionary Protection включена по умолчанию.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >