Оригинал материала находится по адресу old.computerra.ru/think/sentinel/37641/
16.02.2005
История, о которой сегодня пойдёт речь, во многом парадоксальна. Она приключилась на прошлой неделе, но в то же время стара как сам компьютерный мир. Её последствия могут обернуться миллионными потерями для тысяч пользователей, но вы вряд ли сдержите улыбку, когда узнаете подробности. Да и начиналась она с малого. 8 февраля компания Internet Security Systems (ISS) опубликовала отчёт своих специалистов, обнаруживших в одной популярной антивирусной программе "дыру", а попросту - недоработку, потенциально чреватую известного рода неприятностями. Анализировали работники ISS антивирус компании Symantec, а если быть точным, то входивший в её состав модуль DEC2EXE.
Здесь стоит сделать лирическое отступление и вспомнить, как работают антивирусы. Принцип, положенный в основу большинства таких инструментов, предельно прост: когда операционная система пытается прочесть очередной файл, антивирус сканирует его на предмет наличия подозрительных включений. Чаще всего сканируемый код просто сравнивается с сигнатурами из базы данных и, если совпадение обнаружено, можно говорить о поимке вируса. Безусловно, есть и иные, более хитрые методы, позволяющие, в частности, обнаруживать зловредный код даже не зная его "в лицо", но в данном случае это не существенно. Вернёмся к нашим баранам, а именно - к модулю DEC2EXE.
Хитрый этот элемент предназначался как раз для помощи в разборе подозрительных файлов. Всякий раз, когда антивирусу попадались исполняемые файлы, упакованные популярной (и не только в среде Windows) утилитой UPX, за работу принимался DEC2EXE. Проблема в том, что в коде самого модуля имеются ошибки, из-за чего в некоторых случаях DEC2EXE может вести себя некорректно по отношению к системе. Заслуга специалистов ISS заключается в том, что они показали, как именно следует изменить заголовки сжатого с помощью UPX файла, чтобы заставить DEC2EXE ошибиться, вызвать переполнение буфера и в конце концов уступить контроль. Постарайтесь не запутаться в софтверных переплетениях: DEC2EXE предназначается для защиты системы от вирусов, но сам того не ведая, может вирусы запускать.
Теперь самое время перейти от частностей к общему. Следите за руками: модуль DEC2EXE входит в состав программной библиотеки под названием Symantec AntiVirus Library. В свою очередь эта библиотека включена в состав нескольких программных продуктов, выпускаемых компанией Symantec. В их числе Norton и Symantec AntiVirus, Symantec Mail Security, Symantec BrightMail, Symantec Gateway Security и некоторые другие, предназначенные для защиты компьютеров от вирусов, спама и хакерских атак на всём спектре вычислительной техники от десктопа до серверов, работающих под управлением различных операционных систем (MS Windows, Linux, Solaris и др.). Одно только перечисление всех уязвимых пакетов и версий занимает пять страниц! А оценить масштабы трагедии в полной мере позволяет простой мысленный эксперимент.
Представьте себе компьютер, на котором работает, к примеру, тот же Symantec AntiVirus. Счастливый пользователь мнит себя в безопасности, ибо и не подозревает, что его антивирус теперь - распахнутая дверь, воспользоваться которой может всякий желающий злоумышленник. Для заражения такой машины вирусом достаточно изготовить тот самый некорректный UPX-файл, в тело которого внедрить зловредный код. После чего выслать файл жертве электронным письмом, передать на компакт-диске или через Сеть - не суть важно, какой протокол или механизм будет задействован: антивирус контролирует все входы и выходы из компьютера, так что он обязательно попытается проверить полученный файл и, конечно, запустит вирус.
А теперь попробуйте догадаться, что было дальше - не считая, конечно, обычного для таких историй выпуска патчей, которые следует срочно установить всем пользователям уязвимых программ. Представьте, если у какого-нибудь черношляпого хакера всё же достанет ума и терпения написать вирус, эксплуатирующий дыру в DEC2EXE. Догадались? Да, почти одновременно и ISS, и Symantec добавили в свои продукты защиту от такого, пока несуществующего вируса. И получился - правильно! - антивирус для вируса для антивирусов! И, пожалуйста, не думайте, что цепочка на этом оборвётся. Печально, но факт: ни один из существующих механизмов противодействия цифровым вирусным инфекциям не способен на превентивный удар. Иначе говоря, разработчики антивирусов действуют по факту: есть вирус (или, по крайней мере, его алгоритм) - будет и антивирус. Но ни словарные проверки, ни эвристический анализ, ни виртуальные машины не в состоянии решить проблему в полной мере, защитив от заразы, которая пока не придумана, и вирусописатели остаются на шаг впереди, а авторы антивирусов - в роли догоняющих. Нужны как воздух свежие идеи!
P.S. В статье использована иллюстрация Peter Hellberg.
антивирус,Symantec,DEC2EXE,чёрный_хак,ZDV