Поддержка браузерами технологии Data Execution Prevention

    Как известно, значительная часть вредоносного ПО, просачивающегося на компьютеры пользователей, попадает туда, используя ошибки в браузерах, а ещё чаще — в популярных плагинах, таких как Flash, Adobe Reader, Java и т.д.

    При этом, значительную часть подобных уязвимостей (а именно, те из них, которые связаны с переполнением буфера) можно было бы блокировать, включив для браузера и его плагинов поддержку технологии 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).
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 16
    • +3
      DEP + ASLR уже не панацея — «Internet Explorer 8 на платформе Windows 7 взломан Питером Врёгденхилом, независимым исследователем вопросов безопасности из Нидерландов. Его атака названа «технически впечатляющей», поскольку удалось обойти Data Execution Prevention (DEP) и Address Space Layout Randomization (ASLR), встроенные в ОС механизмы, препятствующие большинству проникновений.»
      • 0
        Панацеи не существует в принципе. А вот «порог вхождения», если можно так высказаться, у DEP+ASLR весьма велик — не каждый может вот так сбодуна ломануть.
        • 0
          Конечно, интересно было бы узнать подробности взлома. Одно дело — ручной взлом, когда мощь человеческого интеллекта позволяет предсказывать положение кода в памяти и т.д.

          Другое дело — механический эксплойт, который можно засунуть сразу в 100500 троянов.

          Так что пренебрегать DEP+ASLR пока рано ещё :)
        • +2
          Какая фамилия-то говорящая! Врёгденхил! Вполне достойна Джоанны Рутковской, занимающейся руткитами…
        • 0
          Data Execution Prevention
          Data Execution Protection
          Execute Disable Bit

          они по моему еще сами не определились :)
          • 0
            NX-бит и DEP — не одно и то же. «Protection» в заголовке топика — копипаст из msdn. Заменил на Prevention: раз так считает википедия, то так тому и быть :)
          • +1
            «неисполнимые» -> «неисполняемые»
          • +2
            DER — попытка перехода от набившей всем оскомину Принстонской (фон-Неймановской) архитектуры компьютеров к Гарвардской. В СССР многие компьютеры были разработаны по такой схеме, например БЭСМ-6. Данные -это данные, а код — это код. И нечего их мешать.
            • 0
              О чем вы говорите? У меня года 3 поддержка DEP включена, никаких проблем по этой части ни с какими браузерами не было.
              image

              Единственное приложение, которое отказалось работать в этом режиме — Quake 3.
              • +3
                — Доктор, у меня болит нога!
                — Ерунда, голубчик, у меня — не болит!
                • 0
                  Не смотря на вашу издевку, еще раз нормально спрашиваю: о какой именно несовместимости идет речь, если браузеры нормально работают при включенном DEP и не падают?
                  • 0
                    Я же не говорил, что проводил тестирование самостоятельно. Речь идёт о том, что некоторые люди пишут, что у них падет firefox, а также о том, что сотрудники mozilla не опровергают эту информацию на официальном форуме. А также о некотором количестве багов в багзилле мозиллы, связанных с DEP.

                    По-моему, достаточно знать, что firefox может падать при определенном стечении обстоятельств при включенном DEP, чтобы считать его не совместимым с этой технологией. И если в других случаях он не падает, это ещё не значит, что всё в порядке.
                    • 0
                      Проверил багзиллу мозиллы более внимательно. Баги, связанные с DEP, висят в статусе unconfirmed. Перепроверил их все у себя — не подтвердились. Обновил статью. Дал ссылку на ваш опыт тоже. Полагаю, пользователи, жалующиеся на форуме, что есть проблемы с DEP, сталкиваются с глюками в старых NPAPI-плагинах.
                • +1
                  UPD: Ещё о реализации поддержки DEP в Chrome. Автор считает, что разработчикам этого браузера, возможно, пришлось дизассемблировать windows

                  Ага. Для желающих почитать об этом поподробнее (и на русском) — тыц:
                  habrahabr.ru/blogs/web_security/80582/#comment_2376845
                  • +1
                    Спасибо, обновил топик.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.