В этой статье будут рассмотрены возможные временные решения для предотвращения эксплуатации уязвимости нулевого дня в Microsoft Internet Explorer.
Редакция SecurityLab.ru
По материалам Microsoft SVRD
Как простому человеку защитить себя?
Если вы не компьютерный гуру и не читаете перед сном SecurityLab, можете смело выполнить инструкции из этого раздела и спокойно работать. Для выполнения одного из предложенных решений необходимо скачать файл solutions.zip и/или oledb32.zip и следовать нижеперечисленным инструкциям.
Для быстрого решения проблемы выполните инструкции, описанные в решении #4.
Информация об уязвимости
Уязвимость «нулевого дня» была обнаружена в Internet Explorer 7, и, по результатам исследований присутствует в других версиях Internet Explorer. Злоумышленник может выполнить произвольный код в уязвимой системе и установить вредоносные программы на компьютер при просмотре Web-сайта.
Уязвимость существует из-за повреждения памяти при обработке связываний DHTML данных (DHTML Data Binding) в Internet Explorer. Уязвимость распространяется на все поддерживаемые в настоящее время версии Internet Explorer. Специально сформированный HTML код, который использует эту уязвимость, приводит к тому, что IE создает массив из объекта связывания данных. Вредоносный код приводит к тому, что IE ссылается на объект, который был ранее инициализирован. Этот класс уязвимости эксплуатируется путем подготовки динамической памяти, содержащей контролируемые злоумышленником данные (“heap spray”), до разыменования некорректного указателя.
В настоящее время уязвимость активно используется для установки вредоносного программного обеспечения через взломанные сайты (ссылки).
Какое временное решение следует использовать?
Сейчас уведомление Microsoft содержит 8 различных вариантов блокирования уязвимости. Microsoft добавила дополнительные способы решения проблемы в последней версии уведомления, чтобы дать пользователям больше возможностей для устранения уязвимости. Только в IE8 существует возможность полностью отключить механизм связывания данных. Если вы не используете IE8, вам понадобится следующее:
Опциональный вариант (C) может применяться для усложнения контроля злоумышленника над динамической памятью.
Временное решение |
A |
B |
C |
1. Установить зоны безопасности Internet и Local в значение «High». Это позволит выводить окно с запросом на выполнение/запрет AсtiveX компонентов и Active Scripting в этих зонах для каждого сайта. |
|
X |
X |
2. Настройть Internet Explorer на вывод запроса перед запуском Active Scripting или отключите Active Scripting в зонах безопасности Internet и Local. |
|
X |
X |
3. Запретить Internet Explorerиспользовать OLEDB32.dll с помощью Integrity Level ACL | X |
|
|
4. Запретить функционал Row Position в OLEDB32.dll | X |
|
|
5. Отменить регистрацию OLEDB32.DLL | X |
|
|
6. Использовать ACL для запрета OLEDB32.DLL | X |
|
|
7. Запретить функционал XML Island | X |
|
|
8. Включить DEP для Internet Explorer на Windows Vista и Windows Server 2008 |
|
|
X |
9. Отключить поддержку связывания данных в Internet Explorer 8 | X |
X |
|
Применение временного решения из колонки (A) поможет защититься от настоящих атак. Для полноценной защиты от уязвимости мы также рекомендует применить решение из колонки (B).
Зачем перечислять 4 вида опций для защиты от вектора атаки, использующего провайдер OLEDB данных?
Давайте кратко обсудим временные решения 3-5, каждый из которых описывает способ защиты от вектора атаки на провайдер OLEDB.
5 & 6 –отменить регистрацию или отключить OLEDB32.DLL через ACL (списки контроля доступа)
Microsoft перечислила эти решения во вчерашнем уведомлении, и они остаются действительными. У этого решения есть побочное действие. Все приложения, использующие какую-либо часть библиотеки, не будут функционировать.
Решение #5
Отмена регистрации OLEDB32.DLL
Для 32-битной системы (Windows 2000, XP, 2003, Vista, 2008) выполните команду:
Regsvr32.exe /u "%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll"
Для 64-битной системы (Windows 2000, XP, 2003, Vista, 2008) выполните команды:
Regsvr32.exe /u "%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll"
Regsvr32.exe /u "%ProgramFiles(x86)%\Common Files\System\Ole DB\oledb32.dll"
Повторная регистрация (отмена временного решения) OLEDB32.DLL в системе
Для 32-битных систем выполните команду:
Regsvr32.exe "%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll"
Для 64-битных систем выполните команды:
Regsvr32.exe "%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll"
Regsvr32.exe "%ProgramFiles(x86)%\Common Files\System\Ole DB\oledb32.dll"
Решение #6
Отключение OLEDB32.DLL с помощью ACL
Скачайте архив solutions.zip и выполните соответствующий файл:
Для 32-битных ОС Windows 2000, XP, 2003
DisableACL-32bit.cmd
Для 64-битных Windows XP и 2003
DisableACL-64bit.cmd
Для 32-битных Windows Vista и Windows 2008
DisableACL-Vista-32bit.cmd
Для 64-битных Windows Vista и Windows 2008
DisableACL-Vista-64bit.cmd
Для отмены временного решения по отключению OLEDB32.DLL с помощью ACL и выполните соответствующий файл:
Для 32-битных ОС Windows 2000, XP, 2003
EnableACL -32bit.cmd
Для 64-битных Windows XP и 2003
EnableACL-64bit.cmd
Для 32-битных Windows Vista и Windows 2008
EnableACL-Vista-32bit.cmd
Для 64-битных Windows Vista и Windows 2008
EnableACL-Vista-64bit.cmd
4 – Отключитьфункционал Row Positionв OLEDB32.dll
По нашим данным, отключение одного COM объекта OLEDB32 достаточно для блокировки доступа к уязвимой части кода. Хотя мы и указываем решения 5 и 6 в уведомлении, но решение #4 более предпочтительно, т.к. также эффективно как решения 5 и 6, но менее заметно.
Для отключения COM объекта OLEDB32 необходимо выполнить следующий reg файл:
DisableRowPosition.reg
Для отмены временного решения выполните файл:
UndoDisableRowPosition.reg
3 - Запретить Internet Explorer использовать OLEDB32.dll с помощью Integrity Level ACL
Это еще одно решение для блокировки доступа к провайдеру OLEDB данных. Большой плюс этого решения – доступ блокируется только для Internet Explorer и не затронет другие приложения. Применение этого решения возможно только, когда включены UAC и IE Protected Mode (по умолчанию на Windows Vista и Windows Server 2008). Мы более подробно опишем это решение, т.к. оно достаточно хорошее.
Подробности решения с IntegrityLevelACL
Внимание, это решение применимо только для ОС Windows Vista и выше
Для внедрения этого типа защиты, наше решение базируется на том факте, что по умолчанию Internet Explorer запускается с включенным Protected Mode. Это означает, что процесс iexplore.exe запускается на низком уровне целостности. Подробности работы этого режима можно найти по адресу: http://msdn.microsoft.com/en-us/library/bb250462.aspx. Как написано в статье, механизм целостности позволяет заблокировать процессу возможность записи данных в защищенные объекты (например, файлы), имеющие более высокий уровень целостности. Но в статье не указывается, что также возможно запретить процессу читать и выполнять защищенные объекты с более высоким уровнем целостности. Это осуществляется путем применения специальной записи ACL для объекта. Ниже, мы расскажем, как это осуществить для OLEDB32.DLL.
Перед реализацией решения необходимо создать временную директорию и скопировать в нее inf файл из архива oledb32.zip. Для 32-битной системы используйте BlockAccess_x86.inf, для 64-битной - BlockAccess_x64.inf. Запустите командную строку с привилегиями администратора, перейдите в созданную вами директорию и выполните следующую команду:
>SecEdit /configure /db BlockAccess.sdb /cfg <файл.inf>
При успешном выполнении команды будет выдан следующий результат:
The task has completed successfully.
See log %windir%\security\logs\scesrv.log for detail info.
SecEdit также создаст файл BlockAccess.sdb в текущей директории. Его можно будет удалить вместе с inf файлом.
Проверка работоспособности временного решения
Для 32-битной системы достаточно выполнить команду:
icacls "%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll"
Для 64-битной системы будет нужно выполнить команду icacls дважды:
icacls "%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll"
icacls "%ProgramFiles(x86)%\Common Files\System\Ole DB\oledb32.dll"
Наличие следующей строки в выводе команды icacls свидетельствует об успешном применении временного решения:
Mandatory Label\Medium Mandatory Level:(NW,NR,NX)
Значения NR и NX свидетельствуют об успешном выполнении команды, отсутствие строки или одного из значений (NR либо NX) говорит о неуспешно выполненной операции.
Отключение временного решения
Для отмены временного решения необходимо скопировать из архива inf файл (для 32-битной системы UnblockAccess_x86.inf, и UnblockAccess_x64.inf для 64-битной), и выполнить команду:
SecEdit /configure /db UnblockAccess.sdb /cfg <файл.inf>
Ссылки:
http://blogs.technet.com/swi/archive/2008/12/12/Clarification-on-the-various-workarounds-from-the-recent-IE-advisory.aspx
http://www.microsoft.com/technet/security/advisory/961051.mspx
http://msdn.microsoft.com/en-us/library/ms531388(vs.85).aspx
http://msdn.microsoft.com/en-us/library/bb250462.aspx
http://blogs.technet.com/swi/attachment/3167803.ashx
http://www.securitylab.ru/vulnerability/364549.php
http://www.securitylab.ru/analytics/364556.php
http://www.securitylab.ru/blog/personal/tecklord/7341.php
Живой, мертвый или в суперпозиции? Узнайте в нашем канале