Проблемы диверсификации ПО: нужно ли программистам учиться у матушки-природы

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

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

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

Недавно появилось сообщение об успешном методе диверсификации ПО командой доктора Майкла Франца из Университета Калифорнии в Ирвине. Исследователи сфокусировались на разработке компиляторов, рандомизирующих машинный код. Компиляторы – это программы, которые преобразуют приложения, написанные на таких языках, как C++ и Java, в машинный код, «понимаемый» процессором компьютера. Компиляторы д-ра Франца вносят в компилируемый код стохастические характеристики, что позволяет автоматически создавать множество функционально идентичных вариантов исходной программы с разным кодом. К примеру, такие уникальные варианты могут генерироваться онлайновыми магазинами приложений по запросам загрузок, поступающих от пользователей. При рандомизации, утверждают разработчики, скорость работы их компилятора снижается совсем несущественно.

«Разработка американских ученых весьма интересна, если им удалось в достаточной степени изменить код, не ухудшая стабильности работы программы и не внося дополнительных ошибок, – комментируют эксперты eScan. – Обычно при диверсификации программного обеспечения в целях защиты от заражений возникает дилемма: если измененная программа функционирует всё так же, то она может быть подвержена  всё тем же инфекциям, а если она функционирует уже по-другому, то не появился ли риск непредсказуемой работы ПО и ошибок?»

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

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

 

Похожие записи