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