Уязвимости Windows глазами SANS

Тут и там обычному пользователю (да и необычному тоже;)) очень часто приходится слышать о появлении новых уязвимостей Windows-систем. Разобраться в такой каше бывает совсем не просто ввиду слабой систематизации таких сообщений, которые чаще всего представлены сухой констатацией отрывков бюллетеней безопасности корпорации Microsoft. Наиболее авторитетным источником, представляющим различные уязвимости в классифицированной форме, является The SANS Institute ( сайт ). В отчете SANS уязвимости представлены в следующей форме:
1. Уязвимости Windows-систем.
2. Уязвимости UNIX-систем.
3. Уязвимости приложений (программ).
4. Уязвимости сетевых продуктов.
В объеме данной статьи подробно остановимся лишь на уязвимостях Windows-систем (с полным отчетом можно ознакомиться по адресу
сайт ).

The SANS Top 20 Internet Security Vulnerabilities — горячая двадцатка уязвимостей SANS

Для того, чтобы немного четче представлять, что откуда взялось и кому все это нужно, будет более чем уместно привести "повесть временных лет" горячих отчетов SANS. Четыре года назад институт SANS (SANS Institute) и Национальный центр защиты инфраструктуры США (National Infrastructure Protection Center — NIPC) совместно с FBI представили документ, который по сути своей являлся самым что ни на есть настоящим отчетом, в котором было озвучено 10 критических (на тот момент) уязвимостей, касающихся интернет-безопасности. Данный отчет за короткое время приобрел статус авторитетного руководства, которое активно использовалось различными конторами для устранения дыр ПО. Отчет содержал свежую информацию об уязвимых сервисах, компрометирующихся такой киберзаразой своего времени, как Blaster, Slammer и Code Red. В последующие годы отчет трансформировался в список уже из 20 критических уязвимостей, каковым и является на сегодняшний день. Ну что ж, вот, пожалуй, и начнем.

Уязвимости Windows-систем

Сервисы Windows. Семейство операционных систем платформы Windows характеризуется наличием самых разнообразных сервисов, многие из которых обеспечивают нормальную работу данной ОС как сетевой. К чему это мы? Наверное, к тому, что уязвимости сервисов Windows как таковых — довольно распространенное явление — можно даже сказать больше: дыры в сервисах как находили, так и находят и, несомненно, будут находить, благо сервисов у Windows предостаточно. Большинство сервисных уязвимостей эксплуатируются посредством переполнения буфера (уязвимости переполнения буфера — buffer overflow vulnerabilities), причем большинство атак подобного рода относят к категории удаленных. Удивляться этому факту особо не приходится, учитывая, что подобные сервисы — сетевые. Небольшое лирическое отступление: наверное, многим из читателей доводилось слышать, что чем больше открытых портов в системе, тем она более уязвима. И тут должен возникнуть закономерный вопрос: как же можно минимизировать количество открытых портов? Просто. Все дело в том, что порт, по сути, представляет собой какое-либо сетевое приложение, взаимодействующее с подобными себе посредством сетевого интерфейса (очень упрощенно). Чаще всего какому-либо открытому порту соответствует определенное приложение (в нашем случае служба). Из вышесказанного следует, что минимизировать количество открытых портов можно, минимизировав количество запущенных служб. В качестве горячего примера, иллюстрирующего вышесказанное, уместно привести следующие скриншоты:


Рис. 1. Открытые порты (cmd/netstat -an). Порт 123 открыт

При отключении службы времени Windows автоматически закрывается соответствующий ему порт:


Рис. 2. Порт 123 закрыт

Естественно, в данном случае главное — не переусердствовать, для чего очень полезно ознакомиться с описанием служб Windows. Вернемся к SANS. Согласно последнему отчету список уязвимых служб таков:

MSDTC and COM+ Service (MS05-051)*
Print Spooler Service (MS05-043)
Plug and Play Service (MS05-047, MS05-039)
Server Message Block Service (MS05-027, MS05-011)
Exchange SMTP Service (MS05-021)
Message Queuing Service (MS05-017)
License Logging Service (MS05-010)
WINS Service (MS04-045)
NNTP Service (MS04-036)
NetDDE Service (MS04-031)
Task Scheduler (MS04-022)
*Буквенно-цифровое обозначение уязвимости соответствует оригинальной классификации Microsoft.

