Как известно, значительная часть вредоносного ПО, просачивающегося на компьютеры пользователей, попадает туда, используя ошибки в браузерах, а ещё чаще — в популярных плагинах, таких как Flash, Adobe Reader, Java и т.д.
При этом, значительную часть подобных уязвимостей (а именно, те из них, которые связаны с переполнением буфера) можно было бы блокировать, включив для браузера и его плагинов поддержку технологии Data Execution Prevention, доступную в ОС семейства Windows, начная с XP SP2.
Вкратце: эта технология запрещает исполнение кода из областей памяти, помеченных как «неисполняемые», то есть, содержащие данные, не предназначенные для исполнения процессором. Таким образом, при попытке использовать переполнение буфера для запуска произвольного кода, будет сгенерирована исключительная ситуация, а программа, подверженная уязвимости — закрыта.
К сожалению, далеко не все программы способны полноценно работать в режиме DEP, и популярные браузеры — не исключение. Вот краткий обзор возможностей по работе в режиме DEP современных браузеров.
В IE7 работа в режиме DEP была принудительно отключена по умолчанию из-за проблем с плагинами. В msdn пишут, что IE8 по умолчанию включает поддержку DEP как для браузера, так и для дочерних процессов (плагины, activex и т.д.), при этом, в IEBlog утверждают, что проблем с популярными плагинам при использовании DEP не наблюдается (по ссылке в комментариях).
Известно, что Chrome не только поддерживает работу в режиме DEP, но и специально включает его, чтобы повысить безопасность работы основных процессов браузера (но для плагинов DEP включается в ограниченном режиме совместимости).
На форумах mozilla активно обсуждаются «вылеты» firefox, связанные с DEP, включая свежие версии FF. При этом мне не удалось найти в багзилле подтвержденных багов, связанных с DEP, и касающихся свежих версий браузера (проверил все unconfirmed баги, связанные с DEP, у себя на XP/SP3/FF3.6 — не подтвердились). В комментариях утверждают, что никаких проблем с FF при включенном DEP замечено не было.
Разработчики Opera заявляют, что Opera может работать в режиме DEP, начиная с версии 9.64 (при этом нормальная работа этого браузера в режиме DEP, похоже, начинается только с версии 10.50rc3, в которой исправили важный баг, связанный с DEP). Поддерживается ли работа плагинов в режиме DEP — не известно.
Я не смог найти достоверной информации о наличии или отсутствии поддержки DEP в Safari для Windows.
PS: Не следует путать «поддерживает DEP» (т.е. в состоянии нормально работать, если DEP включен для всех приложений в системе по умолчанию) и «специально включает DEP» (т.е. устанавливает режим DEP для своего процесса, даже если DEP отключен на системном уровне).
PPS: Разумеется, системным администраторам следует иметь в виду, что DEP — не панацея. Более серьёзную защиту может обеспечить включение ASLR на Vista/Seven и установка WehnTrust на XP (фактически, один и тот же приём, просто в XP нет нативной поддержки ASLR). Но это уже совсем другая история, впрочем, если к теме будет интерес — сделаю отдельную заметку.
UPD: Ещё о реализации поддержки DEP в Chrome (перевод #1, перевод #2). Автор считает, что разработчикам этого браузера, возможно, пришлось дизассемблировать windows, чтобы понять, как изменять режимы DEP для своего процесса в XP (в Vista это можно делать через документированные API).
При этом, значительную часть подобных уязвимостей (а именно, те из них, которые связаны с переполнением буфера) можно было бы блокировать, включив для браузера и его плагинов поддержку технологии Data Execution Prevention, доступную в ОС семейства Windows, начная с XP SP2.
Вкратце: эта технология запрещает исполнение кода из областей памяти, помеченных как «неисполняемые», то есть, содержащие данные, не предназначенные для исполнения процессором. Таким образом, при попытке использовать переполнение буфера для запуска произвольного кода, будет сгенерирована исключительная ситуация, а программа, подверженная уязвимости — закрыта.
К сожалению, далеко не все программы способны полноценно работать в режиме DEP, и популярные браузеры — не исключение. Вот краткий обзор возможностей по работе в режиме DEP современных браузеров.
Internet Explorer
В IE7 работа в режиме DEP была принудительно отключена по умолчанию из-за проблем с плагинами. В msdn пишут, что IE8 по умолчанию включает поддержку DEP как для браузера, так и для дочерних процессов (плагины, activex и т.д.), при этом, в IEBlog утверждают, что проблем с популярными плагинам при использовании DEP не наблюдается (по ссылке в комментариях).
Chrome
Известно, что Chrome не только поддерживает работу в режиме DEP, но и специально включает его, чтобы повысить безопасность работы основных процессов браузера (но для плагинов DEP включается в ограниченном режиме совместимости).
Firefox
На форумах mozilla активно обсуждаются «вылеты» firefox, связанные с DEP, включая свежие версии FF. При этом мне не удалось найти в багзилле подтвержденных багов, связанных с DEP, и касающихся свежих версий браузера (проверил все unconfirmed баги, связанные с DEP, у себя на XP/SP3/FF3.6 — не подтвердились). В комментариях утверждают, что никаких проблем с FF при включенном DEP замечено не было.
Opera
Разработчики Opera заявляют, что Opera может работать в режиме DEP, начиная с версии 9.64 (при этом нормальная работа этого браузера в режиме DEP, похоже, начинается только с версии 10.50rc3, в которой исправили важный баг, связанный с DEP). Поддерживается ли работа плагинов в режиме DEP — не известно.
Safari
Я не смог найти достоверной информации о наличии или отсутствии поддержки DEP в Safari для Windows.
PS: Не следует путать «поддерживает DEP» (т.е. в состоянии нормально работать, если DEP включен для всех приложений в системе по умолчанию) и «специально включает DEP» (т.е. устанавливает режим DEP для своего процесса, даже если DEP отключен на системном уровне).
PPS: Разумеется, системным администраторам следует иметь в виду, что DEP — не панацея. Более серьёзную защиту может обеспечить включение ASLR на Vista/Seven и установка WehnTrust на XP (фактически, один и тот же приём, просто в XP нет нативной поддержки ASLR). Но это уже совсем другая история, впрочем, если к теме будет интерес — сделаю отдельную заметку.
UPD: Ещё о реализации поддержки DEP в Chrome (перевод #1, перевод #2). Автор считает, что разработчикам этого браузера, возможно, пришлось дизассемблировать windows, чтобы понять, как изменять режимы DEP для своего процесса в XP (в Vista это можно делать через документированные API).