Как построить защищенную информационную систему. КнигаРефераты >> Программирование и компьютеры >> Как построить защищенную информационную систему. Книга
Существует большое число моделей жизненного цикла программных систем и подходов к процессу разноработки программного обеспечения. Для выделения категорий ИЗ можно построить простую абстрактную схему, описывающую широкий спектр технологий разработки ПО.
На самом верхнем уровне представления жизненного цикла систем можно выделить три фазы:
· фазу разработки, которая охватывает весь период создания первой рабочей версии системы;
· фазу сопровождения, в ходе которой происходит модификация, совершенствование, развитие системы и появление ее очередных версий;
· фазу эксплуатации, т. е. непосредственного функционального применения конкретной версии системы.
Хотя на практике фазы сопровождения и эксплуатации перекрываются во времени, им присущи различные особенности, которые позволяют выделить соответствующие категории ИЗ. Классификация ИЗ по этапу возникновения, основанная на этих положениях, приведена в таблице 3.2.
Рассмотрим подробнее перечисленные этапы с точки зрения возможности появления ошибок, приводящих к возникновению ИЗ.
3.3.2.1. Возникновение ИЗ в процессе разработки системы
Процесс разработки любой программной системы включает в себя несколько этапов. Прежде всего формулируются требования к системе, затем, исходя из этих требований, разрабатываются спецификации. На основании спецификаций создаются исходные тексты программ, которые затем компилируются и превращаются в исполняемый код. И на каждом из этих этапов в создаваемую систему могут быть внесены ошибки, которые приводят к возникновению ИЗ.
3.3.2.1.1. Составление требований и спецификаций
Требования к программному обеспечению описывают что должна делать программа. Спецификации определяют то, каким образом эти действия должны выполняться. Требования н спецификации взаимосвязаны настолько тесно, что относить обусловленные ими ИЗ к разным категориям представляется нецелесообразным.
Маловероятно, что требования или спецификации могут содержать положения, явно обусловливающие преднамеренные ошибки и каналы утечки информации. И требования, и спецификации достаточно открыты, поддаются пониманию и анализу, что позволяет относительно легко выявить и устранить ошибки типа наличия «черного хода» и им подобные.
Более реально появление ошибок, обусловленных необходимостью одновременного выполнения как требований безопасности, так и общих требований к функциональным возможностям системы. Конкуренция этих требований и неизбежно возникающие противоречия требуют от разработчиков принятия компромиссных решений, в которых предпочтение может быть отдано функциональности системы в ущерб ее безопасности. В качестве примера можно привести выполнение пользователем программ в режиме супервизора с целью увеличения быстродействия или разрешение на модификацию кода прямо во время выполнения программ для осуществления отладки.
Таблица 3 2 Классификация ИЗ по этапу возникновения
Количество примеров |
Индексы в Приложении IV | |||
Этап внедрения ошибки и возникновения ИЗ |
На стадии разработки |
Ошибки в требованиях и спецификациях |
22 |
I1, I2, I3, I4, I5, I6 |
Ошибки в исходных текстах программ |
15 |
MT1,MT4,MU1,MU2, MU5,MU7,MU8, DT1,U2,U3,U4 | ||
Ошибки в исполняемом коде |
1 |
Ul | ||
В ходе сопровождения |
3 |
D1,MU3,MU9 | ||
В ходе эксплуатации |
9 |
I8, PC1, PC2, PC3, PC4, MA1, MA2, CA1, AT1 |
3.3.2.1.2. Создание исходных текстов программ
Создание исходных текстов программ обеспечивает воплощение требований и спецификаций и является логическим продолжением соответствующих этапов. Большинство ошибок (но не все) в исходных текстах, как случайных, так и внесенных преднамеренно, может быть обнаружено при тщательном их изучении.
Наиболее распространены случайные ошибки в исходных текстах программ. Чаще всего они возникают в результате неадекватной реализации определенных в требованиях интерфейсов либо просто из-за ошибок программистов.
Преднамеренные ошибки могут быть внесены в систему по целому ряду причин. Программист может внедрить в систему код, не предусмотренный ее спецификациями, но необходимый ему для отладки и тестирования разрабатываемой программы. Однако, если по завершению разработки этот код не будет удален из системы, он превратится в реальный канал утечки информации и может быть использован злоумышленником. Самый известный пример такого рода — программа sendmail, позволившая широко распространиться сетевому вирусу Морриса (U10 в Приложении IV).
3.3.2.1.3. Генерация исполняемого кода
Исполняемый код генерируется компиляторами на основе исходных текстов программ. Поскольку компиляторы предназначены только для формального преобразования исходных текстов в исполняемый код, они автоматически переносят ошибки из первых во второй.
Однако, если ошибки содержатся в самом компиляторе, они могут использоваться злоумышленниками для получения в компилируемых программах нужных им фрагментов кода (U1 в Приложении IV).
3.3.2.2. Возникновение ИЗ в процессе сопровождения и развития системы
Случайные ошибки, внесенные в систему во время ее сопровождения, чаще всего обусловлены неправильным представлением программистами каких-либо аспектов функционирования системы в целом. Любые изменения, вносимые ими в систему, потенциально}) могут превратиться в каналы утечки информации.! Поэтому каждое вносимое в ПО изменение должно сопровождаться тщательной проверкой всей системы так, как если бы это было испытанием абсолютно новой системы.
3.3.2.3. Возникновение ИЗ в процессе функционирования системы
Возникновение ошибок и сбоев, утечка информации и другие подобные явления в процессе функционирования системы в большинстве случаев происходят по причине воздействия на нее специально написанных программ (РПС).
Хорошо известные случаи вирусных атак являются наиболее ярким обоснованием необходимости постоянного контроля и анализа состояния системы и исполняемых файлов [19]. Основной задачей такого анализа в процессе функционирования системы является выявление несанкционированной модификации каких-либо фрагментов исполняемого кода. Очевидно,. что целью РПС является не просто модификация кода, а нарушение функционирования системы и, возможно, доступ к конфиденциальной информации, перехват паролей, создание скрытых каналов утечки и т.д.