64-битные
процессоры производства AMD и Intel в состоянии предотвратить
исполнение разрушительного кода, внедренного на компьютер. После выпуска
Service Pack 2 ОС Windows XP обрела наконец-то поддержку новейшей
технологии антивирусной защиты.
Иметь надежную защиту от вирусов без установки специальных программ,
их постоянного обновления, скачивания антивирусных баз и патчей — об
этом только и мечтают пользователи, уставшие от борьбы со зловредными
бациллами, разрушающими биты и байты компьютеров, уничтожая ценную
информацию. Первый шаг в этом направлении был сделан в то время, когда
появился Service Pack 2 для Windows XP с модулем, названным Data
Execution Prevention. Суть этой технологии состоит в аппаратном
обеспечении антивирусной защиты, которая заключается в перехватывании
зловредного кода и сведении к минимуму опасности умышленного
переполнения буфера (Buffer Overflow).
NX-флаг: антивирусный барьер внутри чипа
Разработанный корпорацией Microsoft для ОС Windows XP модуль
предотвращения выполнения данных (Data Execution Prevention) эффективно
работает лишь при наличии 64-битного процессора. Он имеет флаг под
названием No Execute (NX) — один бит в процессорном регистре, который
обозначает, что находящимся в отдельных зонах памяти данным исполняться
запрещено. Однако очень немногие из владельцев процессоров Athlon 64
производства AMD могли извлечь какую-то выгоду из новой архитектуры:
NX-функцию до настоящего времени поддерживали только некоторые версии ОС
Linux и BSD. Теперь и Intel представила свою 64битную версию
центрального процессора – Pentium 4F. Первая пикантная подробность: в
интеловском чипе тоже функционирует технология «конкурирующей фирмы»
AMD, только в Intel ее переименовали из NX в XD (eXecute Disable).
Вторая, не менее пикантная, деталь: почти одновременно с появлением
64-битного процессора Pentium 4F (но целый год спустя после выхода в
свет Athlon 64!) корпорация Microsoft наконец-то выдала Service Pack 2 с
интегрированным модулем Data Execution Prevention. Только теперь операционная система Windows XP делает полезным существование NX- или XD-флага.
«Узкое место» — буфер данных
Новая технология устраняет главный недостаток системы управления
памятью процессоров, которые имеют архитектуру, предложенную математиком
Джоном фон Нойманном. Он в далеком 1946 году придумал концепцию,
которая предусматривает общую память для данных и исполняемого
программного кода. Это явилось предпосылкой для работы «умных» программ,
которые могли бы самостоятельно записываться и перезаписываться. И хотя
практического применения эти программы не получили, концепция
организации памяти в основных чертах сохранилась и по сей день.
Справедливости ради заметим, что x86-архитектура имела механизм защиты,
который должен предотвращать самопроизвольное исполнение программного
кода из области данных. Однако в скором времени из операционных систем
была убрана поддержка этой защиты. Причина проста: программировать
намного легче, когда областям данных не приходится постоянно указывать
атрибуты «защищено» или «не защищено». Кроме того, в течение всего этого
времени отсутствовала потребность в серьезной защите. Она появилась
только в последние годы: вирусы и черви, заразив миллионы компьютеров,
причинили ущерб, исчисляемый миллиардами долларов. Описанная концепция
работы памяти – это прямое приглашение для хакеров и вирусописателей.
Многие из широко распространенных вирусов и червей, таких как Sasser и
Blaster, используют для атак дыры в программном обеспечении, чтобы
спровоцировать переполнение буфера. Во время этой атаки нормальное
содержимое стека заменяется адресом возврата, который указывает на
вредоносный код. Этот код – он чаще всего располагается в этом же
сегменте памяти – автоматически исполняется, что приводит к коллапсу
компьютера.
Чип с антивирусной «прививкой»: процессор AMD Athlon 64 имеет флаг No Execute
Никакого кода в памяти
Как раз это и предотвращает функция под названием No Execute.
Конечно, злоумышленник может, как и прежде, внедрять код в память стека,
однако как только этот код начнет исполняться, программа аварийно
завершится, выдав сообщение об ошибке, и система не пострадает. В
64-битных версиях ОС Windows XP автоматически будет активирована функция
Execution Protection после инсталляции Windows XP Service Pack 2, и
отключить ее пользователь не сможет. Это будет выглядеть несколько
иначе, когда ОС работает в 32-битном режиме. В этом случае активируется
расширение Physical Address Extension (PAE), которое эмулирует
расширение адресации до тех же 64 бит, в которых присутствует NX-бит.
Microsoft сама указывает на то, что многие драйверы устройств имеют
проблемы с используемой в серверных окружениях Physical Address
Extension. Они просто могут не запускаться в 64-битном режиме. Если
обновление драйвера не помогает, пользователю ничего не остается, как
отключить Execution Prevention для неработающего приложения.
Потребность в антивирусе не исчезает
Сама по себе функция защиты NX еще долгое время не сможет дать гарантию
от заражения компьютера вирусами. Ведь злоумышленник может получить
доступ в область памяти ПК не только через Buffer Overflow. К вирусам,
прикрепленным к почтовым отправлениям либо загружающимся при посещении
вебсайтов, NX совершенно «равнодушен». AMD, используя рекламный слоган
«Enhanced Virus Protection», обещает больше, чем может на самом деле.