Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы данных. Лекции по курсу. В 4 частях. Ч.4. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
3. ПОЛИТИКА БЕЗОПАСНОСТИ
В целом под политикой безопасности понимается совокупность норм и правил, регламентирующих процесс обработки информации, вы­полнение которых обеспечивает защиту от определенного множества угроз и составляет необходимое (а иногда и достаточное) условие без­опасности системы.
Формальное выражение политики безопасности называют моделью безопасности. В целом защита базы данных – это комплекс мер обеспечению защищенности базы данных от любых угроз и опасностей с помощью различных компьютерных и некомпьютерных средств.
При построении системы защиты базы данных следует руководство- ваться аксиомой: полное устранение всех потенциальных угроз инфор-
мационной безопасности баз данных принципиально невозможно.
Реальная задача состоит в снижении вероятности реализации потен­циальных угроз до емлемость уровня угроз может определяться:
областью применения;
выделенным бюджетом;
положениями действующего законодательства.
При этом, как правило, не удается построить дерево угроз со строгой иерархией.
приемлемого для конкретной системы уровня. При-
по
3.1. ТРИ ЗАДАЧИ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ БАЗ ДАННЫХ
Обеспечение информационной безопасности баз данных во многом аналогично обеспечению информационной безопасности формационных системах и сводится к решению трех задач (см. рисунок):
11
в других ин-
обеспечение конфиденциальности: предоставлено пользовате- лям доступа только к тем данным, для которых пользователь имеет яв­ное или неявное разрешение на доступ;
обеспечение целостности: защита от преднамеренного или не­преднамеренного изменения информации или процессов ее обработки;
обеспечение доступности: возможность авторизованным в си- стеме пользователям доступа к информации
в соответствии с принятой
технологией (например, 24 часа в сутки, 7 дней в неделю).
Информационная безопасность баз данных
Обеспечение
конфиденциальности БД
Задачи информационной безопасности баз данных
Обеспечение целостности БДОбеспечение доступности
БД
Задача обеспечения конфиденциальности (первая задача) преду­сматривает комплекс мер по предотвращению несанкционированного доступа к конфиденциальной информации. Ниже перечислены угрозы конфиденциальности информации, специфичные для баз данных.
1. Инъекции SQL
Во многих приложениях используется динамический SQL, когда формирование SQL-предложений в программе выполняется путем кон­катенации строк и значений параметров. Зная структуру базы данных, злоумышленник может
либо выполнить хранимую программу в за­просе, либо закомментировать «легальные» фрагменты SQL-кода, внед­рив, например, конструкцию UNION, запрос которой возвращает кон­фиденциальные данные. В последнее время даже появились специаль­ные программы, автоматизирующие процесс реализации подобных угроз.
2. Логический вывод на основе функциональных зависимостей Пусть дана схема отношения R(A
, A2, … An). В ней могут иметь место
1
функциональные зависимости X Y. Вот пример функциональной
12
зависимости для схемы отношения (фамилия, имя, отчество, должность, зарплата): если должность = менеджер, то зарплата = 1200.
При наличии сведений о функциональных зависимостях злоумыш­ленник может вывести конфиденциальную информацию, имея доступ только к части отношений.
3. Логический вывод на основе ограничений целостности
Для кортежей отношений в реляционной модели данных могут быть заданы ограничения целостности –
логические условия, которым должны удовлетворять атрибуты кортежей (некоторый предикат). Вы­полняя многократные изменения данных и анализируя реакцию си­стемы, злоумышленник может получить те сведения, к которым у него отсутствует непосредственный доступ. К этому виду угроз конфиден­циальности относится также анализ значений первичных/внешних ключей.
4. Использование оператора UPDATE для получения конфиденциальной информации
В некоторых стандартах SQL-пользователь, не обладая привилегией на выполнение оператора SELECT, может выполнить оператор UPDATE со сколь угодно сложным логическим условием. Поскольку после вы­полнения оператора UPDATE сообщается, сколько строк он обработал, пользователь может узнать, существуют ли данные, удовлетворяющие этому условию.
Задача обеспечения целостности (вторая задача) предусматривает комплекс мер по предотвращению
непреднамеренного или преднаме­ренного изменения или уничтожения информации, используемой Ин­формационной системой. Это может быть следствием:
неблагоприятного стечения обстоятельств и состояния внешней
среды (стихийные бедствия, пожары и т. п.);
неадекватных действий пользователей: ошибок при вводе дан-
ных, ошибок операторов;
проблем, возникающих при многопользовательской обработке
данных.
Потенциальная опасность
может возникнуть и из-за того, что поль-
зователь, обладающий привилегиями на выполнение SQL-операторов
UPDATE, INSERT, DELETE, может модифицировать все записи
13
в таблице. Ограничить множество записей, доступных для модифика­ции, можно с помощью создания представлений с оператором CHECK, но это требует предварительного осмысливания существа задачи и со­ответствующего проектирования схемы.
Третья задача (обеспечение доступности) предусматривает систему мер по поддержке всем легитимным пользователям доступа к ресурсам системы в соответствии с принятым регламентом (например
, круглосу­точно). Причиной отказа в доступе (и это касается не только баз данных) может быть:
перегрузка системы, вызванная потоком «информационного шума» (спам, искусственно формируемый поток бессмысленных запро­сов);
перегрузка системы, вызванная объективными причинами (резкое увеличение потока запросов в связи с некоторыми событиями); напри­мер, после известных событий в
Нью-Йорке 11 сентября 2001 года все
новостные ресурсы были заблокированы огромным числом запросов;
действия, направленные на остановку критически важных процес- сов (например, компонент сервера баз данных, прослушивающий про­цесс).
Ниже перечислены угрозы доступности информации, специфичные для баз данных.
1. Использование свойств первичных и внешних ключей
Если используются натуральные, а не генерируемые
системой зна­чения первичных ключей, можно создать такую ситуацию, когда в таб­лицу невозможно будет вставить новые записи, поскольку там уже будут записи с такими же значениями первичных ключей. Если в базе данных поддерживается ссылочная целостность, можно организовать невозможность удаления родительских записей, умышленно создав подчиненные записи. Если внешний ключ не проиндексирован
, то при обновлении связанных записей, например в Oracle, возможна организа­ция взаимной блокировки (dead-lock), что приведет к сбою в транзак­ции.
2. Блокировка записей при изменении
Заблокировав записи или всю таблицу, злоумышленник может на
значительное время сделать ее недоступной для обновления.
14
3. Загрузка системы бессмысленной работой
Простейший пример – выполнение запроса, содержащего декартово произведение двух больших отношений. Мощность декартова произве­дения двух отношений мощности n
и n2 равна их произведению: n1*n2.
1
При вычислении запроса вида
select * from tab1, tab1 order by 1,
где мощность отношения tab1 равна 10 000, мощность результирую­щего отношения будет 10 000
2
= 100 000 000.
Вычисление соединения (особенно, если указать в виде подсказки оптимизатору способ соединения, требующий значительных затрат про­цессорного времени, например, сортировку слиянием и сортировку ре­зультирующего отношения) потребует значительных ресурсов системы.
3.2. УГРОЗЫ БЕЗОПАСНОСТИ БАЗ ДАННЫХ
Выделяют две группы угроз – внешние и внутренние.
Внешние дестабилизирующие источники, создающие угрозы функ- ционированию баз
данных и СУБД:
умышленные, деструктивные действия лиц с целью искажения, уничтожения или хищения программ, данных и документов системы, причиной которых являются нарушения информационной безопасности защищаемого объекта;
искажения в каналах передачи информации, поступающей от внешних источников, циркулирующих в системе, и передаваемой по­требителям;
сбои и отказы в аппаратуре
вычислительных средств;
вирусы и иные деструктивные программные элементы, распро- страняемые с использованием систем телекоммуникаций;
изменения состава и конфигурации комплекса взаимодействую- щей аппаратуры системы за пределы, проверенные при тестировании или сертификации системы.
Внутренние источники угроз баз данных и СУБД:
системные ошибки при постановке целей и задач проектирования автоматизированных информационных
систем и их компонентов, допу­щенные при формулировке требований к функциям и характеристикам средств обеспечения безопасности системы;
15
ошибки при определении условий и параметров функционирова- ния внешней среды, в которой предстоит использовать информацион­ную систему, и в частности программно-аппаратные средства защиты данных;
ошибки проектирования при разработке и реализации алгоритмов обеспечения безопасности аппаратуры, программных средств и баз дан­ных;
ошибки и несанкционированные действия пользователей, адми- нистративного
и обслуживающего персонала в процессе эксплуатации
системы;
недостаточная эффективность используемых методов и средств обеспечения информационной безопасности в штатных или особых условиях эксплуатации системы.
В настоящее время отсутствует общепринятая методология разра­ботки защищенных Информационных систем, можно определить лишь
Принципы построения защищенных систем баз данных:
экономическая оправданность механизма защиты – предписы­вает использование простейшего из всевозможных вариантов, обеспе­чивающих достижение желаемой цели;
принцип открытого проектирования – использование алгорит- мов, основанных на открытых стандартах, отказ от использования «сек­ретных» алгоритмов;
принцип распределения полномочий – для критически важных приложений использование многокомпонентных схем доступа (аналог двух ключей от банковского сейфа);
принцип минимально возможных привилегий
для пользователей
и администраторов – пользователь, успешно прошедший аутентифика­цию в Oracle, ничего не может делать до тех пор, пока для него не будет определен перечень полномочий (не может даже оператор Connect);
принцип управляемости – поскольку внештатные ситуации (ВС) неизбежны, должны быть предусмотрены процедуры, минимизирующие ущерб при ВС, разработаны документы, регламентирующие действия участников ВС, регулярное проведение инструктажей и тренингов;
принцип психологической приемлемости работы средств за- щиты – не должно быть чрезмерного усложнения средств защиты, при-
менение механизма защиты должно выполняться автоматически.
16
3.3. АТАКИ, СПЕЦИФИЧНЫЕ ДЛЯ БАЗ ДАННЫХ
3.3.1. ПОДБОР ПАРОЛЕЙ КАК МЕТОД РЕАЛИЗАЦИИ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА
Технология аутентификации с использованием паролей широко используется с давних времен. Естественно ожидать, что технология подбора паролей также находится на достаточно высоком уровне раз­вития. Ниже приведены некоторые методы подбора паролей пользова­телей.
1.  Тотальный перебор. В этом случае злоумышленник последова­тельно опробует все возможные варианты пароля. Для паролей длиннее шести символов
метод может быть признан неэффективным.
2.  Тотальный перебор, оптимизированный по статистике встре-
чаемости символов. Разные символы встречаются в паролях с разной вероятностью. Согласно исследованиям, статистика встречаемости сим­волов в алфавите паролей близка к статистике встречаемости символов в естественном языке. Для подбора паролей по этому методу написано множество программ, ориентированных на взлом
ОС и СУБД.
3.  Тотальный перебор, оптимизированный с помощью словарей.
В большинстве случаев пароли пользователей – слова английского или русского языка. Пользователю гораздо легче запомнить осмысленное слово, чем бессмысленную последовательность символов, поэтому пользователи предпочитают применять в качестве паролей осмыслен­ные слова. При этом количество возможных вариантов пароля резко со­кращается. Словарь
Ожегова содержит около 60 000 слов, объем сло-
варя среднестатистического пользователя заметно меньше.
Обычно данный метод используется в комбинации с предыдущим.
4.  Подбор пароля с использованием знаний о пользователе. Человек склонен использовать пароли, которые легко запоминаются: свое имя, фамилию, дату рождения, имена детей, любимых (в том числе принятые в узком кругу),
номера телефонов и автомобилей и пр. Некоторая кате­гория мужчин склонна использовать в качестве пароля ненормативную лексику, а определенная категория женщин часто использует уменьши­тельно-ласкательные имена домашних животных. В этом случае, если злоумышленник хорошо изучил пользователя, ему, как правило, доста­точно выполнить меньше сотни опробований.
17
3.3.2. НЕЦЕЛЕВОЕ РАСХОДОВАНИЕ
ВЫЧИСЛИТЕЛЬНЫХ РЕСУРСОВ СЕРВЕРА
Если пользователю предоставлена возможность создавать проце­дуры и их выполнять, то может возникнуть проблема нарушения до­ступности в связи с нецелевым расходованием ресурсов.
1. Нецелевое использование процессора
Ниже приведен простой пример – загрузка процессора бесконеч­ными бессмысленными) вычислениями.
SQL> connect u1/u1psw
Соединено.
SQL> CREATE OR REPLACE PROCEDURE greedy_c IS
2 i number;
3 BEGIN
4 LOOP
5 i := 1;
6 EXIT WHEN i > 2;
7 END LOOP;
8 END;
9 /
Процедура создана.
Ясно, что запуск процедуры приведет к «замиранию всего
живого»
в системе. Как с этим бороться? Эффект от подобной атаки может быть уменьшен назначением пользователю профиля, ограничивающего мак­симальное выделяемое время центрального процессора.
Пример выполнения администратором ограничения профиля поль­зователя по использованию времени центрального процессора для се­анса, делающего невозможным запуск процедуры greedy_c.
SQL> CREATE PROFILE beat_greedy LIMIT
2 PRIVATE_SGA 10K
3 CPU_PER_SESSION 3000;
Профиль создан.
18
SQL> ALTER USER u1 PROFILE beat_greedy;
Пользователь изменен.
SQL> connect u1/u1psw
Соединено.
SQL> exec greedy_c
BEGIN
greedy_c;
END;
*
ошибка в строке 1:
ORA-02392: превышен предел сеанса на использование CPU, вы в про-
цессе выхода из системы
2. Нецелевое расходование памяти сервера баз данных
Еще одним вариантом на заданную тему является процедура, наце­ленная на расходование памяти сервера баз данных.
Пример деструктивного использования механизма рекурсии для нецелевого расходования ресурса памяти сервера баз данных.
CREATE OR REPLACE PROCEDURE greedy_m IS
abc char (1000) := ‘аЬс’ ;
BEGIN
greedy m;
END;
/
Технология борьбы с последствиями запуска подобной процедуры та же: назначение пользователю профиля, ограничивающего макси­мально выделяемую память. Приведенный ниже пример иллюстрирует ситуацию, когда пользователь, запустивший «жадную» процедуру, при­нудительно выводится из системы.
SQL> exec greedy_m;
BEGIN greedy_m; END;
19
*
ошибка в строке 1:
ORA-04030: выход за пределы памяти процесса при попытке выделить
8204 байт.
Бороться с процедурами, расходующими ресурсы системы нецеле­вым образом, можно и принудительным завершением процессов-вреди­телей. Ниже приведен пример принудительного завершения выявлен­ного по идентификатору пользователя процесса.
SQL> select sid, serial# from v$session where username = ‘u1’;
SID SERIAL
-----------------------
149 104
SQL> alter system kill session ‘149,104';
Процесс завершен.
3. Нецелевое расходование внешней памяти
Ниже приведен пример пользовательской процедуры, осуществляю­щей деструктивную функцию нецелевого расходования внешней па­мяти с элементами маскировки. По завершении выполнения процедуры ресурсы внешней памяти будут освобождаться в целях маскировки дей­ствий по загрузке сервера нецелевыми операциями с дисковой памятью.
SQL> CREATE TABLE Tab1 (At1 raw(2000));
Таблица создана.
SQL> CREATE OR REPLACE PROCEDURE greedy_dm IS
2 AtX raw (2000);
3 BEGIN
4 for i in 1,,100000 loop
5 AtX := DBMS_CRYPTO.Randombytes(2000);
6 insert into Tab1 values(AtX);
7 end loop;
8 ROLLBACK;
20