Защита от 0-day в Internet ExplorerИсточник: securitylab По материалам 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). Зачем перечислять 4 вида опций для защиты от вектора атаки, использующего провайдер OLEDB данных? Давайте кратко обсудим временные решения 3-5, каждый из которых описывает способ защиты от вектора атаки на провайдер OLEDB. 5 & 6 -отменить регистрацию или отключить OLEDB 32.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" Повторная регистрация (отмена временного решения) OLEDB32.DLL в системе Для 32-битных систем выполните команду: Regsvr32.exe "%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll" Для 64-битных систем выполните команды: Regsvr32.exe "%ProgramFiles%\Common Files\System\Ole DB\oledb32.dll" Решение #6 Отключение OLEDB 32.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 в OLEDB 32.dll По нашим данным, отключение одного COM объекта OLEDB32 достаточно для блокировки доступа к уязвимой части кода. Хотя мы и указываем решения 5 и 6 в уведомлении, но решение #4 более предпочтительно, т.к. также эффективно как решения 5 и 6, но менее заметно. Для отключения COM объекта OLEDB32 необходимо выполнить следующий reg файл: DisableRowPosition.reg Для отмены временного решения выполните файл: UndoDisableRowPosition.reg 3 - Запретить Internet Explorer использовать OLEDB 32.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 свидетельствует об успешном применении временного решения: 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> |