Перечень типовых дефектов ПО.

 

Рассмотрим перечень типовых дефектов программного обеспечения.

1. Неполная проверка параметров и разброса переменных; нестрогий контроль границ их изменений.

2. Скрытое использование приоритетных данных.

3. Асинхронное изменение интервала между временем проверки и временем использования.

4. Неправильное преобразование в последовательную форму.

5. Неправильные идентификация, верификация, аутентификация и санкционирование задач.

6. Отказ предотвращения перехода за установленные в программе пределы доступа и полномочий.

7. Логические ошибки (например, больше логических выражений или результатов, чем операций перехода).

8. Незавершённые разработка и описание.

9. Недокументированные передачи управления.

10. Обход контроля или неправильные точки контроля.

11. Неправильное присвоение имен, использование псевдонимов.

12. Неполная инкапсуляция или неполное скрытие описания реализации объекта.

13. Подменяемые контрольные журналы.

14. Передача управления в середине процесса.

15. Скрытые и недокументированные вызовы из прикладных программ, команд ОС и аппаратных команд.

16. Не устранение остаточных данных или отсутствие их адекватной защиты.

17. Неправильное освобождение ресурсов.

18. Игнорирование отключения внешних приборов.

19. Неполное прерывание выполнения программ.

20. Использование параметров ОС в прикладном пространстве памяти.

21. Не удаление средств отладки до начала эксплуатации.

Формы проявления программных дефектов

(Вариант 1)

1. Выполнение арифметических операций и стандартных функций:

· деление на 0;

· переполнение разрядной сетки;

· отличие результатов арифметических операций от ожидаемых;

· обращение к стандартным функциям с недопустимыми значениями параметров.

2. Ошибки, связанные с затиранием команд и переменных.

3. Ошибки управления:

· зацикливание – бесконечное повторение одной и той же части программы;

· последовательность прохождения участков программы не соответствует ожидаемому;

