Начало 2001 г. неожиданно преподнесло Интернет-сообществу очередной сюрприз в области компьютерной безопасности. В январе многие средства массовой информации распространили предупреждение об обнаружении PHP.NewWorld - первого компьютерного вируса, написанного на скрипт-языке PHP. Как это ни странно,...
Начало 2001 г. неожиданно преподнесло Интернет-сообществу очередной сюрприз в области компьютерной безопасности. В январе многие средства массовой информации распространили предупреждение об обнаружении PHP.NewWorld - первого компьютерного вируса, написанного на скрипт-языке PHP. Как это ни странно, но западные антивирусные компании, опубликовавшие это предупреждение, очевидно, отстают от реального хода событий. В действительности, первый PHP-вирус (PHP.Pirus) был обнаружен специалистами "Лаборатории Касперского" еще в октябре 2000 г. Вместе с тем, служба технической поддержки компании получила большое количество запросов от пользователей, встревоженных сообщением о "первом" PHP-вирусе, об опасности и перспективах развития этого типа вирусов.
Что такое PHP?
PHP (Hypertext Preprocessor) является одним из наиболее популярных языков программирования для создания встроенных в HTML-страницы скрипт-программ. 10 января компания Netcraft (www.netcraft.com) сообщила, что PHP используется более чем на 5 миллионах web сайтов по всему миру. PHP позволяет разработчикам Web-сайтов создавать динамически изменяемые страницы. Порядок работы PHP-программы можно продемонстрировать на следующем примере. В зависимости от текущей даты посетителю Web-сайта показывается то или иное сообщение. С помощью PHP этот процесс можно полностью автоматизировать и не менять каждый день содержимое сайта. Для этого в соответствующую HTML-страницу встраивается PHP-программа, которая обращается к обработчику, расположенному на сервере провайдера. Обработчик проверяет текущую дату и в соответствии с указаниями PHP-программы создает HTML-страницу, содержащую требуемый текст. Затем эта HTML-страница показывается посетителю сайта.
Структура команд PHP основана на других языках программирования - C, Java и Perl. Вместе с тем, она содержит некоторые уникальные функции, свойственные исключительно PHP. Это позволило создать язык, идеально подходящий для работы небольших web-сайтов и имеющий неоспоримые преимущества перед другими скрипт-языками: он гораздо проще и доступен для понимания, чем Perl; значительно быстрее, стабильнее и менее требователен к ресурсам, нежели Cold Fusion; и работает практически на любой платформе в отличие от ASP, созданного специально для Microsoft Internet Information Server (IIS). PHP распространяется бесплатно и доступен для загрузки с Web-сайта PHP Group по адресу www.php.net. Более того, на этом же сайте любой пользователь может получить исходные тексты, что, несомненно, добавляет языку гибкость и возможность его адаптации и развития для выполнения специфических задач пользователя.
Порядок работы PHP-вирусов
Оба известных на сегодняшний день PHP-вируса работают по одной и той же схеме. Они ищут в определенных каталогах файлы с расширениями .PHP, .HTM (NewWorld дополнительно ищет .HTML- и .HTT- файлы) и заражают их. При этом используется достаточно примитивный способ: в заражаемый файл записывается не код вируса, а ссылка на вирусный файл (команда "include", которая "вставляет" код вируса в файл при его обработке). Таким образом, код вируса присутствует в системе в единственном экземпляре, а все зараженные файлы всего лишь "ссылаются" на него. Более никаких проявлений эти вирусы не имеют.
Насколько опасны PHP-вирусы?
Детальный анализ работы существующих PHP-вирусов и исследование возможных путей их развития дает возможность заключить, что они не несут в себе абсолютно никакой опасности. Основанием для такого вывода служат следующие факты . Во-первых, возможность самостоятельного проникновения PHP-вирусов на web-сайты и серверы провайдеров, обрабатывающих скрипты, практически равна нулю. Это объясняется тем, что по умолчанию система безопасности запрещает обрабатываемым скриптам доступ к директориям, отличным от окружения родительского web-сайта. Следовательно, PHP-вирусы могут развиваться исключительно в рамках уже зараженного web-сайта. Таким образом, проникновение PHP-вирусов на компьютеры возможно только при помощи их искусственного имплантации вследствие умышленных действий администратора или взлома системы. Первое маловероятно, а во втором случае использование PHP-вируса представляется малоэффективным: зачем, спрашивается, хакеру, взломавшему web-сайт, нужно "подсаживать" туда PHP-вирус, если можно нанести гораздо больший вред, например, уничтожив все данные? Во-вторых, даже если PHP-вирус каким-либо из описанных выше способов проник на web-сайт, он не способен к дальнейшему распространению. Он не может получить доступ к системным каталогам сервера провайдера, попасть на любые другие web-сайты и тем более на клиентские машины, просматривающие HTML-страницы, с вредоносным PHP-скриптом. Невозможность последнего объясняется тем, что пользователь получает от PHP-обработчика чистую HTML-страницу, не содержащую никаких скриптов. Конечно, будущие PHP-вирусы могут давать обработчику инструкции вставлять в готовую HTML-страницу свой код, который будет исполнен PHP-обработчиком на локальной машине. С другой стороны, возможность широкого распространения таких вирусов крайне мала из-за того, что установленный PHP процессор на рабочей станции - крайне редкое явление.
Принципиальная неспособность распространения PHP-вирусов в нормальных условиях определяет невозможность их появления в "диком виде" и бесперспективность дальнейших изысканий вирусописателей в этом направлении.
Перспективы развития PHP-вирусов
Несмотря на описанные выше обстоятельства не стоит считать PHP-программы и саму технологию PHP абсолютно безопасной: в ее "арсенале" есть многие потенциально опасные функции, такие как изменение и удаление файлов, доступ к средствам электронной почты и др. В дополнение к этому, PHP-программы поставляются в исходных кодах, что дает возможность быстро модифицировать существующие и учиться, как создавать новые варианты уже известных вредоносных программ. История компьютерных вирусов имеет много примеров, когда приложения и платформы, казавшиеся бастионами безопасности, вскоре буквально изобиловали вирусами.
Главной опасностью, которая может стимулировать развитие PHP-вирусов является обнаружение брешей в системе безопасности этой технологии. Это может стать отправной точкой для появления целого ряда специфических PHP-вирусов. Наглядный пример - "дыра" в системе защиты Internet Explorer под названием "Scriptlet.Typelib Vulnerability", позволявшая вирусам распространяться по электронной почте без вложенных файлов и проникать на компьютеры сразу же после прочтения зараженного письма. Несмотря на то, что Microsoft выпустила "заплатку" еще в ноябре 1999 г., до сих пор Интернет-червь "KakWorm", использующий эту брешь, занимает верхние места в списке самых распространенных вирусов. Это свидетельствует о том, что многие пользователи игнорируют сообщения об обнаруженных ошибках и не обновляют свои приложениях вовремя. При определенных условиях такая же судьба может постичь и PHP.
Открытый исходный код PHP функционален вдвойне.. С одной стороны, он значительно облегчает процесс поиска брешей в системе безопасности: для этого совсем не нужно декомпилировать программу. С другой стороны, благодаря исходным кодам пользователь может оперативно закрывать обнаруженные бреши, не дожидаясь от разработчиков выпуска соответствующего обновления продукта.
В случае широкого распространения технологии PHP как одного из стандартов для рабочих станций (в качестве аналога Windows Scripting Host), потенциальную опасность могут также представлять Интернет-черви, написанные на PHP. Возможности этого языка программирования содержат полный набор необходимых функций для работы с электронной почтой. Таким образом, PHP-вирусы могут работать подобно скрипт-вирусу LoveLetter, созданному с помощью Visual Basic Script (VBS) и распространяться через зараженные вложенные файлы. Однако, широкое распространение таких PHP-червей маловероятно, поскольку, в отличие от обработчиков VBS-программ, устанавливаемых в Windows по умолчанию, обработчики PHP-программ на рабочих станциях - весьма редкое явление. Даже при большом желании пользователь, в подавляющем большинстве случаев, просто не сможет запустить зараженные файлы.
Третьим возможным вариантом злоупотребления технологией PHP могут быть многокомпонентные вирусы, содержащие в качестве одного из элементов PHP-вирус. Это - любые вирусы в исполняемых файлах - EXE, COM, VBS и т.д. При их запуске вирус может проверять наличие PHP-обработчика на компьютере и, если таковой найден, для усиления эффекта и усложнения процедуры нейтрализации, "сбрасывать" PHP-вирус.
Основной вывод из вышесказанного заключается в следующем: известные на данный момент PHP-вирусы не представляют абсолютно никакой опасности. Тем более, что процедуры их обнаружения и удаления уже добавлены в антивирусные базы практически всех антивирусных программ. Потенциальная угроза будущих PHP-вирусов является незначительной из-за низкой популярности PHP для рабочих станций.
На наш взгляд, современные PHP-вирусы постигнет судьба Java-вирусов: с 1998 г. было обнаружено лишь два нежизнеспособных вируса, которые так и остались достоянием исключительно вирусных коллекций.