Уязвимости большинства перечисленных служб реализуются посредством удаленного выполнения кода либо отказа в обслуживании. Не вдаваясь в технические подробности, отмечу лишь, что абсолютное большинство вышеперечисленных уязвимостей служб эксплуатируется по механизму переполнения буфера (buffer overflows). Это на сегодняшний день является самой распространенной уязвимостью в области безопасности ПО. Баг подобного рода широко используется в механизмах проникновения компьютерных червей — таких, например, как CodeRed, Slammer, Lovesan, Zotob и т.д.). Помимо червей, уязвимости на переполнение буфера активно используются и для организации атак типа Dos (Denial of Service — отказ в обслуживании) — в частности, DDos (Distributed — распределительный), поэтому сомневаться в силе и могуществе данного бага просто не имеет смысла;)).

Небольшой исторический экскурс: самая первая атака с применением уязвимости на переполнение буфера имела место в вирусе-черве Морриса в далеком 1988 году. По этому поводу уместно привести следующие факты: червь, созданный студентом Корнельского университета, всего через 5 часов спустя активации умудрился инфицировать около 6000 компьютеров — по сегодняшним меркам не очень много, но не будем забывать про год! Среди пострадавших — такие монстры, как Агентство национальной безопасности и стратегического авиационного командования США, лаборатории NASA (в частности, в вычислительном центре NASA в Хьюстоне червь попытался взять под контроль систему запуска кораблей многоразового использования Space Shuttle). Помимо прочего, червь успел насытить свои низменные гастрономические пристрастия исследовательским центром ВМС США, Калифорнийским НИИ, крупнейшими университетами страны, а также рядом военных баз, клиник и частных компаний. С тех пор число багов на переполнение буфера только увеличилось…

Как же осуществляется это самое переполнение буфера? Попробую внести ясность. Допустим, что некая процедура хранения данных использует буфер. Буфер находится в стеке (в определенной области памяти, которая используется во время выполнения программы). Представим в стеке несколько переменных и адрес возврата функции — число, показывающее, куда передать управление после выполнения текущей процедуры. Каким образом программа записывает данные в N-й байт буфера? К адресу начала буфера прибавляется число N. Полученный результат и есть адрес, по которому будут записаны данные. Если размер буфера равен 1024 байта, а мы попытаемся "втиснуть" в него больше, то некоторая часть данных попадет в другую область памяти. Может произойти так, что адрес возврата функции затрется, и как следствие программа выполнит не тот код, на который указывал предыдущий адрес возврата. Рассмотрим поподробней особенности уязвимостей некоторых служб из вышеупомянутого списка:

Print Spooler Service (MS05-043). Уязвимость позволяет удаленному пользователю вызвать отказ в обслуживании или выполнить произвольный код на целевой системе. Уязвимость существует из-за отсутствия проверки длины буфера в процессе spoolsv.exe. Удаленный пользователь может послать сервису специально сформированный пакет, вызвать переполнение буфера и выполнить произвольный код на целевой системе или вызвать отказ в обслуживании. Уязвимые системы: Microsoft Windows 2000, XP, 2003.

Plug and Play Service (MS05-047, MS05-039). Уязвимость стандарта Plug and Play делает возможным удаленный запуск программного кода и несанкционированное локальное расширение полномочий. Описание: несколько уязвимостей форматной строки обнаружены при вызове функции wsprintfW() в библиотеке UMPNPMGR.DLL службы Plug and Play. В двух случаях проверка подлинности входных данных производится посредством сравнения соответствия ключу реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnum. Хотя вся ветка реестра защищена от записи для непривилегированных пользователей, злоумышленник может с помощью специально сформированной строки, содержащей произвольное количество символов обратной черты, обойти проверку подлинности. В Windows 2000 без установленного исправления MS05-039 удаленный пользователь может без процедуры аутентификации получить доступ к интерфейсу UMPNPMGR посредством именованного канала конечных RPC-точек: PIPEbrowser, PIPEsrvsvc и PIPEwkssvc. Если исправление установлено, для успешной эксплуатации уязвимости злоумышленнику потребуется авторизация. Уязвимость в Microsoft Windows XP SP2 может быть эксплуатирована лишь локальным авторизованным пользователем. Уязвимые системы: Microsoft Windows 2000 SP4, Microsoft Windows XP SP1, SP2. Server Message Block Service (MS05-027, MS05-011) — выполнение произвольного кода в Microsoft Server Message Block. Уровень опасности: критический. Уязвимость позволяет удаленному пользователю выполнить произвольный код на целевой системе. Уязвимость существует из-за недостаточной проверки входных SMB-пакетов. Удаленный пользователь может с помощью специально сформированного SMB-пакета выполнить произвольный код на целевой системе. Уязвимые ОС: Microsoft Windows 2000, XP, 2003.

