close

Вход

Забыли?

вход по аккаунту

- Комплексная защита информации

код для вставкиСкачать
XIX научно-практическая конференция
«Комплексная защита информации»
Псков, 20-22 мая 2014 года
Теоретические и прикладные
проблемы обеспечения безопасности
программного обеспечения
А.И.Трубей
Анищенко В.В.
В.А.Дмитриев
зам. генерального директора ОИПИ НАН Беларуси
В.К. Фисенко
21 мая 2014 года
1
Введение. Перечень актуальных
теоретических и прикладных вопросов
безопасности программного обеспечения
•
•
•
•
Необходимо
удостовериться,
что
реализация
ПО
соответствует требованиям, качество – ожиданиям, и его
использование
не
создает
угрозы
для
системы
и
обрабатываемой в ней информации. В частности, что ПО
разработано таким образом, что будет обеспечено его
безопасное использование в его среде эксплуатации в
соответствии с целями качества, установленными в проекте.
К основным проблемам ПО можно отнести:
основные угрозы безопасности ПО;
методы и средства обеспечения безопасности ПО;
безопасность используемого системного ПО;
нормативно-правовая база для применения требований к
безопасности ПО.
2
2
Введение. Примеры наиболее известных
и критичных ошибок программного
обеспечения
•
•
•
22 июля 1962 г. Неудача при запуске первого американского спутника к Венере
«Mariner 1» произошла из-за ошибки в программе на языке Фортран – в
операторе цикла вместо запятой была поставлена точка:
правильный оператор DO 50 I = 12,525 оператор с ошибкой DO 50 I = 12.525.
Компилятор интерпретировал конструкцию как оператор присваивания. В
результате ракета отклонилась от курса и произошла авария.
5 декабря 2010 г. Три спутника, критически важные для завершения
составления группировки российской системы ГЛОНАСС упали в Тихий океан
вскоре после их запуска ракетой «Протон-М». Финансовые потери оцениваются
в 4 миллиарда рублей (138 миллионов долларов). Причиной аварии была
признана ошибка в программировании, которая привела к тому, что в ракету
залили неправильное количество топлива.
СК РБ возбуждено уголовное дело в отношении рабочего из города
Новополоцка, который на протяжении 9 месяцев (2013 – 2014 гг.) снимал со
своего карт-счета ошибочно начисленные денежные средства, общая сумма
которых составила более 170 тысяч долларов. В связи с произошедшим сбоем
в программном обеспечении на балансе карт-счета, принадлежащего
3
подозреваемому, списание денежных средств не отображалось.
3
Введение. Возможность получения
несанкционированного доступа к
информации и ресурсам
При использовании информационно-вычислительных
технологий в области геофизики и геологии также
неизбежно возникают предпосылки для утечки важной
информации о национальных недрах и стратегически
важных ресурсах. Поэтому при реализации программы
Союзного
государства
«СКИФ-НЕДРА»
необходимо
проводить исследования и разработку алгоритмов и
аппаратно-программных
решений
обеспечения
информационной безопасности геолого-геофизических
данных на базе суперкомпьютерных систем семейства
«СКИФ» на всех этапах жизненного цикла данных, включая
обеспечение безопасного удаленного доступа к данным,
удаленной работы с данными, уничтожения данных.
4
4
1. Основные угрозы безопасности
программного обеспечения
• По данным компании «Hewlett Packard» на сегодняшний день
можно выделить более 500 классов различных уязвимостей в
ПО Около 95 % всех дефектов программ, относящихся к
безопасности, проистекают из 19 типичных ошибок, природа
которых вполне понятна.
• По данным Software Engineering Institute опытный программист
«пропускает» приблизительно один дефект на 100 строк кода.
Если в течение жизненного цикла ПО 99% этих дефектов будут
обнаружены и исправлены, то в пакете программ, состоящем из
1 млн. строк исходного кода, останется 1 тыс. дефектов.
• Дистрибутив Red Hat Linux 7.1 состоит приблизительно из 30
миллионов строк кода, а Microsoft Windows XP содержит около
40 миллионов строк кода. Следовательно, число невыявленных
дефектов в Red Hat Linux и Windows XP можно оценить,
5
соответственно, в 30 и тысяч 40 тысяч.
1.1 Стоимость устранения уязвимостей на
различных этапах разработки ПО
,
№ п/п
Наименование этапа разработки
ПО
Стоимость
устранения
уязвимости, $
1
Разработка технического задания
139
2
Проектирование ПО
455
3
Разработка ПО (программирование)
977
4
Тестирование ПО
7 136
5
Сопровождение ПО
14 102
6
6
1.2 Основные классы уязвимостей
программного кода
• нарушение
предположений
использования
программных
функций (переполнение буфера,
некорректное применение
типов, некорректное разыменование указателей и т.д.);
• неправильная работа с системными ресурсами (ошибки работы с
динамической
памятью,
объектами
программного
взаимодействия и т.д.);
• ошибки кодирования алгоритма программы, которые могут
привести, например, к зацикливанию, потере точности или
некорректному результату на выходе программы;
• ошибки набора и редактирования текста (например, ошибки типа
«copy paste»);
• внедрение в программу отладочного кода или кода с
недекларированной функциональностью.
7
1.2 Основные классы уязвимостей
программного кода
В 2004 году организация «Открытый проект по безопасности
Web-приложений»(OWASP) опубликовала документ «Десять
самых критических уязвимостей Web-приложений»:
• отсутствие проверки входных данных;
• неправильное управление доступом;
• неправильная аутентификация;
• кроссайтовые сценарии;
• переполнение буфера;
• внедрение команд;
• неправильная обработка ошибок;
• небезопасное хранение;
• отказ от обслуживания;
8
• небезопасное управление конфигурацией.
2. Основные методы и средства
обеспечения безопасности ПО
Статический анализ – анализ исходного кода, производимый
без его реального выполнения. С его помощью можно
предотвратить ошибки до их внесения в состав основного
программного кода и гарантировать, что новый код
соответствует стандарту, будь то код собственной разработки
или код, полученный от стороннего разработчика.
Достоинства – отсутствие необходимости в астрономических
затратах времени на прогон программ при разных условиях
функционирования и возможность добиться большей степени
автоматизации проверок на наличие дефектов программ исходя
из их конструктивных признаков.
Недостатки – выявление ограниченного подмножества ошибок
(некорректности
кодирования,
«мертвый
код»,
ошибки
портирования), не касаясь явно вопросов безопасности систем.
9
2. Основные методы и средства
обеспечения безопасности ПО
Динамический анализ – проведение анализа уже скомпилированного
ПО и функционирующего в определенной среде. Позволяет выявлять
не только технологические, но и эксплуатационные уязвимости,
связанные с неправильной настройкой ПО.
Достоинства – низкий уровень ложных срабатываний, так как
обнаружение ошибки происходит в момент ее возникновения в
программе. Обнаруженная ошибка является не предсказанием,
сделанным на основе анализа исходного кода, а констатацией факта ее
возникновения. Кроме того, анализ в рабочей среде позволяет
получить наиболее релевантные результаты, учесть особенности
среды, влияющие на возможность проведения атаки.
Недостатки – эффективность динамического анализа напрямую
зависит от качества и количества входных данных для тестирования,
возможность его применения лишь на поздних этапах разработки, а
также необходимость самостоятельно определить фрагмент исходного
кода, соответствующий функции или процедуре, во время исполнения
10
которой возникла ошибка.
3. Безопасность используемого
системного ПО
Безопасность используемого системного ПО имеет тесную взаимосвязь
с ошибками программирования. Многие простейшие виды ошибок,
например, переполнение буфера, могут быть предотвращены при
использовании типизированных языков вместо традиционных, таких как
C и C++. Языки Java, Scheme и ML являются примерами языков, в
которых, по крайней мере, принципиально не может иметь место
переполнение буфера.
Существующие типизированные языки обладают рядом недостатков. К
ним относится высокая стоимость переписывания программ на новых
языках. Другие недостатки требуют для своего устранения новых
фундаментальных исследований в области языков системного
программирования. В основу языков системного программирования
следующего поколения предлагается положить применение так
называемых «утонченных» (refinement) типов данных, т.е. типов,
имеющих форму «{x : T | P (x)}», где T ― тип, а P (x) ― предикат над
11
значениями типа T.
4. Разработка нормативно-правовой базы
для применения требований к надежности
и безопасности ПО
Потребность в повышении надежности и безопасности ПО привела
к разработке СТБ ECSS-Q-HB-80-03A-2014 «Космическая техника.
Обеспечение качества продукции. Надежность и безопасность
программного обеспечения» и СТБ ECSS-Q-ST-80C-2014
«Космическая техника. Обеспечение качества продукции.
Гарантия качества программного обеспечения».
Стандарты разработаны в рамках Программы Союзного
государства «Стандартизация-СГ» на 2011-2014 годы в
соответствии с требованиями стандартов ECSS-Q-HB-80-03A,
ECSS-Q-ST-80C
на основании специального разрешения
Европейского космического агентства (ЕКА) от имени Организации
европейского сотрудничества по стандартизации в области
космической деятельности (ECSS), утверждены Постановлением
Госстандарта Республики Беларусь от 14.02.2014 г. № 7 и будут
введены в действие с 01.10.2014 г.
12
4. Разработка нормативно-правовой базы
для применения требований к надежности
и безопасности ПО
Основные методы и средства обеспечения надежности и
безопасности ПО, рассматриваемые в стандартах:
• анализ последствий и критичности отказов ПО, основной целью
является выявление возможных отказов, вызываемых ПО, посредством
анализа наиболее вероятных отказов компонента ПО, причин каждого
отказа и последствий каждого отказа;
• анализ дерева отказов ПО, основной целью является выявление
возможные недостатков в требованиях к ПО, а также в разработке или
реализации ПО, которые могут привести к нежелательным событиям на
следующем уровне интеграции ПО;
• анализ отказов ПО, обусловленных общей причиной, используется как
средство проверки того, что основная причина потенциальных отказов
не затрагивает или не обесценивает эффективность таких мер
обеспечения
устойчивости
к
отказам,
как
дублирование
(резервирование), а также в случае N-вариантного программирования.
13
4. Разработка нормативно-правовой базы
для применения требований к надежности
и безопасности ПО
•
•
•
•
•
•
•
•
•
Особое внимание уделяется мерам по обеспечению надежности и
безопасности критического программного обеспечения.
использование
разработок
ПО
или
методов,
успешно
зарекомендовавших себя в аналогичных разработках;
использование таких защитных методов программирования, как
верификация входных данных и проверки на непротиворечивость;
использование «безопасного подмножества» языка программирования;
использование
формального
языка
программирования
для
формального доказательства;
100%-ное покрытие ветвей кода на этапе модульного тестирования;
полный просмотр исходного кода;
удостоверенное или независимое тестирование;
сбор и анализ статистики отказов;
удаление деактивированного кода.
14
4. Разработка нормативно-правовой базы
для применения требований к надежности
и безопасности ПО.
Структура надежности и безопасности ПО
Входные данные
Анализ
безопасности
Анализ
надежности
Обратная связь
Рекомендации
Спецификация
требований к SW
системного уровня
Требования RAMS
Информация о критичных системных отказах
Тревожные события
Критические SW продукты
Системный уровень
Уровень программного
обеспечения
SW RAMS
анализ
Критические SW компоненты
Корректирующие действия
Определение
мероприятий по обращению
с критическим
программным обеспечением
Входные данные
Информация
HSIA
Спецификация
требований к
программному
обеспечению
Разработка
программного обеспечения
Верификация, тестирование
и валидация ПО
15
15
Выводы
При выборе нового ПО, помимо двух основных требований к
нему (функциональность и цена), все чаще возникает еще одно
требование — безопасность использования. И именно это
заставляет
производителей
ПО
уделять
требованиям
безопасности больше внимания.
Для создания действительно безопасного ПО необходимо
сократить
на
один-два
порядка
число
дефектов
в
спецификациях, ошибок при проектировании и реализации.
Разработка ПО должна начинаться с определения наилучших
методов
проектирования,
дополняться
хорошо
зарекомендовавшими
себя
техническими
подходами
и
подкрепляться
практикой,
способствующей
успешному
завершению процесса создания безопасного ПО, качество
которого подтверждается обязательными сертификационными
16
испытаниями.
Литература
•
•
•
•
•
•
1. Сердюк В. Практические аспекты выявления уязвимостей программного
обеспечения // Information Security/ Информационная безопасность. – 2013.
– № 3. – С. 36–38.
2. Ховард М., Лебланк Д., Виега Д. 19 смертных грехов, угрожающих
безопасности программ. Как не допустить типичных ошибок. – М.:
Издательский Дом ДМК-пресс, 2006. – 288 с.
3. Буланже А. Надежность и безопасность: открытый код против закрытого
// Открытые системы. СУБД. – 2006. – № 3. – С. 70–75.
4. Бегоев А.Н., Тарасюк М.В. Контроль безопасности программного кода в
составе объекта информатизации // Защита информации. INSIDE. – 2013. –
№ 5. – С. 63–67.
5. Марков А.С., Фадин А.А., Цирлов В.Л. Концептуальные основы
построения анализатора безопасности программного кода // Программные
продукты и системы – 2013. – № 1. – С. 47–52.
6. Котенко И.В., Саенко И.Б., Юсупов Р.М. Аналитический обзор докладов
Международной конференции «Математические модели, методы и
архитектуры для защиты компьютерных сетей» // Труды СПИИРАН. – 2010.
17
– № 2. – С. 199–225.
1/--страниц
Пожаловаться на содержимое документа