24.10.2008

Подробности уязвимости MS08-067

В этой статье мы сделаем попытку изложить максимальное количество подробностей и дать рекомендации по устранению уязвимости.

Вчера Microsoft выпустила внеплановое исправление MS08-067, устраняющее критическую уязвимость в службе Server во всех ОС Windows. В этой статье мы сделаем попытку изложить максимальное количество подробностей и дать рекомендации по устранению уязвимости.

Краткое описание уязвимости

Уязвимость существует из-за ошибки в библиотеке netapi32.dll при обработке RPC запросов в службе Server. Удаленный пользователь может с помощью специально сформированного RPC запроса вызвать переполнение буфера в стеке и вызвать отказ в обслуживании системы или выполнить произвольный код на целевой системе с привилегиями учетной записи SYSTEM.

Технические подробности уязвимости

Уязвимость существует в библиотеке netapi32.dll из-за ошибки в механизме подсчета аргументов функции wcscpy_s(dest, len, source), расширяемой макрос
_tcscpy_s(previousLastSlash, pBufferEnd - previousLastSlash, ptr + 2);
который в цикле while() обрабатывает большое количество постоянно обновляемых аргументов.

Потенциальная опасность уязвимости

SecurityLab выставил максимальный рейтинг опасности уязвимости - критический. Эта уязвимость активно эксплуатируется в настоящее время и в общем доступе на момент написания этой статьи находится PoC код.

Уязвимость может эксплуатироваться анонимным пользователем на Windows 2000/XP/2003 и аутентифицированным пользователем на Windows Vista/2008. Для успешной эксплуатации уязвимости атакующему потребуется получить доступ к RPC интерфейсу системы. По умолчанию, межсетевой экран (МСЭ) включен на Windows XP SP2, Windows Vista и Windows Server 2008. Итак, злоумышленник может воспользоваться уязвимость в следующих случаях:

  • МСЭ отключен
  • МСЭ включен, но также разрешена служба доступа к файлам и принтерам

Следующая таблица демонстрирует опасность для каждой платформы:

Описание/векторы воздействия и механизмы защиты

Анонимный доступ

Аутентификация

DEP

ASLR

МСЭ

Windows 2000 – удаленное выполнение кода

Станция, подключенная к домену

+

 

 

 

 

Общий доступ к файлам и принтерам

+

 

 

 

 

Домашний ПК

+

 

 

 

 

Доступ к общим файлам (домашний ПК)

+

 

 

 

 

Windows XP SP2 – удаленное выполнение кода (DEP без ASLR)

Станция, подключенная к домену

+

 

+

 

*

Общий доступ к файлам и принтерам

+

 

+

 

 

Домашний ПК

+

 

+

 

+

Доступ к общим файлам (домашний ПК)

+

 

+

 

 

Windows Server 2003 – удаленное выполнение кода (DEP без ASLR)

Станция, подключенная к домену

+

 

+

 

 

Общий доступ к файлам и принтерам

+

 

+

 

 

Домашний ПК

+

 

+

 

 

Доступ к общим файлам (домашний ПК)

+

 

+

 

 

Windows Vista - отказ в обслуживании (DEP+ASLR)

Станция, подключенная к домену

 

+

+

+

*

Общий доступ к файлам и принтерам

 

+

+

+

**

Домашний ПК

 

+

+

+

+

Защищенный паролем доступ к общим файлам (домашний ПК)

+

 

+

+

***

Windows Server 2008 - отказ в обслуживании (DEP+ASLR)

Станция, подключенная к домену

 

+

+

+

*

Общий доступ к файлам и принтерам

 

+

+

+

**

Домашний ПК

 

+

+

+

+

Защищенный паролем доступ к общим файлам (домашний ПК)

+

 

+

+

***

Примечания:
* МСЭ включен по умолчанию без допускаемых исключений, хотя многие домены включают исключения.
** Общий доступ к файлам и принтерам включает исключение для соответствующего типа сетевого подключения. Общий доступ к частной сети не позволяет доступ из публичной сети.
*** Отключения пароля для доступа к общим ресурсам автоматически разрешает анонимные подключения.

Механизмы защиты и противодействия

Для устранения уязвимости следует установить в кратчайшие сроки исправления с сайта производителя:
Windows 2000 SP4:
http://www.microsoft.com/downloads/de...=E22EB3AE-1295-4FE2-9775-6F43C5C2AED3

Windows XP SP2:
http://www.microsoft.com/downloads/de...=0D5F9B6E-9265-44B9-A376-2067B73D6A03

Windows XP SP3:
http://www.microsoft.com/downloads/de...=0D5F9B6E-9265-44B9-A376-2067B73D6A03

Windows XP Professional x64 Edition:
http://www.microsoft.com/downloads/de...=4C16A372-7BF8-4571-B982-DAC6B2992B25

Windows XP Professional x64 Edition SP2:
http://www.microsoft.com/downloads/de...=4C16A372-7BF8-4571-B982-DAC6B2992B25

Windows Server 2003 SP1:
http://www.microsoft.com/downloads/de...=F26D395D-2459-4E40-8C92-3DE1C52C390D