Exchange SMTP Service (MS05-021) — уязвимость Exchange Server может привести к запуску произвольного кода. Уязвимость существует в сервисе Internet Mail почтового сервера Exchange Server 5.5 и Exchange 2000 Server и может позволить нападающему установить соединение с портом SMTP этого сервера и отправить специальным образом расширенный вербальный запрос, который приведет к выделению под него большого объема памяти. Это может привести к падению сервиса Internet Mail или к отказу пакета в работе по причине недостаточной памяти. Кроме того, в Exchange 2000 Server уязвимость позволяет атакующему при условии создания тщательно подобранной последовательности данных вызвать переполнение буфера, которое может привести к возможности запуска вредоносных программ в контексте зоны безопасности сервиса SMTP. Для предотвращения возможности проведения атаки можно воспользоваться специальными программами, фильтрующими SMTP-трафик перед отправкой его на Exchange Server. Как сообщает Microsoft, система Exchange Server 2003 свободна от данной уязвимости. Уязвимости подвержены компьютеры, на которых запущены Microsoft Exchange Server 5.5, Service Pack 4 или Microsoft Exchange 2000 Server, Service Pack 3.

WINS Service (MS04-045) (Microsoft Windows Internet Naming Service). Проблема связана с некорректной проверкой определенных параметров запросов, а результатом может стать выполнение произвольного вредоносного кода на удаленном ПК. Дыра есть в ОС Windows NT, 2000, Server 2003 (в том числе 64-битной модификации).

NNTP Service (MS04-036). Удаленный пользователь может представить специально обработанное чрезмерно длинное сообщение, чтобы вызвать переполнение буфера в NNTP (Network News Transfer Protocol) компоненте. Успешная эксплуатация позволяет выполнить произвольный код на целевой системе, в которой используется NNTP. Уязвимость обнаружена в серверных версиях Windows NT/2000/2003.

NetDDE Service (MS04-031). Переполнение буфера обнаружено в NetDDE-службе. Уязвимость позволяет удаленному атакующему выполнить произвольный код на уязвимой системе с SYSTEM-привилегиями. Служба NetDDE отключена по умолчанию. Опасность — средняя. Уязвимые системы: Microsoft Windows NT Server 4.0 Service Pack 6a, Microsoft Windows NT Server 4.0 Terminal Server Edition Service Pack 6, Microsoft Windows 2000 Service Pack 3 и Microsoft Windows 2000 Service Pack 4, Microsoft Windows XP и Microsoft Windows XP Service Pack 1, Microsoft Windows XP 64-Bit Edition Service Pack 1, Microsoft Windows XP 64-Bit Edition Version 2003, Microsoft Windows Server 2003, Microsoft Windows Server 2003 64-Bit Edition.

Подводя итог. Совершенно очевидно, что избежать эксплуатации уязвимостей можно: достаточно лишь установить соответствующе заплатки безопасности с официального сайта Microsoft. Совершенно очевидно и другое: в информационной безопасности есть такое определение, как "окно опасности" (извините за некоторую тавтологию;)). Термин подразумевает под собой время с момента обнаружения конкретной уязвимости и до момента выхода и установки в уязвимую систему соответствующего патча. Так вот, очень часто это самое окно оказывается недопустимо большим, и тогда возникает закономерный риторический вопрос: а имеет ли смысл устанавливать заплатки вообще? Поразмыслив таким образом некоторое время, приходишь к некому рационалистическому самокомпромиссу: лучше поздно, чем никогда. Яркое подтверждение тому — червь MS Blast (эксплуатирует уязвимость в службе LSASS), который и поныне можно подцепить без второго сервис-пака.

IE — генератор зла?!

