Для
контрольной сборки, помимо собственно
исходных файлов, желательно иметь и среду
сборки (т.е. все компиляторы и компоновщики,
которые использовал разработчик – иначе,
при полностью самостоятельной сборке
в лаборатории, расхождения по контрольным
суммам почти гарантированно (т.е. собранные
модули будут отличаться от модулей зафиксированного
ПО). Наилучший вариант – когда контрольная
сборка производится либо на стенде разработчика
(один или несколько компьютеров необходимых
для cборки ПО, предоставляемые разработчиком
и полностью готовые к сборке ПО), либо
непосредственно у разработчика.
Последовательность
действий при выполнении трансляции
исходных текстов, версия транслятора,
а также исходные данные (директивы)
для транслятора должны соответствовать
приведённым в сопроводительной документации.
Автоматизация
здесь подразумевается на уровне
командных
файлов для сборки или автоматизации,
предусмотренной в самих средствах
сборки.
3.2.4.
Отчётность
По
окончании испытаний оформляется
отчёт (протокол), содержащий результаты:
- контроля
исходного состояния программного обеспечения;
- контроля
полноты и отсутствия избыточности исходных
текстов контролируемого программного
обеспечения на уровне файлов;
- контроля
соответствия исходных текстов программного
обеспечения его объектному (загрузочному)
коду.
3.3.
Требования к третьему уровню
контроля
3.3.1.
Контроль состава и содержания
документации
Требования
полностью включают в себя аналогичные
требования к четвертому уровню контроля.
Кроме
того, должна быть представлена «Пояснительная
записка» (ГОСТ 19.404-79), содержащая основные
сведения о назначении компонентов, входящих
в состав программного обеспечения, параметрах
обрабатываемых наборов данных (подсхемах
баз данных), формируемых кодах возврата,
описание используемых переменных, алгоритмов
функционирования и т.п.
3.3.2.
Контроль исходного состояния
программного обеспечения
Требования
полностью включают в себя аналогичные
требования к четвёртому уровню контроля.
3.3.3.
Статический анализ исходных
текстов программ
Кроме
аналогичных требований, предъявляемых
к четвёртому уровню контроля, дополнительно
предъявляются следующие требования:
- контроль
полноты и отсутствия избыточности исходных
текстов ПО на уровне функциональных объектов
(процедур);
- контроль
связей функциональных объектов (модулей,
процедур, функций) по управлению;
- контроль
связей функциональных объектов (модулей,
процедур, функций) по информации;
- контроль
информационных объектов различных типов
(например, локальных переменных, глобальных
переменных, внешних переменных и т.п.);
- формирование
перечня маршрутов выполнения функциональных
объектов (процедур, функций).
Лекция
№ 13
Перечень
типовых дефектов
программного обеспечения
Рассмотрим перечень
типовых дефектов программного обеспечения.
- Неполная
проверка параметров и разброса переменных;
нестрогий контроль границ их изменений.
- Скрытое использование
приоритетных данных.
- Асинхронное
изменение интервала между временем проверки
и временем использования.
- Неправильное
преобразование в последовательную форму.
- Неправильные
идентификация, верификация, аутентификация
и санкционирование задач.
- Отказ предотвращения
перехода за установленные в программе
пределы доступа и полномочий.
- Логические
ошибки (например, больше логических выражений
или результатов, чем операций перехода).
- Незавершённые
разработка и описание.
- Недокументированные
передачи управления.
- Обход контроля
или неправильные точки контроля.
- Неправильное
присвоение имен, использование псевдонимов.
- Неполная
инкапсуляция или неполное скрытие описания
реализации объекта.
- Подменяемые
контрольные журналы.
- Передача
управления в середине процесса.
- Скрытые
и недокументированные вызовы из прикладных
программ, команд ОС и аппаратных команд.
- Не устранение
остаточных данных или отсутствие их адекватной
защиты.
- Неправильное
освобождение ресурсов.
- Игнорирование
отключения внешних приборов.
- Неполное
прерывание выполнения программ.
- Использование
параметров ОС в прикладном пространстве
памяти.
- Не удаление
средств отладки до начала эксплуатации.
Формы
проявления программных
дефектов
(Вариант
1)
1. Выполнение
арифметических операций и стандартных
функций:
- деление на
0;
- переполнение
разрядной сетки;
- отличие результатов
арифметических операций от ожидаемых;
- обращение
к стандартным функциям с недопустимыми
значениями параметров.
2. Ошибки, связанные
с затиранием команд и переменных.
3. Ошибки управления:
- зацикливание
– бесконечное повторение одной и той
же части программы;
- последовательность
прохождения участков программы не соответствует
ожидаемому;
- потеря управления,
приводящая к ошибкам разного рода (обращение
к запрещенной области памяти, попытка
выполнить запрещенную программу или
«не команду».
- 4. Ошибки
ввода-вывода:
- «странный»
вывод (на печать, на монитор и т.д.);
- сообщения
об ошибках от системных программ ввода-вывода.
(Вариант
2)
1. Ошибки, приводящие
к прекращению выполнения основных
или части функций управляющей
системы на длительное и или
неопределенное время:
- зацикливание,
то есть последовательная повторяющаяся
реализация определенной группы команд,
не прекращающаяся без внешнего вмешательства;
- останов и
прекращение решения функциональных задач;
- значительное
искажение или потеря накопленной информации
о текущем состоянии управляемого процесса;
- прекращение
или значительное снижение темпа решения
некоторых задач вследствие перегрузки
ЭВМ по пропускной способности;
- искажение
процессов взаимного прерывания подпрограмм,
приводящее к блокировке возможности
некоторых типов прерываний.
2. Ошибки, кратковременно,
но значительно искажающие отдельные
результаты, выдаваемые управляющим алгоритмом:
- пропуск подпрограмм
или их существенных частей;
- выход на
подпрограммы или их части, резко искажающиеся
результаты;
- обработка
ложных или сильно искаженных сообщений.
3. Ошибки, мало и
кратковременно влияющие на результаты,
выдаваемые управляющим алгоритмом.
Этот
тип ошибок характерен, в основном,
для квазинепрерывных величин, в которых
возможны небольшие отклонения результатов
за счёт ошибок. Эти ошибки в среднем мало
искажают общие результаты, однако отдельные
выбросы могут сильно влиять на процесс
управления и требуется достаточно эффективная
защита от таких редких значительных выбросов.
Лекция
№ 14
Следует
отметить, что круг вопросов, связанных
с защитой информацией в операционных
системах, является более широким, чем
вопросы защиты, рассматриваемые ранее.
Здесь появляются дополнительные возможности
атак, дополнительные уязвимости и т.д.
Здесь, например, необходимо защищать
приложение от воздействия от него другого
приложения, что может привести к краху
системы.
Защищенность
операционной системы во многом характеризует
защищенность всей компьютерной системы
в целом. В связи с этим, защите
ОС необходимо уделять много внимания
на практике.
Классификация
угроз безопасности
ОС
Классификация
угроз по цели:
- Несанкционированное
чтение информации.
- Несанкционированное
изменение информации.
- Несанкционированное
уничтожение.
- Полное или
частичное разрушение операционной системы,
полное или частичное ее завешивание,
завешивание программных модулей, физическое
стирание с диска системных файлов (вирусы,
DoS).
Классификация
по принципу воздействия
на ОС:
- Использование
легальных каналов получения информации,
например угроза несанкционированного
чтения при некорректном определения
профиля пользователя администратором.
- Использование
скрытых каналов получения информации
– использование недокументированных
возможностей ОС (переполнение буфера
– запуск некоторого программного кода).
- Создание
новых каналов получения информации с
помощью программных закладок.
По
характеру воздействия
на ОС:
- Активное
воздействие – несанкционированное действия
злоумышленника в системе (подбор пароля,
украли базу паролей).
- Пассивное
воздействие – несанкционированное наблюдение
злоумышленника за процессами, происходящими
в системе (сниффер).
По
типу слабости защиты:
- Неадекватная
политика безопасности, в том числе, ошибки
администратора системы.
- Ошибки и
недокументированные возможности программного
обеспечения ОС: люки – случайные или
преднамеренные служебные входы.
- Ранее внедренная
программная закладка.
По
способу воздействия
на объект атаки:
- Непосредственное
воздействие.
- Превышение
пользователем своих полномочий.
- Работа от
имени другого пользователя.
- Использование
результатов работы другого пользователя
(перехват информационных потоков).
По
способу действий
злоумышленника:
- В интерактивном
режиме.
- В пакетном
режиме (с помощью специально написанной
программы, скрипта, которая действует
самостоятельно, без участия злоумышленника).
По
объекту атаки:
- ОС в целом.
- Объекты ОС
(файлы, устройства, и т.д.).
- Субъекты
ОС (пользователи, системные процессы,
и т.д.).
- Каналы передачи
данных.
По
используемым средствам
атаки:
- Штатные средства
ОС, без использования дополнительного
ПО.
- ПО третьих
фирм (вирусы, вредоносные программы, отладчики,
сетевые мониторы, сканеры).
- Специально
разработанное ПО.
По
состоянию атакуемого
объекта на момент
атаки: хранение, передача, обработка.
Типичные
атаки на ОС
1. Сканирование файловой
системы
2.
Кража ключевой
информации.
Простейший
случай – подсматривание паролей, набираемых
пользователем.
3.
Подбор пароля.
4.
Сборка мусора. В данном случае восстанавливается
информация, которая помечена как удаленная,
но реально не удаленная с диска или из
памяти.
Например,
если в памяти обрабатывался конфиденциальный
документ, то после закрытия текстового
редактора, можно просканировать память
и выделить его.