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», обещает больше, чем
может на самом деле.