Проблема безопасности программного обеспечения

Автор работы: Пользователь скрыл имя, 23 Января 2013 в 01:15, лекция

Описание

Неизбежное следствие этого - резкое увеличение объемов и сложности программных средств, используемых в ЭВМ, системах оружия, автоматизированных системах боевого управления и связи, вспомогательных и обеспечивающих системах военного назначения. В докладе комиссии конгресса США по "ключевым технологиям военного назначения" (май 1991 года) отмечено, что при разработке образцов "умного оружия" (при дальнейшей компьютеризации и интеллектуализации систем военного назначения) неизбежен парадокс, заключающийся в том, что "фундаментальный источник технологического прогресса одновременно является и растущим источником технологической уязвимости"

Работа состоит из  1 файл

лекция 1.doc

— 290.00 Кб (Скачать документ)

Рис. 2. Классификация  программных злоупотреблений

 

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

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

в) программист пишет  программу, которой можно управлять  с помощью определенных команд, или, например, путем ввода "Y" ("Да") или "N" ("Нет"). А что произойдет, если в ответ на запрос будет вводиться "А" или "В" и т.д.? Если программа  написана правильно, то на экране должно появиться сообщение типа "Неправильный ввод" и повтор запроса. Однако может быть ситуация, когда программа не учитывает такое, предполагая, что пользователь будет действовать правильно. В таком случае реакция программы на неопределенный ввод может быть непредсказуемой. Такую ситуацию в программе можно специально создать для того, чтобы получить доступ к определенным ресурсам и данным.

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

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

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

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

тестирования и отладки  программного продукта;

окончательной сборки конечной программы; скрытого средства доступа  к программному продукту и данным.

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

3. Логические бомбы (logic bomb) — программный код, который является безвредным до выполнения определенного условия, после которого реализуется логический механизм [29]. Логические бомбы, в которых срабатывание скрытого модуля определяется временем (текущий датой), называют бомбами с часовым механизмом (time bomb). Подобные программы, реализующие свой механизм после конкретного числа исполнении, при наличии или, наоборот, отсутствии определенного файла, а также соответствующей записи в файле, получили название логической бомбы (logic bomb).

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

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

Мировая компьютерная общественность достаточно хорошо знакома с логическими  бомбами. Логическая бомба является одним из излюбленных способов мести  программистов компаниям, которые  их уволили или чем-либо обидели. При этом чаще всего срабатывание бомбы ставится в зависимость от установки в системе даты - так называемые "часовые" бомбы. Это очень удобно: допустим, программист знает, что его уволят 1 марта; в таком случае он может установить "часовую" бомбу на взрыв, допустим, 6 июля или даже на Рождество, когда сам он будет уже вне пределов досягаемости для пострадавшей компании.

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

4. "Троянский конь" — программа, которая кроме своей основной деятельности выполняет некоторые дополнительные (разрушительные), Не описанные в документации функции, о чем пользователь не подозревает [17, 29 и др.].

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

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

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

5. Репликаторы— могут создавать одну, или более своих копий в компьютерной системе. Это приводит к быстрому переполнению памяти компьютера, но данные действия могут быть обнаружены опытным пользователем и достаточно легко устранены. Устранение0программы репликатора усложняется в тех случаях, когда репликация выполняется с модификацией исходного текста: программы, что затрудняет распознавание ее новых копий. Репликаторные программы становятся особенно опасными, когда к функции размножения будут добавлены другие разрушающие воздействие.

  1. Программные закладки — программы, которые сохраняют вводимую с клавиатуры информацию (в том числе и пароли) в некоторой зарезервированной для этого области.

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

Это возможно только при  одновременном выполнении двух условий:

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

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

Исполнение кода закладки может  быть сопровождено операциями несанкционированной  записи (НСЗ), например, для сохранения некоторых фрагментов информации, и несанкционированного считывания (НСЧ), которое может происходить отдельно от операций чтения прикладной программы или совместно с ними. При этом операции считывания и записи, возможно, не связаны с получением конфиденциальной информации, например, считывание параметров устройства или его инициализация (закладка может использовать для своей работы и такие операции, в частности, для инициирования сбойных ситуаций или переназначения ввода-вывода).

Данный тип программных злоупотреблений  включает [33, 40]:

  • закладки, ассоциируемые с программно-аппаратной средой (BIOS);
  • закладки, ассоциируемые с программами первичной загрузки, находящимися в Master Boot Record или Root секторов активных разделов;
  • закладки, ассоциируемые с загрузкой драйверов DOS, командного интерпретатора, сетевых драйверов;
  • закладки, ассоциируемые с прикладным программным обеспечением общего назначения (встроенные в клавиатурные или экранные драйверы, программы тестирования, утилиты и оболочки типа Norton Commander);
  • исполняемые модули, содержащие только код закладки (как правило, внедряемые в пакетные файлы типа ВАТ);
  • модули-имитаторы, совпадающие по внешнему: виду с программами, требующими ввода конфиденциальной информации;
  • Закладки, маскируемые под ПС оптимизационного назначения (архиваторы, ускорители и т.д.);
  • закладки, маскируемые под ПС игрового и развлекательного назначения (как правило, используются для первичного внедрения закладок типа: "исследователь").

7. Атаки "салями" — характерны для финансовыми банковских информационных систем, где ежедневно проводятся тысячи операций, связанных с безналичными расчетами, переводами сумм, начислениями и т.д. [17, 30, 34]. При реализации расчетов вычисляются различного рода доли, которые округляются в большую или меньшую сторону. Атака "салями" состоит в накоплении на отдельном счете этих долей денежной единицы. Практика доказала, что эксплуатация такой программы обеспечивает накопление значительных сумм.

8. Скрытые каналы — это программы, передающие информацию лицам, которые в обычных условиях эту информацию получать не долж-нн1 [17]. Злоумышленник не всегда имеет непосредственный доступ к компьютерной системе. Для скрыгой передачи информации используют различные элементы, форматы "безобидных" отчетов, например, разную длину строк, пропуски между строками, наличие или отсутствие служебных заголовков, управляемый вывод незначащих цифр в выводимых величинах, количество пробелов или других символов в определенных местах отчета и т.д.;

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

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

9. Компьютерные вирусы (KB) — представляют собой программные разработки, способные проникать в среду компьютерных систем и наносить разного рода поврежден658ия [17,21,22,29,35,36,37 и др.].

Вирусы представляют собой наиболее полно исследованный класс программных  злоупотреблений превосходящий по разрушающим возможностям все другие.

Интересным является определение  компьютерного вируса в законодательстве штата Техас (США) [38], как посторонняя (нежелательная) компьютерная программа  или другой набор инструкций, внесенных  в память компьютера, операционную систему или программу, при разработке которых они были специально снабжены способностью к воспроизведению или к воздействию на другие программы и файлы, находящиеся в компьютере, путем присоединения дубликата такой посторонней (нежелательной) программы к одной или более компьютерным программам или файлам.

С развитием технологий обработки  информации получили распространение  и другие виды злоупотреблений. Самыми распространенными можно считать:

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

Работа между  строк (between lines) — подключение к линиям связи и внедрение в компьютерную систему с использованием промежутков в действиях законного пользователя [16, 28 и др.]. При интерактивной работе пользователя образуются своеобразные "окна" (например, отклик системы опережает действия пользователя, которому необходимо время для обдумывания последующих действий). Эти "окна" вполне могут быть использованы нарушителем для работы с системой под маской пользователя.

Информация о работе Проблема безопасности программного обеспечения