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