Internet Explorer. Оценив количество обновлений народного браузера в контексте интернет-безопасности, иначе чем генератором зла IE назвать достаточно трудно. Посудите сами:

Cumulative Security Update for Internet Explorer (MS05-052)
Cumulative Security Update for Internet Explorer (MS05-038)
JView Profile Remote Code Execution (MS05-037)
Cumulative Security Update for Internet Explorer (MS05-025)
Cumulative Security Update for Internet Explorer (MS05-020)
Cumulative Security Update for Internet Explorer (MS05-014)
Windows Shell Remote Code Execution (MS05-008)
Cumulative Security Update for Internet Explorer (MS04-040)
Cumulative Security Update for Internet Explorer (MS04-038)
Cumulative Security Update for Internet Explorer (MS04-025)

Однако при всех "наездах" на IE, выражающихся в многочисленных отчетах об обнаруженных уязвимостях, необходимо признать, что корпорация Microsoft обеспечивает-таки какую-никакую техническую поддержку продукта, регулярно выпуская соответствующие патчи. Очередной раз критикуя браузер, который, тем не менее, по сей день остается одним из самых популярных продуктов в своем роде, необходимо помнить, что немалое количество обнаруженных уязвимостей IE — это не изъян самого продукта, а результат пристального внимания к IE со стороны киберсообщества. Если ваш IE должным образом не пропатчен, то для того, чтобы подцепить какую-либо заразу, вам вовсе не обязательно что-либо скачивать или запускать — для заражения нужно просто посетить страницу со злонамеренным кодом. Есть ли выход, и как снизить риск поражения без установки соответствующих заплаток? Абсолютное большинство уязвимостей данного рода базируется на обработке компонентов ActiveX и активных сценариев. Для снижения риска рекомендуется поставить высокий уровень безопасности (Сервис/Свойства Обозревателя/Безопасность) IE. Оптимальным вариантом будет ручная настройка зон безопасности (кнопка Другой), что поможет избежать некорректного отображения содержания некоторых страниц.

Библиотеки Windows

Для нормальной работы многих программ необходимы определенные библиотеки (DLL — Dynamic Link Library), представленные файлами с расширением .dll. На сегодняшний день уязвимости библиотек Windows представляют собой достаточно серьезную угрозу, т.к. с помощью уязвимостей подобного рода возможно осуществление достаточно экзотических атак. В качестве примера можно привести поражение системы при запуске файла формата JPEG; уязвимости библиотек более чем активно используются вредоносным ПО для установки себя в систему жертвы (так действует троян Trojan Phel.A, который для заражения системы использует баг в HTML Help Library). По классификации SANS уязвимости библиотек Windows сгруппированы следующим образом:

Windows Graphics Rendering Engine Remote Code Execution (MS05-053)
Microsoft DirectShow Remote Code Execution (MS05-050)
Microsoft Color Management Module Remote Code Execution (MS05-036)
HTML Help Remote Code Execution (MS05-026, MS05-001, MS04-023)
Web View Remote Code Execution (MS05-024)
Windows Shell Remote Command Execution (MS05-049, MS05-016, MS04-037, MS04-024)
Windows Hyperlink Object Library Remote Code Execution (MS05-015)
PNG Image Processing Remote Code Execution (MS05-009)
Cursor and Icon Processing Remote Code Execution (MS05-002)
Windows Compressed Folder Remote Code Execution (MS04-034)
JPEG Processing Remote Code Execution (MS04-028)

Подробное описание вышеперечисленных уязвимостей можно найти по адресу: сайт
Последним пунктом раздела уязвимостей Windows-систем являются Microsoft Office and Outlook Express.

Им соответствуют следующие записи отчета SANS:
Cumulative Security Update for Outlook Express (MS05-030)
Microsoft OLE and COM Remote Code Execution (MS05-012)
Microsoft Office XP Remote Code Execution (MS05-005)

Технические подробности о данных уязвимостях можно найти на сайте SANS, адрес которого был приведен выше. Наибольший же интерес здесь, наверное, представляет баг в компоненте Acces Office (MS05-005), который и по сей день активно эксплуатируется вредоносным ПО типа троянов.
сайт
сайт

О.М. Бойцев, boyscout_zone@yahoo.com


Компьютерная газета. Статья была опубликована в номере 40 за 2006 год в рубрике безопасность

©1997-2024 Компьютерная газета