Вчера 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
|