Информационная безопасность

Люки в программах

Люк -  это не описанная в документации на программный продукт возможность работы с этим программным продуктом.

Люк является самым  популярным способом нарушения безопасности  информационных систем, поскольку является одним из наиболее простых.

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

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

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

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

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

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

Ø      Ø      забыл удалить его;

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

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

Ø      Ø      умышленно оставил его в программе с тем, чтобы иметь скрытое средство доступа к программе уже после того, как она вошла в состав конечного продукта.

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