Операционная система или приложение может подвергнуться вирусному нападению в том случае, если она имеет возможность запустить программу, не являющуюся частью самой системы. Данному условию удовлетворяют все популярные «настольные» операционные системы, многие офисные приложения, графические редакторы, системы проектирования и прочие программные комплексы, имеющие встроенные скриптовые языки.
Компьютерные вирусы, черви, троянские программы существуют для десятков операционных систем и приложений. В то же время существует огромное количество других операционных систем и приложений, для которых вредоносные программы пока не обнаружены. Что является причиной существования вредных программ в одних системах и отсутствия их в других?
Причиной появления подобных программ в конкретной операционной системе или приложении является одновременное выполнение следующих условий: популярность, широкое распространение данной системы; наличие разнообразной и достаточно полной документации по системе; незащищенность системы или существование известных уязвимостей в системе безопасности.
Каждое перечисленное условие является необходимым, а выполнение всех трех условий одновременно является достаточным для появления разнообразных вредоносных программ.
Условие популярности системы необходимо для того, чтобы она попалась на глаза хотя бы одному компьютерному хулигану или хакеру. Если система существует в единичных экземплярах, то вероятность ее злонамеренного использования близка к нулю. Если же производитель системы добился ее массового распространения, то очевидно, что рано или поздно хакеры и вирусописатели попытаются использовать ее в своих интересах.
Напрашивается естественный вывод: чем популярнее операционная система или приложение, тем чаще она будет являться жертвой вирусной атаки. Практика это подтверждает — распределение количества вредного программного обеспечения для Windows и Linux практически совпадает с долями рынка, которые занимают эти операционные системы.
Наличие полной документации необходимо для существования вирусов по естественной причине — создание программ (включая вирусные) невозможно без технического описания использования сервисов операционной системы и правил написания приложений. У большинства мобильных телефонов, например, подобная информация закрыта — ни компании-производители программных продуктов, ни хакеры не имеют возможности разрабатывать программы для данных устройств. У некоторых «умных» телефонов есть документация по разработке приложений — и, как следствие, появляются и вредоносные программы, разработанные специально для телефонов данного типа.
Под защищенностью системы понимаются архитектурные решения, которые не позволяют новому (неизвестному) приложению получить полный или достаточно широкий доступ к файлам на диске (включая другие приложения) и потенциально опасным сервисам системы. Подобное ограничение фактически блокирует любую вирусную активность, но при этом, естественно, накладывает существенные ограничения на возможности обычных программ.
Примеров широко известных защищенных операционных систем и приложений, к сожалению, нет. Частично удовлетворяет требованию защищенности Java-машина, которая запускает Java-приложение в режиме «песочницы». И действительно, «настоящих» вирусов и троянских программ в виде Java-приложений не было достаточно долгое время (за исключением тестовых вирусов, которые были практически неработоспособны). Вредоносные программы в виде Java-приложений появились лишь тогда, когда были обнаружены способы обхода встроенной в Java-машину системы безопасности.