Обилие инструментария для начинающего
взломщика в системах такого класса просто обескураживает. Пользователя загоняют
в совершенно анекдотическое положение, когда прав и возможностей у него куда
меньше по сравнению с неизвестно откуда появившимся программным кодом. Более
того, причинить вред значительно проще, нежели использовать программу по
прямому назначению. Что толку от паролей и уровней привилегий, если вирус или,
того хуже, троянец уже сидит внутри и может беспрепятственно воспользоваться
всеми функциями поражаемой системы? Это напоминает КПП воинской части, вокруг
которой нет никакого ограждения.
Безопасность опять принесена в жертву ради
удобства работы программистов. По-видимому, здесь наблюдается отрицательная
обратная связь: ориентация на потребителей с минимальными компьютерными
знаниями снижает требования к квалификации разработчиков. А чем еще можно
объяснить упорное игнорирование накопленного опыта? И сколько еще будут
платиться деньги за сейф без задней стенки?
Эра макровирусов началась в 1995 году, когда
появился Word.Concept, обитающий в 6-м Word'e и Windows 3.1. Выпуск Windows 95
перекрыл кислород многим DOS-овским вирусам, но злобные макросы оказались для
Microsoft неприятным сюрпризом. Их попросту не ждали и продолжали наращивать
мощь макроязыков, полагая, видимо, что проблема рассосется сама собой.
Создавая Windows 95, Microsoft пыталась
доказать, что для нее нет ничего невозможного. Помнится, в начале 90-х годов,
когда эпидемия DOS-вирусов развернулась в полную силу, эксперты по безопасности
рассеивали слухи о вирусах в документах и электронных письмах. Утверждалось,
что для опасений нет никаких оснований. Наивные люди. Пока они убаюкивали
пользователей, тысячи сотрудников уже отнюдь не микроскопической софтверной
фирмы ковали как раз те самые основания, благодаря которым NIMDA сегодня ставит
на уши Internet-сообщество.
Макровирусы оказались побочным эффектом идеи
тотальной автоматизации приложений. Спору нет, это очень удобно для
программистов – не требуется заново изобретать велосипед, применяя по мере
необходимости готовые решения. Грамотный пользователь также может расширить
возможности используемого программного обеспечения. Проблема в том, что нет никаких ограничителей. Ядро
автоматизации составляет Visual Basic for Application (VBA) – сплав мощности и
простоты. Оснащенное им приложение фактически превращается в интерпретатор
языка высокого уровня, которому доступны все возможности операционной системы.
Сегодня он есть фактически на каждом Windows-компьютере в составе популярных
приложений и обеспечивает благоприятные условия для вирусных эпидемий.
Разработать эффективную вредоносную программу
вполне под силу начинающему программисту. Word элементарно можно
запрограммировать так, что он станет менеджером задач или будет править Реестр
(Registry). Зачем это офисному приложению? Естественно, применение таким
способностям найдется только в неправедных целях.
Не реагировать на растущее недовольство
клиентов (дожили ведь до того, что, открыв документ, можно потерять всю
информацию на винчестере) Microsoft уже не может, а признавать ошибочность
своего выбора еще не хочет. Пока она ограничивается косметическими заплатами,
одновременно промывая мозги доверчивым клиентам: проблема, дескать, решена. По
мнению разработчиков, основная проблема – люди. Это они пишут вирусы, тащат на
свой компьютер всякую дрянь, а беднеющий на глазах производитель замечательного
ПО совершенно не виноват.
Ну что ж, посмотрим для начала на самый
популярный среди вирусописателей объект MS Word. DOC-формат сейчас является
наиболее распространенным форматом для обмена данными. Начиная с 8-й версии
(Word 97), макросы могут содержаться как в шаблонах (DOT), так и в обычных
документах (DOC). Рекомендации использовать для пересылки документов формат
RTF, в котором макросов не должно быть по определению, не учитывают один
«пустяк». Если документ содержит растровую графику, то при конвертации в RTF
она почему-то оказывается в формате BMP (не иначе как для лучшей совместимости,
с кем только?), увеличивая размеры файла в десятки раз. Так, черновик этой
статьи со вставленными TIF-иллюстрациями имеет размер 135 килобайт в
DOC-формате, а в RTF – «всего-то» 6,19 МЕГАбайт. WinRAR при максимальном сжатии
может упаковать его до 199 кБ, хотя исходный DOC уменьшается до 89 кБ. И это
при использовании скриншотов, а когда речь пойдет о настоящих картинках, то
размеры RTF-копии могут оказаться в сотни раз больше исходника!
Чтобы снизить риск заражения, в программы
пакета MS Office введено предупреждение о наличии макросов в открываемом
документе.
Word 2000 имеет три уровня такой «защиты» от
макровирусов (меню Сервис–>Макрос–>Безопасность…).
Зря все-таки зоилы говорят, что Microsoft не дает пользователям права выбора.
Выбор более чем широк. От возможности
подцепить заразу без предупреждения (Низкая),
до полного незнания о ее существовании (Высокая).
Поскольку творцы вирусов обходились пока без цифровой подписи, их макросы будут
автоматически отключены, а юзер даже знать не будет, что у него опасный файл.
Жить в нем бацилла будет до тех пор, пока не попадется на глаза антивирусному
сканеру. До этого времени она может кочевать с файлом с компьютера на компьютер
и где-нибудь да сработает. Чтобы избежать таких конфузов и не стать
распространителем инфекции, выбирайте средний уровень. В этом случае за решение
о запуске макросов из ненадежных источников отвечает сам пользователь.
Уровень безопасности уже нельзя изменить, как
было ранее, из VBA с помощью объекта Word.Application, присвоив
Options.VirusProtection = False. Теперь он определяется строковым параметром Level ключа Реестра HKCUSoftwareMicrosoftOffice9.0WordSecurity .
По «счастливой случайности» Word 2000 содержит функцию PrivateProfileString , умеющую работать как раз со строковыми
параметрами Registry. Вот ни с какими другими (двоичный, DWORD) не умеет, а со
строками – пожалуйста. Простейший пример программного отключения защиты
приведен в «Curious Basic». Чем думали – туда и поставили.
Получив предупреждение, отключите макросы и
проверьте файл антивирусной программой. Не торопитесь разрешать макросы при
отсутствии известных зараз. Для гарантии лучше воспользоваться
Организатором. Добраться до него можно
через меню Сервис–>Шаблоны и надстройки…,
кнопка Организатор…