Windows Server 2003 SP2:
http://www.microsoft.com/downloads/de...=F26D395D-2459-4E40-8C92-3DE1C52C390D

Windows Server 2003 x64 Edition:
http://www.microsoft.com/downloads/de...=C04D2AFB-F9D0-4E42-9E1F-4B944A2DE400

Windows Server 2003 x64 Edition SP2:
http://www.microsoft.com/downloads/de...=C04D2AFB-F9D0-4E42-9E1F-4B944A2DE400

Windows Server 2003 with SP1 for Itanium-based Systems:
http://www.microsoft.com/downloads/de...=AB590756-F11F-43C9-9DCC-A85A43077ACF

Windows Server 2003 with SP2 for Itanium-based Systems:
http://www.microsoft.com/downloads/de...=AB590756-F11F-43C9-9DCC-A85A43077ACF

Windows Vista (optionally with SP1):
http://www.microsoft.com/downloads/de...=18FDFF67-C723-42BD-AC5C-CAC7D8713B21

Windows Vista x64 Edition (optionally with SP1):
http://www.microsoft.com/downloads/de...=A976999D-264F-4E6A-9BD6-3AD9D214A4BD

Windows Server 2008 for 32-bit Systems:
http://www.microsoft.com/downloads/de...=25C17B07-1EFE-43D7-9B01-3DFDF1CE0BD7

Windows Server 2008 for x64-based Systems:
http://www.microsoft.com/downloads/de...=7B12018E-0CC1-4136-A68C-BE4E1633C8DF

Windows Server 2008 for Itanium-based Systems:
http://www.microsoft.com/downloads/de...=2BCF89EF-6446-406C-9C53-222E0F0BAF7A

Временное решение

Следующие инструкции позволят устранить или уменьшит риск удачной эксплуатации уязвимости, но могут повлиять на работу вашей сети.

1. Для всех ОС:

  • Отключить службы Сервер (Server)и Обозреватель сети (Computer Browser)
  • Блокировка доступа к портам 139/tcp и 445/tcp

2. Отфильтровать уязвимый RPC идентификатор.

  • Для Windows Vista и Windows 2008

В дополнение к блокированию портов, Windows Vista и Windows Server 2008 могут выборочно заблокировать RPC Universally Unique Identifiers (UUID). Для предотвращения уязвимости добавьте правило для блокирования всех RPC запросов с UUID, равным 4b324fc8-1670-01d3-1278-5a47bf6ee188. Пример:
netsh>rpc
netsh rpc>filter
netsh rpc filter>add rule layer=um actiontype=block
netsh rpc filter>add condition field=if_uuid matchtype=equal data=4b324fc8-1670-01d3-1278-5a47bf6ee188
netsh rpc filter>add filter
netsh rpc filter>quit
Filter Key – является случайным образом сгенерированный для вашей системы UUID. Для проверки работоспособности фильтра выполните команду:

netsh rpc filter show filter

Если добавление фильтра было успешным, в командной строке будут отображены следующие данные:

Listing all RPC Filters.
---------------------------------
filterKey: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
displayData.name: RPCFilter
displayData.description: RPC Filter
filterId: 0x12f79
layerKey: um
weight: Type: FWP_EMPTY Value: Empty
action.type: block
numFilterConditions: 1

где filterKey: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx равен вашему случайным образом сгенерированому UUID.

Для удаления фильтра после установки исправления следует выполнить следующую команду:

netsh rpc filter delete filter xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

  • Для МСЭ с возможностью фильтрации RPC трафика (например, ISA)

Создать правило блокировки RPC трафика по UUID 4b324fc8-1670-01d3-1278-5a47bf6ee188.

3. Изменить списки контроля доступа к уязвимому именному каналу

Microsoft разработала утилиту (http://blogs.technet.com/swi/attachment/3140932.ashx), которая может позволить изменить списки контроля доступа к именованному каналу в пределах сессии пользователя.

Пример использования:

Для службы Сервер:

C:\>chacl.exe \\.\pipe\srvsvc
opening up \\.\pipe\srvsvc
Got back 3 ACE entries
Found an entry for ANONYMOUS LOGON. Deleting it...
deleted that ACE

Для службы Обозреватель сети:

C:\>chacl.exe \\.\pipe\browser
opening up \\.\pipe\browser
Got back 3 ACE entries
Found an entry for ANONYMOUS LOGON. Deleting it...
deleted that ACE

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

Примечание: это решение действует только в приделах сессии пользователя и после перезагрузки системы вышеперечисленные действия нужно будет повторно выполнить.

Ссылки:

http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx
http://blogs.msdn.com/sdl/archive/2008/10/22/ms08-067.aspx
http://blogs.technet.com/swi/archive/2008/10/23/More-detail-about-MS08-067.aspx
http://blogs.technet.com/swi/attachment/3140932.ashx
http://technet.microsoft.com/ru-ru/library/cc751161(en-us).aspx
http://www.securitylab.ru/vulnerability/361770.php
http://www.securitylab.ru/poc/361823.php

Валерий Марчук
www.Securitylab.ru

comments powered by Disqus