О. А. ФЕДЬКО
Московский инженерно-физический институт (государственный университет)
ПРОБЛЕМЫ ПОСТРОЕНИЯ КОМПЛЕКСОВ ОБНАРУЖЕНИЯ НЕДЕКЛАРИРОВАННЫХ ВОЗМОЖНОСТЕЙ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
Одним из возможных методов поиска недекларированных возможностей в программном обеспечении является проведение испытательных запусков и контроль осуществляемых программой действий. Для того чтобы обнаружить вредоносный код (ВК), необходимо чтобы он осуществил некоторые вредоносные действия. Вредоносные действия осуществляются при возникновении некоторого события, следовательно, чтобы ВК проявил себя, надо создать условия его возникновения.
Поэтому в методе можно выделить два этапа: создание условий, при которых ВК осуществит свою работу, и мероприятия по обнаружению этого воздействия.
Конкретное условие срабатывания вредоносного кода зависит от цели его создания, но в целом можно провести некоторую классификацию возможных условий.
При самом первом приближении все условия можно разделить на две категории:
1. Безусловное выполнение – вредоносное действие осуществляется сразу же, как только запускается код.
2. Условное выполнение – вредоносное действие осуществляется при возникновении некоторого события.
Данную категорию можно разделить на четыре класса, в зависимости от типа используемых в условии данных:
o динамические, интерактивные данные (любой ввод);
o статические данные (данные о среде);
o данные из предыдущих запусков;
o комбинаторные условия.
В свою очередь динамические данные стоит разделить по каналу получения информации:
3. сетевой ввод (например, приходит электронное письмо или сообщение по сети, содержащее данные, являющиеся сигналом к осуществлению вредоносного действия);
4. пользовательский ввод (например, введена последовательность «атомная станция», ВК активируется, и дальнейший ввод куда-нибудь пересылает, или осуществляет другое действие);
5. иной ввод (по аналогии с двумя уже указанными наиболее вероятными каналами, могут использоваться и другие каналы ввода).
Статические данные представляют собой данные о среде, то, что программа может получить ещё до начала ввода информации (за исключением информации о предыдущих запусках, которая вынесена в отдельную категорию). Особый случай статических данных представляет собой случайная информация. Такой тип данных попал в эту категорию потому, что если не будут использованы некоторые данные среды (к примеру, часы), то генератор случайных чисел будет всегда работать одинаково.
Информация из предыдущих запусков может содержать различную статистическую информацию, в том числе общее время работы программы, счётчик запусков, параметры и статистику полученных динамических данных и т. п.
Показанная классификация позволяет сделать заключение о том, что создать искусственную ситуацию, в которой сработает условие ВК можно лишь для узкого класса условий. В общем же случае наиболее оптимальной стратегией является эмуляция работы программы в том режиме, в тот промежуток времени, с теми данными, с которыми данная программа будет работать в реальных условиях. И даже такая проверка не даёт гарантии, что были проверены все возможные условия.