· потеря управления, приводящая к ошибкам разного рода (обращение к запрещенной области памяти, попытка выполнить запрещенную программу или «не команду».

· 4. Ошибки ввода-вывода:

· «странный» вывод (на печать, на монитор и т.д.);

· сообщения об ошибках от системных программ ввода-вывода.

(Вариант 2)

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

· зацикливание, то есть последовательная повторяющаяся реализация определенной группы команд, не прекращающаяся без внешнего вмешательства;

· останов и прекращение решения функциональных задач;

· значительное искажение или потеря накопленной информации о текущем состоянии управляемого процесса;

· прекращение или значительное снижение темпа решения некоторых задач вследствие перегрузки ЭВМ по пропускной способности;

· искажение процессов взаимного прерывания подпрограмм, приводящее к блокировке возможности некоторых типов прерываний.

2. Ошибки, кратковременно, но значительно искажающие отдельные результаты, выдаваемые управляющим алгоритмом:

· пропуск подпрограмм или их существенных частей;

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

· обработка ложных или сильно искаженных сообщений.

3. Ошибки, мало и кратковременно влияющие на результаты, выдаваемые управляющим алгоритмом.

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


Лекция № 12

Базы данных (БД) как объект защиты. Серверы БД и системы управления базами данных (СУБД). Объекты защиты БД.

Средства защиты БД в различных СУБД несколько отличаются друг от друга. На основе анализа современных СУБД фирм Borland и Microsoft можно утверждать, что средства защиты БД условно делятся на две группы: основные и дополнительные.

К основным средствам защиты информации можно отнести следующие средства:

- парольной защиты;

- шифрования данных и программ;

- установления прав доступа к объектам БД;

- защиты полей и записей таблиц БД.

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

Шифрование данных (всей базы или отдельных таблиц) применяют для того, чтобы другие программы, «знающие формат БД этой СУБД»; не могли прочитать данные. Такое шифрование (применяемое в Microsoft Access), по-видимому, дает немного, поскольку расшифровать БД может любой с помощью «родной» СУБД. Если шифрация и дешифрация требуют задания пароля, то дешифрация становится возможной при верном вводе пароля.

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

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

По отношению к таблицам в общем случае могут предусматриваться следующие права доступа:

- просмотр (чтение) данных;

- изменение (редактирование) данных;

- добавление новых записей;

- добавление и удаление данных;

- все операции, в том числе изменение структуры таблицы.

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

Применительно к защите данных в полях таблиц можно выделить следующие уровни прав доступа:

- полный запрет доступа;

- только чтение;

- разрешение всех операций (просмотр, ввод новых значений, удаление и изменение).

По отношению к формам могут предусматриваться две основные операции: вызов для работы и разработка (вызов Конструктора). Запрет вызова Конструктора целесообразно делать для экранных форм готовых приложений, чтобы конечный пользователь случайно не испортил приложение. В самих экранных формах отдельные элементы могут быть тоже защищены. Например, некоторые поля исходной таблицы вообще могут отсутствовать или скрыты от пользователя, а некоторые поля - доступны для просмотра.

Отчеты во многом похожи на экранные формы, за исключением следующего. Во-первых, они не позволяют изменять данные в таблицах, а во-вторых, основное их назначение - вывод информации на печать. На отчеты, так же как и на экранные формы, может накладываться запрет на вызов средств их разработки.

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

 

К дополнительным средствам защиты БД можно отнести такие, которые нельзя прямо отнести к средствам защиты, но которые непосредственно влияют на безопасность данных. Их составляют следующие средства:

- встроенные средства контроля значений данных в соответствии с типами;

- повышения достоверности вводимых данных;

- обеспечения целостности связей таблиц;

- организации совместного использования объектов БД в сети.

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

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

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

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

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

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

Блокировки могут действовать на различные объекты БД и на отдельные элементы объектов. Очевидной ситуацией блокировки объектов БД является случай одновременного использования объекта и попытки входа в режим разработки этого же объекта. Применительно к таблицам баз данных дополнительные блокировки могут возникать при работе с отдельными записями или полями.

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


Лекция № 13

Классификация угроз безопасности операционной системы (ОС). Типовые атаки на ОС.

 

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

Защищенность операционной системы во многом характеризует защищенность всей компьютерной системы в целом. В связи с этим, защите ОС необходимо уделять много внимания на практике.

Классификация угроз безопасности ОС

Классификация угроз по цели:

· Несанкционированное чтение информации.

· Несанкционированное изменение информации.

· Несанкционированное уничтожение.

· Полное или частичное разрушение операционной системы, полное или частичное ее завешивание, завешивание программных модулей, физическое стирание с диска системных файлов (вирусы, DoS).

Классификация по принципу воздействия на ОС:

· Использование легальных каналов получения информации, например угроза несанкционированного чтения при некорректном определения профиля пользователя администратором.

· Использование скрытых каналов получения информации – использование недокументированных возможностей ОС (переполнение буфера – запуск некоторого программного кода).

· Создание новых каналов получения информации с помощью программных закладок.

По характеру воздействия на ОС:

· Активное воздействие – несанкционированное действия злоумышленника в системе (подбор пароля, украли базу паролей).

· Пассивное воздействие – несанкционированное наблюдение злоумышленника за процессами, происходящими в системе (сниффер).

По типу слабости защиты:

· Неадекватная политика безопасности, в том числе, ошибки администратора системы.

· Ошибки и недокументированные возможности программного обеспечения ОС: люки – случайные или преднамеренные служебные входы.

· Ранее внедренная программная закладка.

По способу воздействия на объект атаки:

· Непосредственное воздействие.

· Превышение пользователем своих полномочий.

· Работа от имени другого пользователя.

· Использование результатов работы другого пользователя (перехват информационных потоков).

По способу действий злоумышленника:

· В интерактивном режиме.

· В пакетном режиме (с помощью специально написанной программы, скрипта, которая действует самостоятельно, без участия злоумышленника).

По объекту атаки:

· ОС в целом.

· Объекты ОС (файлы, устройства, и т.д.).

· Субъекты ОС (пользователи, системные процессы, и т.д.).

· Каналы передачи данных.

По используемым средствам атаки:

· Штатные средства ОС, без использования дополнительного ПО.

· ПО третьих фирм (вирусы, вредоносные программы, отладчики, сетевые мониторы, сканеры).

· Специально разработанное ПО.

По состоянию атакуемого объекта на момент атаки: хранение, передача, обработка.