Угрозы безопасности программного обеспечения

Обеспечение безопасности автоматизированных информационных систем зависит от безопасности используемого в них программного обеспечения и, в частности, следующих видов программ:

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

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

Чем выше уровень подготовки программиста, тем более неявными (даже для него) становятся допускаемые им ошибки и тем более тщательно и надежно он способен скрыть умышленные механизмы, разработанные для нарушения безопасности системы.

Целью атаки могут быть и сами программы по следующим причинам:

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

Рассмотрим несколько типов программ и приемы, которые наиболее часто используются для атак программ и данных. Эти приемы обозначаются единым термином — «программные ловушки». К ним относятся «программные люки», «троянские кони», «логические бомбы», атаки «салями», скрытые каналы, отказы в обслуживании и компьютерные вирусы.

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

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

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

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

Таким образом, люк (или люки) может присутствовать в программе ввиду того, что программист:

  • забыл удалить его;
  • умышленно оставил его в программе для обеспечения тестирования или выполнения оставшейся части отладки;
  • умышленно оставил его в программе в интересах облегчения окончательной сборки конечного программного продукта;
  • умышленно оставил его в программе с тем, чтобы иметь скрытое средство доступа к программе уже после того, как она вошла в состав конечного продукта.

Люк — первый шаг к атаке системы, возможность проникнуть в компьютерную систему в обход механизмов защиты.

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

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

Атака «салями». Атака «салями» превратилась в настоящий бич банковских компьютерных систем. В банковских системах ежедневно производятся тысячи операций, связанных с безналичными расчетами, переводами сумм, отчислениями и т. д.

При обработке счетов используются целые единицы (рубли, центы), а при исчислении процентов нередко получаются дробные суммы. Обычно величины, превышающие половину рубля (цента), округляются до целого рубля (цента), а величины менее половины рубля (цента) просто отбрасываются. При атаке «салями» эти несущественные величины не удаляются, а постепенно накапливаются на некоем специальном счете.

Как свидетельствует практика, сумма, составленная буквально из ничего, за пару лет эксплуатации «хитрой» программы в среднем по размеру банке может исчисляться тысячами долларов. Атаки «салями» достаточно трудно распознаются, если злоумышленник не начинает накапливать на одном счете большие суммы.

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

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

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

Отказ в обслуживании. Большинство методов нарушения безопасности направлено на то, чтобы получить доступ к данным, не допускаемый системой в нормальных условиях. Однако не менее интересным для захватчиков является доступ к управлению самой компьютерной системой или изменение ее качественных характеристик, например, получить некоторый ресурс (процессор, устройство ввода-вывода) в монопольное использование или спровоцировать ситуацию клинча для нескольких процессов.]

 

Различают пассивные и активные угрозы.

Пассивные угрозы (нарушение конфиденциальности данных, циркулирующих в сети) — это просмотр и/или запись данных, передаваемых по линиям связи. К ним относятся:

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

Активные угрозы (нарушение целостности или доступности ресурсов и компонентов сети) — несанкционированное использование устройств, имеющих доступ к сети для изменения отдельных сообщений или потока сообщений. К ним относятся:

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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: